gdb: resume ongoing step after handling fork or vfork
[deliverable/binutils-gdb.git] / gdb / osdata.c
index a82cbf1ad213e502f9f7d0fdd0469adb2a301185..188eb10845907d31a2f2e92b410df057c8ae459f 100644 (file)
@@ -1,6 +1,6 @@
 /* Routines for handling XML generic OS data provided by target.
 
-   Copyright (C) 2008-2017 Free Software Foundation, Inc.
+   Copyright (C) 2008-2022 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -19,7 +19,6 @@
 
 #include "defs.h"
 #include "target.h"
-#include "vec.h"
 #include "xml-support.h"
 #include "osdata.h"
 #include "ui-out.h"
@@ -36,7 +35,7 @@ osdata_parse (const char *xml)
     {
       have_warned = 1;
       warning (_("Can not parse XML OS data; XML support was disabled "
-                "at compile time"));
+               "at compile time"));
     }
 
   return NULL;
@@ -55,15 +54,16 @@ struct osdata_parsing_data
 
 static void
 osdata_start_osdata (struct gdb_xml_parser *parser,
-                        const struct gdb_xml_element *element,
-                        void *user_data, VEC(gdb_xml_value_s) *attributes)
+                       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;
+  char *type = (char *) xml_find_attribute (attributes, "type")->value.get ();
   data->osdata.reset (new struct osdata (std::string (type)));
 }
 
@@ -71,8 +71,9 @@ osdata_start_osdata (struct gdb_xml_parser *parser,
 
 static void
 osdata_start_item (struct gdb_xml_parser *parser,
-                  const struct gdb_xml_element *element,
-                  void *user_data, VEC(gdb_xml_value_s) *attributes)
+                 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;
   data->osdata->items.emplace_back ();
@@ -82,12 +83,13 @@ osdata_start_item (struct gdb_xml_parser *parser,
 
 static void
 osdata_start_column (struct gdb_xml_parser *parser,
-                    const struct gdb_xml_element *element,
-                    void *user_data, VEC(gdb_xml_value_s) *attributes)
+                   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;
+    = (const char *) xml_find_attribute (attributes, "name")->value.get ();
 
   data->property_name.assign (name);
 }
@@ -96,8 +98,8 @@ osdata_start_column (struct gdb_xml_parser *parser,
 
 static void
 osdata_end_column (struct gdb_xml_parser *parser,
-                  const struct gdb_xml_element *element,
-                  void *user_data, const char *body_text)
+                 const struct gdb_xml_element *element,
+                 void *user_data, const char *body_text)
 {
   osdata_parsing_data *data = (struct osdata_parsing_data *) user_data;
   struct osdata *osdata = data->osdata.get ();
@@ -160,11 +162,11 @@ std::unique_ptr<osdata>
 get_osdata (const char *type)
 {
   std::unique_ptr<osdata> osdata;
-  gdb::unique_xmalloc_ptr<char> xml = target_get_osdata (type);
+  gdb::optional<gdb::char_vector> xml = target_get_osdata (type);
 
   if (xml)
     {
-      if (xml.get ()[0] == '\0')
+      if ((*xml)[0] == '\0')
        {
          if (type)
            warning (_("Empty data returned by target.  Wrong osdata type?"));
@@ -172,7 +174,7 @@ get_osdata (const char *type)
            warning (_("Empty type list returned by target.  No type data?"));
        }
       else
-       osdata = osdata_parse (xml.get ());
+       osdata = osdata_parse (xml->data ());
     }
 
   if (osdata == NULL)
@@ -251,7 +253,7 @@ info_osdata (const char *type)
          snprintf (col_name, 32, "col%d", ix);
          uiout->table_header (10, ui_left,
                               col_name, last->columns[ix].name.c_str ());
-        }
+       }
     }
 
   uiout->table_body ();
@@ -271,12 +273,11 @@ info_osdata (const char *type)
                 continue;
 
               snprintf (col_name, 32, "col%d", ix_cols);
-              uiout->field_string (col_name,
-                                   item.columns[ix_cols].value.c_str ());
+              uiout->field_string (col_name, item.columns[ix_cols].value);
             }
         }
 
-         uiout->text ("\n");
+        uiout->text ("\n");
        }
     }
 }
@@ -287,9 +288,10 @@ info_osdata_command (const char *arg, int from_tty)
   info_osdata (arg);
 }
 
+void _initialize_osdata ();
 void
-_initialize_osdata (void)
+_initialize_osdata ()
 {
   add_info ("os", info_osdata_command,
-           _("Show OS data ARG."));
+          _("Show OS data ARG."));
 }
This page took 0.028202 seconds and 4 git commands to generate.