Make tdesc_feature::name an std::string
authorSimon Marchi <simon.marchi@polymtl.ca>
Tue, 5 Dec 2017 21:30:24 +0000 (16:30 -0500)
committerSimon Marchi <simon.marchi@ericsson.com>
Tue, 5 Dec 2017 21:30:24 +0000 (16:30 -0500)
... so we don't have to manually free it in ~tdesc_feature.

gdb/ChangeLog:

* target-descriptions.c (tdesc_feature) <name>: Change type to
std::string.
<~tdesc_feature>: Don't manually free name.
<operator==>: Adjust.
(tdesc_find_feature): Adjust.
(tdesc_feature_name): Adjust.
(class print_c_tdesc) <visit_pre>: Adjust.
(class print_c_feature) <visit_pre>: Adjust.

gdb/ChangeLog
gdb/target-descriptions.c

index 36aa1146356fc4807bf6810b47d790ff5a8a6ad6..e3c1cbfb28665f5363f58e45a5f055f89211d870 100644 (file)
@@ -1,3 +1,14 @@
+2017-12-05  Simon Marchi  <simon.marchi@polymtl.ca>
+
+       * target-descriptions.c (tdesc_feature) <name>: Change type to
+       std::string.
+       <~tdesc_feature>: Don't manually free name.
+       <operator==>: Adjust.
+       (tdesc_find_feature): Adjust.
+       (tdesc_feature_name): Adjust.
+       (class print_c_tdesc) <visit_pre>: Adjust.
+       (class print_c_feature) <visit_pre>: Adjust.
+
 2017-12-05  Simon Marchi  <simon.marchi@polymtl.ca>
 
        * target-descriptions.c (tdesc_feature_p): Remove typedef.
index c669b7060c74990a0b627e94e546d0bef6561754..eda46a50aed23c4ad8c5915a60109f46b7907167 100644 (file)
@@ -281,8 +281,8 @@ DEF_VEC_P(tdesc_type_p);
 
 struct tdesc_feature : tdesc_element
 {
-  tdesc_feature (const char *name_)
-    : name (xstrdup (name_))
+  tdesc_feature (const std::string &name_)
+    : name (name_)
   {}
 
   virtual ~tdesc_feature ()
@@ -298,15 +298,13 @@ struct tdesc_feature : tdesc_element
     for (ix = 0; VEC_iterate (tdesc_type_p, types, ix, type); ix++)
       delete type;
     VEC_free (tdesc_type_p, types);
-
-    xfree (name);
   }
 
   DISABLE_COPY_AND_ASSIGN (tdesc_feature);
 
   /* The name of this feature.  It may be recognized by the architecture
      support code.  */
-  char *name;
+  std::string name;
 
   /* The registers associated with this feature.  */
   VEC(tdesc_reg_p) *registers = NULL;
@@ -338,7 +336,7 @@ struct tdesc_feature : tdesc_element
 
   bool operator== (const tdesc_feature &other) const
   {
-    if (strcmp (name, other.name) != 0)
+    if (name != other.name)
       return false;
 
     if (VEC_length (tdesc_reg_p, registers)
@@ -741,7 +739,7 @@ tdesc_find_feature (const struct target_desc *target_desc,
                    const char *name)
 {
   for (const tdesc_feature_up &feature : target_desc->features)
-    if (strcmp (feature->name, name) == 0)
+    if (feature->name == name)
       return feature.get ();
 
   return NULL;
@@ -752,7 +750,7 @@ tdesc_find_feature (const struct target_desc *target_desc,
 const char *
 tdesc_feature_name (const struct tdesc_feature *feature)
 {
-  return feature->name;
+  return feature->name.c_str ();
 }
 
 /* Predefined types.  */
@@ -1925,7 +1923,7 @@ public:
   void visit_pre (const tdesc_feature *e) override
   {
     printf_unfiltered ("\n  feature = tdesc_create_feature (result, \"%s\");\n",
-                      e->name);
+                      e->name.c_str ());
   }
 
   void visit_post (const tdesc_feature *e) override
@@ -2143,7 +2141,7 @@ public:
 
     printf_unfiltered
       ("\n  feature = tdesc_create_feature (result, \"%s\", \"%s\");\n",
-       e->name, lbasename (m_filename_after_features.c_str ()));
+       e->name.c_str (), lbasename (m_filename_after_features.c_str ()));
   }
 
   void visit_post (const tdesc_feature *e) override