Use std::vector and std::string instead of VEC(char_ptr) in gdbserver tdesc
authorSimon Marchi <simon.marchi@polymtl.ca>
Fri, 30 Mar 2018 21:18:55 +0000 (17:18 -0400)
committerSimon Marchi <simon.marchi@polymtl.ca>
Fri, 30 Mar 2018 21:18:55 +0000 (17:18 -0400)
This is a straightforward replacement, no change in behavior are
intended/expected.

gdb/gdbserver/ChangeLog:

* tdesc.h (struct target_desc) <features>: Change type to
std::vector<std::string>.
* tdesc.c (target_desc::~target_desc): Adjust to std::vector
changes.
(tdesc_get_features_xml): Likewise.
(tdesc_create_feature): Likewise.

gdb/gdbserver/ChangeLog
gdb/gdbserver/tdesc.c
gdb/gdbserver/tdesc.h

index 8e6afef4744acb3aedfef583d191f0e260bdb366..8e0f13a86a3311cd4f1118c74f758d2c292e8a69 100644 (file)
@@ -1,3 +1,12 @@
+2018-03-30  Simon Marchi  <simon.marchi@polymtl.ca>
+
+       * tdesc.h (struct target_desc) <features>: Change type to
+       std::vector<std::string>.
+       * tdesc.c (target_desc::~target_desc): Adjust to std::vector
+       changes.
+       (tdesc_get_features_xml): Likewise.
+       (tdesc_create_feature): Likewise.
+
 2018-03-26  Alan Hayward  <alan.hayward@arm.com>
 
        * regcache.c (find_register_by_number): Return a ref.
index cec7a66f9748f7295462c76fdae3d3e9029ee421..9f00ecf9386bcbf874b5a2f4df456d73a41943f6 100644 (file)
@@ -27,12 +27,6 @@ target_desc::~target_desc ()
 
   xfree ((char *) arch);
   xfree ((char *) osabi);
-
-  char *f;
-
-  for (i = 0; VEC_iterate (char_ptr, features, i, f); i++)
-    xfree (f);
-  VEC_free (char_ptr, features);
 }
 
 bool target_desc::operator== (const target_desc &other) const
@@ -127,7 +121,7 @@ tdesc_get_features_xml (target_desc *tdesc)
 {
   /* Either .xmltarget or .features is not NULL.  */
   gdb_assert (tdesc->xmltarget != NULL
-             || (tdesc->features != NULL
+             || (!tdesc->features.empty ()
                  && tdesc->arch != NULL));
 
   if (tdesc->xmltarget == NULL)
@@ -147,9 +141,8 @@ tdesc_get_features_xml (target_desc *tdesc)
          buffer += "</osabi>";
        }
 
-      char *xml;
 
-      for (int i = 0; VEC_iterate (char_ptr, tdesc->features, i, xml); i++)
+      for (const std::string &xml : tdesc->features)
        {
          buffer += "<xi:include href=\"";
          buffer += xml;
@@ -175,7 +168,7 @@ tdesc_create_feature (struct target_desc *tdesc, const char *name,
                      const char *xml)
 {
 #ifndef IN_PROCESS_AGENT
-  VEC_safe_push (char_ptr, tdesc->features, xstrdup (xml));
+  tdesc->features.emplace_back (xml);
 #endif
   return tdesc;
 }
index a62544341cd23a9a8ec6833e1eae73616a315d2d..85139d948c8cb9c37ed7dd4f0c5cbd5637112c82 100644 (file)
@@ -54,7 +54,7 @@ struct target_desc : tdesc_feature
   const char *xmltarget = NULL;
 
   /* XML features in this target description.  */
-  VEC (char_ptr) *features = NULL;
+  std::vector<std::string> features;
 
   /* The value of <architecture> element in the XML, replying GDB.  */
   const char *arch = NULL;