Remove trademark acknowledgements throughout
[deliverable/binutils-gdb.git] / gdb / memory-map.c
index d10419c8e59333dd1a9a57cc6468046847d5f34f..5f2e6a75a87894ba9b0b50e1e12aef96f2db0617 100644 (file)
@@ -1,7 +1,6 @@
 /* Routines for handling XML memory maps provided by target.
 
-   Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011
-   Free Software Foundation, Inc.
+   Copyright (C) 2006-2016 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
 
 #include "defs.h"
 #include "memory-map.h"
-#include "gdb_assert.h"
-#include "exceptions.h"
-
-#include "gdb_string.h"
 
 #if !defined(HAVE_LIBEXPAT)
 
@@ -60,18 +55,22 @@ 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 memory_map_parsing_data *data
+    = (struct memory_map_parsing_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 = 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
+    = (ULONGEST *) xml_find_attribute (attributes, "start")->value;
+  length_p
+    = (ULONGEST *) xml_find_attribute (attributes, "length")->value;
+  type_p
+    = (ULONGEST *) 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.mode = (enum mem_access_mode) *type_p;
   r->attrib.blocksize = -1;
 }
 
@@ -83,7 +82,8 @@ memory_map_end_memory (struct gdb_xml_parser *parser,
                       const struct gdb_xml_element *element,
                       void *user_data, const char *body_text)
 {
-  struct memory_map_parsing_data *data = user_data;
+  struct memory_map_parsing_data *data
+    = (struct memory_map_parsing_data *) user_data;
   struct mem_region *r = VEC_last (mem_region_s, *data->memory_map);
 
   if (r->attrib.mode == MEM_FLASH && r->attrib.blocksize == -1)
@@ -98,10 +98,11 @@ memory_map_start_property (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 memory_map_parsing_data *data
+    = (struct memory_map_parsing_data *) user_data;
   char *name;
 
-  name = VEC_index (gdb_xml_value_s, attributes, 0)->value;
+  name = (char *) xml_find_attribute (attributes, "name")->value;
   snprintf (data->property_name, sizeof (data->property_name), "%s", name);
 }
 
@@ -112,7 +113,8 @@ memory_map_end_property (struct gdb_xml_parser *parser,
                         const struct gdb_xml_element *element,
                         void *user_data, const char *body_text)
 {
-  struct memory_map_parsing_data *data = user_data;
+  struct memory_map_parsing_data *data
+    = (struct memory_map_parsing_data *) user_data;
   char *name = data->property_name;
 
   if (strcmp (name, "blocksize") == 0)
@@ -130,7 +132,7 @@ memory_map_end_property (struct gdb_xml_parser *parser,
 static void
 clear_result (void *p)
 {
-  VEC(mem_region_s) **result = p;
+  VEC(mem_region_s) **result = (VEC(mem_region_s) **) p;
   VEC_free (mem_region_s, *result);
   *result = NULL;
 }
@@ -178,25 +180,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 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.027671 seconds and 4 git commands to generate.