static void memory_map_start_memory (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector<gdb_xml_value> &attributes) { struct memory_map_parsing_data *data = (struct memory_map_parsing_data *) user_data; ULONGEST *start_p, *length_p, *type_p; start_p = (ULONGEST *) xml_find_attribute (attributes, "start")->value.get (); length_p = (ULONGEST *) xml_find_attribute (attributes, "length")->value.get (); type_p = (ULONGEST *) xml_find_attribute (attributes, "type")->value.get (); data->memory_map->emplace_back (*start_p, *start_p + *length_p, (enum mem_access_mode) *type_p); }
static void osdata_start_column (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector<gdb_xml_value> &attributes) { struct osdata_parsing_data *data = (struct osdata_parsing_data *) user_data; const char *name = (const char *) xml_find_attribute (attributes, "name")->value.get (); data->property_name.assign (name); }
static void osdata_start_osdata (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector<gdb_xml_value> &attributes) { struct osdata_parsing_data *data = (struct osdata_parsing_data *) user_data; if (data->osdata != NULL) gdb_xml_error (parser, _("Seen more than on osdata element")); char *type = (char *) xml_find_attribute (attributes, "type")->value.get (); data->osdata.reset (new struct osdata (std::string (type))); }
} #else /* HAVE_LIBEXPAT */ #include "xml-support.h" /* Handle the start of a <segment> element. */ static void 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; struct lm_info *last = VEC_last (lm_info_p, *list); ULONGEST *address_p = xml_find_attribute (attributes, "address")->value; CORE_ADDR address = (CORE_ADDR) *address_p; if (last->section_bases != NULL) gdb_xml_error (parser, _("Library list with both segments and sections")); VEC_safe_push (CORE_ADDR, last->segment_bases, &address); } static void 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(mem_region_s) **memory_map; char property_name[32]; }; /* Handle the start of a <memory> element. */ static void memory_map_start_memory (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes) { struct memory_map_parsing_data *data = user_data; struct mem_region *r = VEC_safe_push (mem_region_s, *data->memory_map, NULL); ULONGEST *start_p, *length_p, *type_p; start_p = xml_find_attribute (attributes, "start")->value; length_p = xml_find_attribute (attributes, "length")->value; type_p = xml_find_attribute (attributes, "type")->value; mem_region_init (r); r->lo = *start_p; r->hi = r->lo + *length_p; r->attrib.mode = *type_p; r->attrib.blocksize = -1; } /* Handle the end of a <memory> element. Verify that any necessary children were present. */ static void memory_map_end_memory (struct gdb_xml_parser *parser,
#else /* HAVE_LIBEXPAT */ #include "xml-support.h" /* Handle the start of a <segment> element. */ static void 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 = (VEC(lm_info_p) **) user_data; struct lm_info *last = VEC_last (lm_info_p, *list); ULONGEST *address_p = (ULONGEST *) xml_find_attribute (attributes, "address")->value; CORE_ADDR address = (CORE_ADDR) *address_p; if (last->section_bases != NULL) gdb_xml_error (parser, _("Library list with both segments and sections")); VEC_safe_push (CORE_ADDR, last->segment_bases, address); } static void 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 = (VEC(lm_info_p) **) user_data;
DEBUG ("free objfile"); ALL_NON_EXITED_THREADS (tp) btrace_clear (tp); } #if defined (HAVE_LIBEXPAT) /* Check the btrace document version. */ static void check_xml_btrace_version (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC (gdb_xml_value_s) *attributes) { const char *version = xml_find_attribute (attributes, "version")->value; if (strcmp (version, "1.0") != 0) gdb_xml_error (parser, _("Unsupported btrace version: \"%s\""), version); } /* Parse a btrace "block" xml record. */ static void parse_xml_btrace_block (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC (gdb_xml_value_s) *attributes) { struct btrace_data *btrace; struct btrace_block *block; ULONGEST *begin, *end;