Make "end" field in feature specs required again.
authorDoug Evans <dje@google.com>
Thu, 6 Oct 2016 11:12:33 +0000 (12:12 +0100)
committerPedro Alves <palves@redhat.com>
Thu, 6 Oct 2016 11:12:33 +0000 (12:12 +0100)
Newer gdbservers may be talking to older gdbs,
and older gdbs will flag a missing "end" as an error.
So just make "end" required again, and for compatibility
change the default field type to "bool".

gdb/ChangeLog:
2016-10-06  Doug Evans  <dje@google.com>

* features/aarch64-core.xml (cpsr_flags): Elide "type" and specify
"end" in all fields.
* features/aarch64.c: Regenerate.
* features/i386/32bit-mpx.xml (_bndcfgu): Specify type of "preserved"
and "enabled" fields. Correct size of "enabled" field.
* features/i386/64bit-mpx.xml (_bndcfgu): Specify type of "preserved"
and "enabled" fields.
* features/i386/i386-avx-mpx-linux.c: Regenerate.
* features/i386/i386-avx-mpx.c: Regenerate.
* features/i386/i386-avx512-linux.c: Regenerate.
* features/i386/i386-avx512.c: Regenerate.
* features/i386/i386-mpx-linux.c: Regenerate.
* features/i386/i386-mpx.c: Regenerate.
* features/arc-arcompact.c: Regenerate.
* features/arc-v2.c: Regenerate.
* xml-tdesc.c (tdesc_start_field): Require "end" spec.  Single bit
fields default to "bool" type.

Revert 2016-03-15  Doug Evans  <dje@google.com>
* features/i386/32bit-core.xml (i386_eflags): Remove "end" spec.
* features/i386/32bit-sse.xml (i386_eflags): Ditto.
* features/i386/64bit-core.xml (i386_eflags): Ditto.
* features/i386/64bit-sse.xml (i386_eflags): Ditto.
* features/i386/x32-core.xml (i386_eflags): Ditto.

gdb/doc/ChangeLog:
2016-10-06  Doug Evans  <dje@google.com>

* gdb.texinfo (Target Description Format): Update docs on "end"
field spec and field default type.

gdb/testsuite/ChangeLog:
2016-10-06  Doug Evans  <dje@google.com>

* gdb.xml/extra-regs.xml: Update, end field now required, default type
for single bitfields is bool.
* gdb.xml/tdesc-regs.exp: Ditto.

24 files changed:
gdb/ChangeLog
gdb/doc/ChangeLog
gdb/doc/gdb.texinfo
gdb/features/aarch64-core.xml
gdb/features/aarch64.c
gdb/features/arc-arcompact.c
gdb/features/arc-v2.c
gdb/features/i386/32bit-core.xml
gdb/features/i386/32bit-mpx.xml
gdb/features/i386/32bit-sse.xml
gdb/features/i386/64bit-core.xml
gdb/features/i386/64bit-mpx.xml
gdb/features/i386/64bit-sse.xml
gdb/features/i386/i386-avx-mpx-linux.c
gdb/features/i386/i386-avx-mpx.c
gdb/features/i386/i386-avx512-linux.c
gdb/features/i386/i386-avx512.c
gdb/features/i386/i386-mpx-linux.c
gdb/features/i386/i386-mpx.c
gdb/features/i386/x32-core.xml
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.xml/extra-regs.xml
gdb/testsuite/gdb.xml/tdesc-regs.exp
gdb/xml-tdesc.c

index 225bf75..084ab13 100644 (file)
@@ -1,3 +1,30 @@
+2016-10-06  Doug Evans  <dje@google.com>
+
+       * features/aarch64-core.xml (cpsr_flags): Elide "type" and specify
+       "end" in all fields.
+       * features/aarch64.c: Regenerate.
+       * features/i386/32bit-mpx.xml (_bndcfgu): Specify type of "preserved"
+       and "enabled" fields. Correct size of "enabled" field.
+       * features/i386/64bit-mpx.xml (_bndcfgu): Specify type of "preserved"
+       and "enabled" fields.
+       * features/i386/i386-avx-mpx-linux.c: Regenerate.
+       * features/i386/i386-avx-mpx.c: Regenerate.
+       * features/i386/i386-avx512-linux.c: Regenerate.
+       * features/i386/i386-avx512.c: Regenerate.
+       * features/i386/i386-mpx-linux.c: Regenerate.
+       * features/i386/i386-mpx.c: Regenerate.
+       * features/arc-arcompact.c: Regenerate.
+       * features/arc-v2.c: Regenerate.
+       * xml-tdesc.c (tdesc_start_field): Require "end" spec.  Single bit
+       fields default to "bool" type.
+
+       Revert 2016-03-15  Doug Evans  <dje@google.com>
+       * features/i386/32bit-core.xml (i386_eflags): Remove "end" spec.
+       * features/i386/32bit-sse.xml (i386_eflags): Ditto.
+       * features/i386/64bit-core.xml (i386_eflags): Ditto.
+       * features/i386/64bit-sse.xml (i386_eflags): Ditto.
+       * features/i386/x32-core.xml (i386_eflags): Ditto.
+
 2016-10-05  Tom Tromey  <tom@tromey.com>
 
        PR breakpoints/20653:
index 85b55e2..c7f6248 100644 (file)
@@ -1,3 +1,8 @@
+2016-08-15  Doug Evans  <dje@google.com>
+
+       * gdb.texinfo (Target Description Format): Update docs on "end"
+       field spec and field default type.
+
 2016-10-03  Antoine Tremblay  <antoine.tremblay@ericsson.com>
 2016-10-03  Simon Marchi  <simon.marchi@ericsson.com>
 
index 344c186..cfa00ce 100644 (file)
@@ -40722,16 +40722,13 @@ Bitfield values may be named with the empty string, @samp{""},
 in which case the field is ``filler'' and its value is not printed.
 Not all bits need to be specified, so ``filler'' fields are optional.
 
-The @var{start} value is required, and @var{end} and @var{type}
-are optional.
+The @var{start} and @var{end} values are required, and @var{type}
+is optional.
 The field's @var{start} must be less than or equal to its @var{end},
 and zero represents the least significant bit.
-The default value of @var{end} is @var{start}, a single bit field.
 
-The default value of @var{type} depends on whether the
-@var{end} was specified.  If @var{end} is specified then the default
-value of @var{type} is an unsigned integer.  If @var{end} is unspecified
-then the default value of @var{type} is @code{bool}.
+The default value of @var{type} is @code{bool} for single bit fields,
+and an unsigned integer otherwise.
 
 Which to choose?  Structures or flags?
 
index 8f96296..7ff064d 100644 (file)
   <reg name="pc" bitsize="64" type="code_ptr"/>
 
   <flags id="cpsr_flags" size="4">
-    <field name="SP" start="0" type="bool"/>
+    <field name="SP" start="0" end="0"/>
     <field name="" start="1" end="1"/>
     <field name="EL" start="2" end="3"/>
-    <field name="nRW" start="4" type="bool"/>
+    <field name="nRW" start="4" end="4"/>
     <field name="" start="5" end="5"/>
-    <field name="F" start="6" type="bool"/>
-    <field name="I" start="7" type="bool"/>
-    <field name="A" start="8" type="bool"/>
-    <field name="D" start="9" type="bool"/>
+    <field name="F" start="6" end="6"/>
+    <field name="I" start="7" end="7"/>
+    <field name="A" start="8" end="8"/>
+    <field name="D" start="9" end="9"/>
 
-    <field name="IL" start="20" type="bool"/>
-    <field name="SS" start="21" type="bool"/>
+    <field name="IL" start="20" end="20"/>
+    <field name="SS" start="21" end="21"/>
 
-    <field name="V" start="28" type="bool"/>
-    <field name="C" start="29" type="bool"/>
-    <field name="Z" start="30" type="bool"/>
-    <field name="N" start="31" type="bool"/>
+    <field name="V" start="28" end="28"/>
+    <field name="C" start="29" end="29"/>
+    <field name="Z" start="30" end="30"/>
+    <field name="N" start="31" end="31"/>
   </flags>
   <reg name="cpsr" bitsize="32" type="cpsr_flags"/>
 
index cec6956..e9eaed8 100644 (file)
@@ -19,10 +19,10 @@ initialize_tdesc_aarch64 (void)
   feature = tdesc_create_feature (result, "org.gnu.gdb.aarch64.core");
   type = tdesc_create_flags (feature, "cpsr_flags", 4);
   tdesc_add_flag (type, 0, "SP");
-  tdesc_add_bitfield (type, "", 1, 1);
+  tdesc_add_flag (type, 1, "");
   tdesc_add_bitfield (type, "EL", 2, 3);
   tdesc_add_flag (type, 4, "nRW");
-  tdesc_add_bitfield (type, "", 5, 5);
+  tdesc_add_flag (type, 5, "");
   tdesc_add_flag (type, 6, "F");
   tdesc_add_flag (type, 7, "I");
   tdesc_add_flag (type, 8, "A");
index d1fa4fe..a527cc2 100644 (file)
@@ -54,19 +54,19 @@ initialize_tdesc_arc_arcompact (void)
 
   feature = tdesc_create_feature (result, "org.gnu.gdb.arc.aux-minimal");
   type = tdesc_create_flags (feature, "status32_type", 4);
-  tdesc_add_bitfield (type, "H", 0, 0);
+  tdesc_add_flag (type, 0, "H");
   tdesc_add_bitfield (type, "E", 1, 2);
   tdesc_add_bitfield (type, "A", 3, 4);
-  tdesc_add_bitfield (type, "AE", 5, 5);
-  tdesc_add_bitfield (type, "DE", 6, 6);
-  tdesc_add_bitfield (type, "U", 7, 7);
-  tdesc_add_bitfield (type, "V", 8, 8);
-  tdesc_add_bitfield (type, "C", 9, 9);
-  tdesc_add_bitfield (type, "N", 10, 10);
-  tdesc_add_bitfield (type, "Z", 11, 11);
-  tdesc_add_bitfield (type, "L", 12, 12);
-  tdesc_add_bitfield (type, "R", 13, 13);
-  tdesc_add_bitfield (type, "SE", 14, 14);
+  tdesc_add_flag (type, 5, "AE");
+  tdesc_add_flag (type, 6, "DE");
+  tdesc_add_flag (type, 7, "U");
+  tdesc_add_flag (type, 8, "V");
+  tdesc_add_flag (type, 9, "C");
+  tdesc_add_flag (type, 10, "N");
+  tdesc_add_flag (type, 11, "Z");
+  tdesc_add_flag (type, 12, "L");
+  tdesc_add_flag (type, 13, "R");
+  tdesc_add_flag (type, 14, "SE");
 
   tdesc_create_reg (feature, "pc", 34, 1, NULL, 32, "code_ptr");
   tdesc_create_reg (feature, "status32", 35, 1, NULL, 32, "status32_type");
index c963410..b2bdfb5 100644 (file)
@@ -54,23 +54,23 @@ initialize_tdesc_arc_v2 (void)
 
   feature = tdesc_create_feature (result, "org.gnu.gdb.arc.aux-minimal");
   type = tdesc_create_flags (feature, "status32_type", 4);
-  tdesc_add_bitfield (type, "H", 0, 0);
+  tdesc_add_flag (type, 0, "H");
   tdesc_add_bitfield (type, "E", 1, 4);
-  tdesc_add_bitfield (type, "AE", 5, 5);
-  tdesc_add_bitfield (type, "DE", 6, 6);
-  tdesc_add_bitfield (type, "U", 7, 7);
-  tdesc_add_bitfield (type, "V", 8, 8);
-  tdesc_add_bitfield (type, "C", 9, 9);
-  tdesc_add_bitfield (type, "N", 10, 10);
-  tdesc_add_bitfield (type, "Z", 11, 11);
-  tdesc_add_bitfield (type, "L", 12, 12);
-  tdesc_add_bitfield (type, "DZ", 13, 13);
-  tdesc_add_bitfield (type, "SC", 14, 14);
-  tdesc_add_bitfield (type, "ES", 15, 15);
+  tdesc_add_flag (type, 5, "AE");
+  tdesc_add_flag (type, 6, "DE");
+  tdesc_add_flag (type, 7, "U");
+  tdesc_add_flag (type, 8, "V");
+  tdesc_add_flag (type, 9, "C");
+  tdesc_add_flag (type, 10, "N");
+  tdesc_add_flag (type, 11, "Z");
+  tdesc_add_flag (type, 12, "L");
+  tdesc_add_flag (type, 13, "DZ");
+  tdesc_add_flag (type, 14, "SC");
+  tdesc_add_flag (type, 15, "ES");
   tdesc_add_bitfield (type, "RB", 16, 18);
-  tdesc_add_bitfield (type, "AD", 19, 19);
-  tdesc_add_bitfield (type, "US", 20, 20);
-  tdesc_add_bitfield (type, "IE", 31, 31);
+  tdesc_add_flag (type, 19, "AD");
+  tdesc_add_flag (type, 20, "US");
+  tdesc_add_flag (type, 31, "IE");
 
   tdesc_create_reg (feature, "pc", 34, 1, NULL, 32, "code_ptr");
   tdesc_create_reg (feature, "status32", 35, 1, NULL, 32, "status32_type");
index b00d913..a27863f 100644 (file)
@@ -8,23 +8,23 @@
 <!DOCTYPE feature SYSTEM "gdb-target.dtd">
 <feature name="org.gnu.gdb.i386.core">
   <flags id="i386_eflags" size="4">
-    <field name="CF" start="0"/>
-    <field name="" start="1"/>
-    <field name="PF" start="2"/>
-    <field name="AF" start="4"/>
-    <field name="ZF" start="6"/>
-    <field name="SF" start="7"/>
-    <field name="TF" start="8"/>
-    <field name="IF" start="9"/>
-    <field name="DF" start="10"/>
-    <field name="OF" start="11"/>
-    <field name="NT" start="14"/>
-    <field name="RF" start="16"/>
-    <field name="VM" start="17"/>
-    <field name="AC" start="18"/>
-    <field name="VIF" start="19"/>
-    <field name="VIP" start="20"/>
-    <field name="ID" start="21"/>
+    <field name="CF" start="0" end="0"/>
+    <field name="" start="1" end="1"/>
+    <field name="PF" start="2" end="2"/>
+    <field name="AF" start="4" end="4"/>
+    <field name="ZF" start="6" end="6"/>
+    <field name="SF" start="7" end="7"/>
+    <field name="TF" start="8" end="8"/>
+    <field name="IF" start="9" end="9"/>
+    <field name="DF" start="10" end="10"/>
+    <field name="OF" start="11" end="11"/>
+    <field name="NT" start="14" end="14"/>
+    <field name="RF" start="16" end="16"/>
+    <field name="VM" start="17" end="17"/>
+    <field name="AC" start="18" end="18"/>
+    <field name="VIF" start="19" end="19"/>
+    <field name="VIP" start="20" end="20"/>
+    <field name="ID" start="21" end="21"/>
   </flags>
 
   <reg name="eax" bitsize="32" type="int32"/>
index b1c0615..8d319cf 100644 (file)
   <struct id="_bndcfgu" size="8">
     <field name="base" start="12" end="31" />
     <field name="reserved" start="2" end="11"/>
-    <field name="preserved" start="1" end="1"/>
-    <field name="enabled" start="0" end="1"/>
+    <!-- Explicitly set the type here, otherwise it defaults to bool.
+         Perhaps this should be uint32, but the container type has size 8.  -->
+    <field name="preserved" start="1" end="1" type="uint64"/>
+    <field name="enabled" start="0" end="0" type="uint64"/>
   </struct>
 
    <union id="cfgu">
index 4448a7e..5a44d1e 100644 (file)
     <field name="uint128" type="uint128"/>
   </union>
   <flags id="i386_mxcsr" size="4">
-    <field name="IE" start="0"/>
-    <field name="DE" start="1"/>
-    <field name="ZE" start="2"/>
-    <field name="OE" start="3"/>
-    <field name="UE" start="4"/>
-    <field name="PE" start="5"/>
-    <field name="DAZ" start="6"/>
-    <field name="IM" start="7"/>
-    <field name="DM" start="8"/>
-    <field name="ZM" start="9"/>
-    <field name="OM" start="10"/>
-    <field name="UM" start="11"/>
-    <field name="PM" start="12"/>
-    <field name="FZ" start="15"/>
+    <field name="IE" start="0" end="0"/>
+    <field name="DE" start="1" end="1"/>
+    <field name="ZE" start="2" end="2"/>
+    <field name="OE" start="3" end="3"/>
+    <field name="UE" start="4" end="4"/>
+    <field name="PE" start="5" end="5"/>
+    <field name="DAZ" start="6" end="6"/>
+    <field name="IM" start="7" end="7"/>
+    <field name="DM" start="8" end="8"/>
+    <field name="ZM" start="9" end="9"/>
+    <field name="OM" start="10" end="10"/>
+    <field name="UM" start="11" end="11"/>
+    <field name="PM" start="12" end="12"/>
+    <field name="FZ" start="15" end="15"/>
   </flags>
 
   <reg name="xmm0" bitsize="128" type="vec128" regnum="32"/>
index 6e847c1..92f4e87 100644 (file)
@@ -8,23 +8,23 @@
 <!DOCTYPE feature SYSTEM "gdb-target.dtd">
 <feature name="org.gnu.gdb.i386.core">
   <flags id="i386_eflags" size="4">
-    <field name="CF" start="0"/>
-    <field name="" start="1"/>
-    <field name="PF" start="2"/>
-    <field name="AF" start="4"/>
-    <field name="ZF" start="6"/>
-    <field name="SF" start="7"/>
-    <field name="TF" start="8"/>
-    <field name="IF" start="9"/>
-    <field name="DF" start="10"/>
-    <field name="OF" start="11"/>
-    <field name="NT" start="14"/>
-    <field name="RF" start="16"/>
-    <field name="VM" start="17"/>
-    <field name="AC" start="18"/>
-    <field name="VIF" start="19"/>
-    <field name="VIP" start="20"/>
-    <field name="ID" start="21"/>
+    <field name="CF" start="0" end="0"/>
+    <field name="" start="1" end="1"/>
+    <field name="PF" start="2" end="2"/>
+    <field name="AF" start="4" end="4"/>
+    <field name="ZF" start="6" end="6"/>
+    <field name="SF" start="7" end="7"/>
+    <field name="TF" start="8" end="8"/>
+    <field name="IF" start="9" end="9"/>
+    <field name="DF" start="10" end="10"/>
+    <field name="OF" start="11" end="11"/>
+    <field name="NT" start="14" end="14"/>
+    <field name="RF" start="16" end="16"/>
+    <field name="VM" start="17" end="17"/>
+    <field name="AC" start="18" end="18"/>
+    <field name="VIF" start="19" end="19"/>
+    <field name="VIP" start="20" end="20"/>
+    <field name="ID" start="21" end="21"/>
   </flags>
 
   <reg name="rax" bitsize="64" type="int64"/>
index 279b537..877cc0f 100644 (file)
@@ -25,8 +25,9 @@
   <struct id="_bndcfgu" size="8">
     <field name="base" start="12" end="63"/>
     <field name="reserved" start="2" end="11"/>
-    <field name="preserved" start="1" end="1"/>
-    <field name="enabled" start="0" end="0"/>
+    <!-- Explicitly set the type here, otherwise it defaults to bool.  -->
+    <field name="preserved" start="1" end="1" type="uint64"/>
+    <field name="enabled" start="0" end="0" type="uint64"/>
   </struct>
 
    <union id="cfgu">
index dd6a850..2a5271e 100644 (file)
     <field name="uint128" type="uint128"/>
   </union>
   <flags id="i386_mxcsr" size="4">
-    <field name="IE" start="0"/>
-    <field name="DE" start="1"/>
-    <field name="ZE" start="2"/>
-    <field name="OE" start="3"/>
-    <field name="UE" start="4"/>
-    <field name="PE" start="5"/>
-    <field name="DAZ" start="6"/>
-    <field name="IM" start="7"/>
-    <field name="DM" start="8"/>
-    <field name="ZM" start="9"/>
-    <field name="OM" start="10"/>
-    <field name="UM" start="11"/>
-    <field name="PM" start="12"/>
-    <field name="FZ" start="15"/>
+    <field name="IE" start="0" end="0"/>
+    <field name="DE" start="1" end="1"/>
+    <field name="ZE" start="2" end="2"/>
+    <field name="OE" start="3" end="3"/>
+    <field name="UE" start="4" end="4"/>
+    <field name="PE" start="5" end="5"/>
+    <field name="DAZ" start="6" end="6"/>
+    <field name="IM" start="7" end="7"/>
+    <field name="DM" start="8" end="8"/>
+    <field name="ZM" start="9" end="9"/>
+    <field name="OM" start="10" end="10"/>
+    <field name="UM" start="11" end="11"/>
+    <field name="PM" start="12" end="12"/>
+    <field name="FZ" start="15" end="15"/>
   </flags>
 
   <reg name="xmm0" bitsize="128" type="vec128" regnum="40"/>
index 941f2b3..4b27bfc 100644 (file)
@@ -168,7 +168,7 @@ initialize_tdesc_i386_avx_mpx_linux (void)
   tdesc_add_bitfield (type, "base", 12, 31);
   tdesc_add_bitfield (type, "reserved", 2, 11);
   tdesc_add_bitfield (type, "preserved", 1, 1);
-  tdesc_add_bitfield (type, "enabled", 0, 1);
+  tdesc_add_bitfield (type, "enabled", 0, 0);
 
   type = tdesc_create_union (feature, "cfgu");
   field_type = tdesc_named_type (feature, "data_ptr");
index d822aac..b27b40a 100644 (file)
@@ -163,7 +163,7 @@ initialize_tdesc_i386_avx_mpx (void)
   tdesc_add_bitfield (type, "base", 12, 31);
   tdesc_add_bitfield (type, "reserved", 2, 11);
   tdesc_add_bitfield (type, "preserved", 1, 1);
-  tdesc_add_bitfield (type, "enabled", 0, 1);
+  tdesc_add_bitfield (type, "enabled", 0, 0);
 
   type = tdesc_create_union (feature, "cfgu");
   field_type = tdesc_named_type (feature, "data_ptr");
index 47a3319..0d3ab22 100644 (file)
@@ -168,7 +168,7 @@ initialize_tdesc_i386_avx512_linux (void)
   tdesc_add_bitfield (type, "base", 12, 31);
   tdesc_add_bitfield (type, "reserved", 2, 11);
   tdesc_add_bitfield (type, "preserved", 1, 1);
-  tdesc_add_bitfield (type, "enabled", 0, 1);
+  tdesc_add_bitfield (type, "enabled", 0, 0);
 
   type = tdesc_create_union (feature, "cfgu");
   field_type = tdesc_named_type (feature, "data_ptr");
index 6e8cb55..1cb68a1 100644 (file)
@@ -163,7 +163,7 @@ initialize_tdesc_i386_avx512 (void)
   tdesc_add_bitfield (type, "base", 12, 31);
   tdesc_add_bitfield (type, "reserved", 2, 11);
   tdesc_add_bitfield (type, "preserved", 1, 1);
-  tdesc_add_bitfield (type, "enabled", 0, 1);
+  tdesc_add_bitfield (type, "enabled", 0, 0);
 
   type = tdesc_create_union (feature, "cfgu");
   field_type = tdesc_named_type (feature, "data_ptr");
index 298b7ff..43ea192 100644 (file)
@@ -158,7 +158,7 @@ initialize_tdesc_i386_mpx_linux (void)
   tdesc_add_bitfield (type, "base", 12, 31);
   tdesc_add_bitfield (type, "reserved", 2, 11);
   tdesc_add_bitfield (type, "preserved", 1, 1);
-  tdesc_add_bitfield (type, "enabled", 0, 1);
+  tdesc_add_bitfield (type, "enabled", 0, 0);
 
   type = tdesc_create_union (feature, "cfgu");
   field_type = tdesc_named_type (feature, "data_ptr");
index c19af55..e832d2e 100644 (file)
@@ -153,7 +153,7 @@ initialize_tdesc_i386_mpx (void)
   tdesc_add_bitfield (type, "base", 12, 31);
   tdesc_add_bitfield (type, "reserved", 2, 11);
   tdesc_add_bitfield (type, "preserved", 1, 1);
-  tdesc_add_bitfield (type, "enabled", 0, 1);
+  tdesc_add_bitfield (type, "enabled", 0, 0);
 
   type = tdesc_create_union (feature, "cfgu");
   field_type = tdesc_named_type (feature, "data_ptr");
index c03cdea..ab51ffc 100644 (file)
@@ -8,23 +8,23 @@
 <!DOCTYPE feature SYSTEM "gdb-target.dtd">
 <feature name="org.gnu.gdb.i386.core">
   <flags id="i386_eflags" size="4">
-    <field name="CF" start="0"/>
-    <field name="" start="1"/>
-    <field name="PF" start="2"/>
-    <field name="AF" start="4"/>
-    <field name="ZF" start="6"/>
-    <field name="SF" start="7"/>
-    <field name="TF" start="8"/>
-    <field name="IF" start="9"/>
-    <field name="DF" start="10"/>
-    <field name="OF" start="11"/>
-    <field name="NT" start="14"/>
-    <field name="RF" start="16"/>
-    <field name="VM" start="17"/>
-    <field name="AC" start="18"/>
-    <field name="VIF" start="19"/>
-    <field name="VIP" start="20"/>
-    <field name="ID" start="21"/>
+    <field name="CF" start="0" end="0"/>
+    <field name="" start="1" end="1"/>
+    <field name="PF" start="2" end="2"/>
+    <field name="AF" start="4" end="4"/>
+    <field name="ZF" start="6" end="6"/>
+    <field name="SF" start="7" end="7"/>
+    <field name="TF" start="8" end="8"/>
+    <field name="IF" start="9" end="9"/>
+    <field name="DF" start="10" end="10"/>
+    <field name="OF" start="11" end="11"/>
+    <field name="NT" start="14" end="14"/>
+    <field name="RF" start="16" end="16"/>
+    <field name="VM" start="17" end="17"/>
+    <field name="AC" start="18" end="18"/>
+    <field name="VIF" start="19" end="19"/>
+    <field name="VIP" start="20" end="20"/>
+    <field name="ID" start="21" end="21"/>
   </flags>
 
   <reg name="rax" bitsize="64" type="int64"/>
index cbea3b2..c38b977 100644 (file)
@@ -1,3 +1,9 @@
+2016-08-15  Doug Evans  <dje@google.com>
+
+       * gdb.xml/extra-regs.xml: Update, end field now required, default type
+       for single bitfields is bool.
+       * gdb.xml/tdesc-regs.exp: Ditto.
+
 2016-10-05  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
        * gdb.arch/i386-signal.exp (backtrace 10): Fix #2 typo.
index cbbaf76..997d659 100644 (file)
 
     <struct id="struct2" size="8">
       <field name="f1" start="0" end="34"/>
-      <field name="f2" start="63" end="63"/>
+      <field name="f2" start="63" end="63" type="uint64"/>
     </struct>
 
     <flags id="flags" size="4">
       <field name="X" start="0" end="0"/>
-      <field name="Y" start="2" end="2"/>
+      <field name="Y" start="2" end="2" type="uint32"/>
     </flags>
 
     <enum id="Z_values" size="4">
     </enum>
 
     <flags id="mixed_flags" size="4">
-      <!-- Elided end and type. -->
-      <field name="A" start="0"/>
-      <!-- Elided end, unsigned int. -->
-      <field name="B" start="1" type="uint32"/>
-      <!-- Elided end, bool. -->
-      <field name="C" start="2" type="bool"/>
-      <!-- Elided type, single bitfield. -->
-      <field name="D" start="3" end="3"/>
+      <!-- Elided type. -->
+      <field name="A" start="0" end="0"/>
+      <!-- Elided type, multiple bits. -->
+      <field name="B" start="1" end="3"/>
+      <!-- Bool. -->
+      <field name="C" start="4" end="4" type="bool"/>
+      <!-- Unsigned int. -->
+      <field name="D" start="5" end="5" type="uint32"/>
       <!-- Anonymous field. -->
-      <field name="" start="4" end="5"/>
-      <!-- Multi-bit bitfield, elided type. -->
-      <field name="E" start="6" end="7"/>
+      <field name="" start="6" end="7"/>
       <!-- Enum bitfield. -->
       <field name="Z" start="8" end="9" type="Z_values"/>
     </flags>
index 311917f..8e0e1c9 100644 (file)
@@ -174,9 +174,9 @@ gdb_test "ptype \$structreg.v4" "type = int8_t __attribute__ \\(\\(vector_size\\
 gdb_test "ptype \$bitfields" \
     "type = struct struct2 {\r\n *uint64_t f1 : 35;\r\n *uint64_t f2 : 1;\r\n}"
 gdb_test "ptype \$flags" \
-    "type = flag flags {\r\n *uint32_t X @0;\r\n *uint32_t Y @2;\r\n}"
+    "type = flag flags {\r\n *bool X @0;\r\n *uint32_t Y @2;\r\n}"
 gdb_test "ptype \$mixed_flags" \
-    "type = flag mixed_flags {\r\n *bool A @0;\r\n *uint32_t B @1;\r\n *bool C @2;\r\n *uint32_t D @3;\r\n *uint32_t @4-5;\r\n *uint32_t E @6-7;\r\n *enum {yes = 1, no = 0, maybe = 2, so} Z @8-9;\r\n}"
+    "type = flag mixed_flags {\r\n *bool A @0;\r\n *uint32_t B @1-3;\r\n *bool C @4;\r\n *uint32_t D @5;\r\n *uint32_t @6-7;\r\n *enum {yes = 1, no = 0, maybe = 2, so} Z @8-9;\r\n}"
 
 load_description "core-only.xml" "" "test-regs.xml"
 # The extra register from the previous description should be gone.
index aa58385..eeaf79b 100644 (file)
@@ -382,13 +382,19 @@ tdesc_start_field (struct gdb_xml_parser *parser,
     {
       struct tdesc_type *t = data->current_type;
 
+      /* Older versions of gdb can't handle elided end values.
+         Stick with that for now, to help ensure backward compatibility.
+        E.g., If a newer gdbserver is talking to an older gdb.  */
+      if (end == -1)
+       gdb_xml_error (parser, _("Missing end value"));
+
       if (data->current_type_size == 0)
        gdb_xml_error (parser,
                       _("Bitfields must live in explicitly sized types"));
 
       if (field_type_id != NULL
          && strcmp (field_type_id, "bool") == 0
-         && !(start == end || end == -1))
+         && start != end)
        {
          gdb_xml_error (parser,
                         _("Boolean fields must be one bit in size"));
@@ -400,29 +406,20 @@ tdesc_start_field (struct gdb_xml_parser *parser,
                         "64 bits (unsupported)"),
                       field_name);
 
-      if (end != -1)
-       {
-         /* Assume that the bit numbering in XML is "lsb-zero".  Most
-            architectures other than PowerPC use this ordering.  In the
-            future, we can add an XML tag to indicate "msb-zero"
-            numbering.  */
-         if (start > end)
-           gdb_xml_error (parser, _("Bitfield \"%s\" has start after end"),
-                          field_name);
-         if (end >= data->current_type_size * TARGET_CHAR_BIT)
-           gdb_xml_error (parser,
-                          _("Bitfield \"%s\" does not fit in struct"));
-       }
+      /* Assume that the bit numbering in XML is "lsb-zero".  Most
+        architectures other than PowerPC use this ordering.  In the
+        future, we can add an XML tag to indicate "msb-zero" numbering.  */
+      if (start > end)
+       gdb_xml_error (parser, _("Bitfield \"%s\" has start after end"),
+                      field_name);
+      if (end >= data->current_type_size * TARGET_CHAR_BIT)
+       gdb_xml_error (parser,
+                      _("Bitfield \"%s\" does not fit in struct"));
 
-      if (end == -1)
-       {
-         if (field_type != NULL)
-           tdesc_add_typed_bitfield (t, field_name, start, start, field_type);
-         else
-           tdesc_add_flag (t, start, field_name);
-       }
-      else if (field_type != NULL)
+      if (field_type != NULL)
        tdesc_add_typed_bitfield (t, field_name, start, end, field_type);
+      else if (start == end)
+       tdesc_add_flag (t, start, field_name);
       else
        tdesc_add_bitfield (t, field_name, start, end);
     }