forked from Imagelibrary/binutils-gdb
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:
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user