Remove deprecated_throw_reason.
[deliverable/binutils-gdb.git] / gdb / memory-map.c
index b9323f705b6f37e487bf5fc6ee60409d81eb02f3..b4e032281419564862b5761526576918b7fc4d80 100644 (file)
@@ -1,13 +1,12 @@
 /* Routines for handling XML memory maps provided by target.
 
-   Copyright (C) 2006
-   Free Software Foundation, Inc.
+   Copyright (C) 2006-2013 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
@@ -16,9 +15,7 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "defs.h"
 #include "memory-map.h"
@@ -66,9 +63,9 @@ memory_map_start_memory (struct gdb_xml_parser *parser,
   struct mem_region *r = VEC_safe_push (mem_region_s, *data->memory_map, NULL);
   ULONGEST *start_p, *length_p, *type_p;
 
-  start_p = VEC_index (gdb_xml_value_s, attributes, 0)->value;
-  length_p = VEC_index (gdb_xml_value_s, attributes, 1)->value;
-  type_p = VEC_index (gdb_xml_value_s, attributes, 2)->value;
+  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;
@@ -103,7 +100,7 @@ memory_map_start_property (struct gdb_xml_parser *parser,
   struct memory_map_parsing_data *data = user_data;
   char *name;
 
-  name = VEC_index (gdb_xml_value_s, attributes, 0)->value;
+  name = xml_find_attribute (attributes, "name")->value;
   snprintf (data->property_name, sizeof (data->property_name), "%s", name);
 }
 
@@ -180,25 +177,22 @@ const struct gdb_xml_element memory_map_elements[] = {
 VEC(mem_region_s) *
 parse_memory_map (const char *memory_map)
 {
-  struct gdb_xml_parser *parser;
   VEC(mem_region_s) *result = NULL;
-  struct cleanup *before_deleting_result, *back_to;
-  struct memory_map_parsing_data data = {};
+  struct cleanup *back_to;
+  struct memory_map_parsing_data data = { NULL };
 
-  back_to = make_cleanup (null_cleanup, NULL);
-  parser = gdb_xml_create_parser_and_cleanup (_("target memory map"),
-                                             memory_map_elements, &data);
-
-  /* Note: 'clear_result' will zero 'result'.  */
-  before_deleting_result = make_cleanup (clear_result, &result);
   data.memory_map = &result;
-
-  if (gdb_xml_parse (parser, memory_map) == 0)
-    /* Parsed successfully, don't need to delete the result.  */
-    discard_cleanups (before_deleting_result);
+  back_to = make_cleanup (clear_result, &result);
+  if (gdb_xml_parse_quick (_("target memory map"), NULL, memory_map_elements,
+                          memory_map, &data) == 0)
+    {
+      /* Parsed successfully, keep the result.  */
+      discard_cleanups (back_to);
+      return result;
+    }
 
   do_cleanups (back_to);
-  return result;
+  return NULL;
 }
 
 #endif /* HAVE_LIBEXPAT */
This page took 0.02575 seconds and 4 git commands to generate.