gdbsupport/tdesc: print enum fields using 'evalue' syntax
Currently when printing an XML description GDB prints enum values like
this:
<enum id="levels_type" size="4">
<field name="low" start="0"/>
<field name="high" start="1"/>
</enum>
This is incorrect, and is most likely a copy and paste error with the
struct and flags printing code. The correct syntax is:
<enum id="levels_type" size="4">
<evalue name="low" value="0"/>
<evalue name="high" value="1"/>
</enum>
A test is included to cover this functionality.
gdb/testsuite/ChangeLog:
* gdb.xml/maint-xml-dump-03.xml: New file.
gdbsupport/ChangeLog:
* tdesc.cc (print_xml_feature::visit): Print enum fields using
'evalue' syntax.
This commit is contained in:
parent
4f36e61b2d
commit
54e75f291e
@ -1,3 +1,7 @@
|
||||
2020-12-01 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
* gdb.xml/maint-xml-dump-03.xml: New file.
|
||||
|
||||
2020-11-30 Tom de Vries <tdevries@suse.de>
|
||||
|
||||
PR symtab/26905
|
||||
|
||||
13
gdb/testsuite/gdb.xml/maint-xml-dump-03.xml
Normal file
13
gdb/testsuite/gdb.xml/maint-xml-dump-03.xml
Normal file
@ -0,0 +1,13 @@
|
||||
<target>
|
||||
<feature name="abc">
|
||||
<enum id="levels_type" size="4">
|
||||
<evalue name="low" value="0"/>
|
||||
<evalue name="high" value="1"/>
|
||||
</enum>
|
||||
<flags id="flags_type" size="4">
|
||||
<field name="X" start="0" end="0" type="bool"/>
|
||||
<field name="LEVEL" start="1" end="1" type="levels_type"/>
|
||||
</flags>
|
||||
<reg name="flags" bitsize="32" type="flags_type" regnum="0"/>
|
||||
</feature>
|
||||
</target>
|
||||
@ -1,3 +1,8 @@
|
||||
2020-12-01 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
* tdesc.cc (print_xml_feature::visit): Print enum fields using
|
||||
'evalue' syntax.
|
||||
|
||||
2020-12-01 Chungyi Chi <demonic@csie.io>
|
||||
|
||||
* tdesc.cc (print_xml_feature::visit): Print enum size attribute.
|
||||
|
||||
@ -355,8 +355,10 @@ void print_xml_feature::visit (const tdesc_type_with_fields *t)
|
||||
string_appendf (tmp, " size=\"%d\"", t->size);
|
||||
string_appendf (tmp, ">");
|
||||
add_line (tmp);
|
||||
/* The 'start' of the field is reused as the enum value. The 'end'
|
||||
of the field is always set to -1 for enum values. */
|
||||
for (const tdesc_type_field &f : t->fields)
|
||||
add_line (" <field name=\"%s\" start=\"%d\"/>",
|
||||
add_line (" <evalue name=\"%s\" value=\"%d\"/>",
|
||||
f.name.c_str (), f.start);
|
||||
break;
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user