Fix gdbserver <library-list> and its #FIXED version="1.0"
While reimplementing <library-list/> I found from expat-2.0.1-11.fc15.x86_64: warning: while parsing target library list (at line 1): Required attribute "version" of <library-list-svr4> not specified I believe the same bug has to apply for existing FSF gdbserver but I do not have any <library-list/> platform to test it (I did not try to build MinGW). features/library-list.dtd: <!ATTLIST library-list version CDATA #FIXED "1.0"> 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 <jan.kratochvil@redhat.com> * 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 <jan.kratochvil@redhat.com> * server.c (handle_qxfer_libraries): Set `version' attribute for <library-list>.
This commit is contained in:
parent
51aad7cc44
commit
24c05f4605
@ -1,3 +1,10 @@
|
|||||||
|
2015-06-10 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
|
* 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.
|
||||||
|
|
||||||
2015-06-10 Gary Benson <gbenson@redhat.com>
|
2015-06-10 Gary Benson <gbenson@redhat.com>
|
||||||
|
|
||||||
* NEWS: Announce support for direct access of executable and
|
* NEWS: Announce support for direct access of executable and
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2015-06-10 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
|
* server.c (handle_qxfer_libraries): Set `version' attribute for
|
||||||
|
<library-list>.
|
||||||
|
|
||||||
2015-06-10 Gary Benson <gbenson@redhat.com>
|
2015-06-10 Gary Benson <gbenson@redhat.com>
|
||||||
|
|
||||||
* target.h (struct target_ops) <multifs_open>: New field.
|
* target.h (struct target_ops) <multifs_open>: New field.
|
||||||
|
@ -1291,7 +1291,7 @@ handle_qxfer_libraries (const char *annex,
|
|||||||
if (document == NULL)
|
if (document == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
strcpy (document, "<library-list>\n");
|
strcpy (document, "<library-list version=\"1.0\">\n");
|
||||||
p = document + strlen (document);
|
p = document + strlen (document);
|
||||||
|
|
||||||
for_each_inferior_with_data (&all_dlls, emit_dll_description, &p);
|
for_each_inferior_with_data (&all_dlls, emit_dll_description, &p);
|
||||||
|
@ -146,13 +146,19 @@ library_list_start_list (struct gdb_xml_parser *parser,
|
|||||||
const struct gdb_xml_element *element,
|
const struct gdb_xml_element *element,
|
||||||
void *user_data, VEC(gdb_xml_value_s) *attributes)
|
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)
|
/* #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,
|
gdb_xml_error (parser,
|
||||||
_("Library list has unsupported version \"%s\""),
|
_("Library list has unsupported version \"%s\""),
|
||||||
version);
|
version);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Discard the constructed library list. */
|
/* 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[] = {
|
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 }
|
{ NULL, GDB_XML_AF_NONE, NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user