X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fsolib-target.c;h=e6350446ec191c8ec45e3b4456675d5019a01ea6;hb=c0272db5854a799a9f3bb3803c3d03d1a62b9ac2;hp=bb34e4b7918ff8cd717b2f58e8a1c1d49f7b4222;hpb=41bf6acad7b02f67240f4cf84f066078f9ed7116;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/solib-target.c b/gdb/solib-target.c index bb34e4b791..e6350446ec 100644 --- a/gdb/solib-target.c +++ b/gdb/solib-target.c @@ -1,6 +1,6 @@ /* Definitions for targets which report shared library events. - Copyright (C) 2007-2014 Free Software Foundation, Inc. + Copyright (C) 2007-2016 Free Software Foundation, Inc. This file is part of GDB. @@ -26,8 +26,6 @@ #include "vec.h" #include "solib-target.h" -#include - /* Private data for each loaded library. */ struct lm_info { @@ -82,9 +80,10 @@ library_list_start_segment (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes) { - VEC(lm_info_p) **list = user_data; + VEC(lm_info_p) **list = (VEC(lm_info_p) **) user_data; struct lm_info *last = VEC_last (lm_info_p, *list); - ULONGEST *address_p = xml_find_attribute (attributes, "address")->value; + ULONGEST *address_p + = (ULONGEST *) xml_find_attribute (attributes, "address")->value; CORE_ADDR address = (CORE_ADDR) *address_p; if (last->section_bases != NULL) @@ -99,9 +98,10 @@ library_list_start_section (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes) { - VEC(lm_info_p) **list = user_data; + VEC(lm_info_p) **list = (VEC(lm_info_p) **) user_data; struct lm_info *last = VEC_last (lm_info_p, *list); - ULONGEST *address_p = xml_find_attribute (attributes, "address")->value; + ULONGEST *address_p + = (ULONGEST *) xml_find_attribute (attributes, "address")->value; CORE_ADDR address = (CORE_ADDR) *address_p; if (last->segment_bases != NULL) @@ -118,9 +118,10 @@ library_list_start_library (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes) { - VEC(lm_info_p) **list = user_data; + VEC(lm_info_p) **list = (VEC(lm_info_p) **) user_data; struct lm_info *item = XCNEW (struct lm_info); - const char *name = xml_find_attribute (attributes, "name")->value; + const char *name + = (const char *) xml_find_attribute (attributes, "name")->value; item->name = xstrdup (name); VEC_safe_push (lm_info_p, *list, item); @@ -131,7 +132,7 @@ library_list_end_library (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, const char *body_text) { - VEC(lm_info_p) **list = user_data; + VEC(lm_info_p) **list = (VEC(lm_info_p) **) user_data; struct lm_info *lm_info = VEC_last (lm_info_p, *list); if (lm_info->segment_bases == NULL @@ -148,12 +149,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 != NULL) + { + const char *string = (const char *) version->value; + + if (strcmp (string, "1.0") != 0) + gdb_xml_error (parser, + _("Library list has unsupported version \"%s\""), + version); + } } /* Discard the constructed library list. */ @@ -161,7 +168,7 @@ library_list_start_list (struct gdb_xml_parser *parser, static void solib_target_free_library_list (void *p) { - VEC(lm_info_p) **result = p; + VEC(lm_info_p) **result = (VEC(lm_info_p) **) p; struct lm_info *info; int ix; @@ -212,7 +219,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 } }; @@ -341,7 +348,9 @@ solib_target_relocate_section_addresses (struct so_list *so, { int num_sections = gdb_bfd_count_sections (so->abfd); - so->lm_info->offsets = xzalloc (SIZEOF_N_SECTION_OFFSETS (num_sections)); + so->lm_info->offsets + = ((struct section_offsets *) + xzalloc (SIZEOF_N_SECTION_OFFSETS (num_sections))); if (so->lm_info->section_bases) {