From 24c05f46059182f0c8768c6ebbb66b4ca3233ecc Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Wed, 10 Jun 2015 18:29:05 +0200 Subject: Fix gdbserver and its #FIXED version="1.0" While reimplementing I found from expat-2.0.1-11.fc15.x86_64: warning: while parsing target library list (at line 1): Required attribute "version" of not specified I believe the same bug has to apply for existing FSF gdbserver but I do not have any platform to test it (I did not try to build MinGW). features/library-list.dtd: http://www.xml.com/pub/a/98/10/guide0.html?page=3 says: In this case, the attribute is not required, but if it occurs, it must have the specified value. Which would suggest gdbserver is right but solib-target.c is wrong. One could also make gdbserver explicit for the version (if those 14 bytes are not of a concern). gdb/ChangeLog 2015-06-10 Jan Kratochvil * solib-target.c (library_list_start_list): Do not dereference variable version in its initialization. Make the VERSION check handle NULL. (library_list_attributes): Make "version" GDB_XML_AF_OPTIONAL. gdb/gdbserver/ChangeLog 2015-06-10 Jan Kratochvil * server.c (handle_qxfer_libraries): Set `version' attribute for . --- gdb/solib-target.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'gdb/solib-target.c') diff --git a/gdb/solib-target.c b/gdb/solib-target.c index bd8f58a..891e572 100644 --- a/gdb/solib-target.c +++ b/gdb/solib-target.c @@ -146,12 +146,18 @@ library_list_start_list (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes) { - char *version = xml_find_attribute (attributes, "version")->value; + struct gdb_xml_value *version = xml_find_attribute (attributes, "version"); - if (strcmp (version, "1.0") != 0) - gdb_xml_error (parser, - _("Library list has unsupported version \"%s\""), - version); + /* #FIXED attribute may be omitted, Expat returns NULL in such case. */ + if (version) + { + const char *string = version->value; + + if (strcmp (string, "1.0") != 0) + gdb_xml_error (parser, + _("Library list has unsupported version \"%s\""), + version); + } } /* Discard the constructed library list. */ @@ -210,7 +216,7 @@ static const struct gdb_xml_element library_list_children[] = { }; static const struct gdb_xml_attribute library_list_attributes[] = { - { "version", GDB_XML_AF_NONE, NULL, NULL }, + { "version", GDB_XML_AF_OPTIONAL, NULL, NULL }, { NULL, GDB_XML_AF_NONE, NULL, NULL } }; -- cgit v1.1