gdb: add intern methods to objfile_per_bfd_storage
authorSimon Marchi <simon.marchi@polymtl.ca>
Fri, 2 Apr 2021 15:23:52 +0000 (11:23 -0400)
committerSimon Marchi <simon.marchi@polymtl.ca>
Fri, 2 Apr 2021 15:35:29 +0000 (11:35 -0400)
This allows keeping the objfile_per_bfd_storage implementation details
into objfile_per_bfd_storage, instead of into objfile.  And this makes
the intern methods usable for code that only has an
objfile_per_bfd_storage to work with.

gdb/ChangeLog:

* objfiles.h (struct objfile_per_bfd_storage) <intern>: New
methods.
(struct objfile) <intern>: Use
objfile::objfile_per_bfd_storage::intern.

Change-Id: Ifd54026c5efaeffafac9b84ff84c199acc7ce78a

gdb/ChangeLog
gdb/objfiles.h

index 1bdd652b632a0d0650d31eec958756f1b8028427..ac64f5c7609954f97c06f7859abc54aa908f8531 100644 (file)
@@ -1,3 +1,10 @@
+2021-04-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+       * objfiles.h (struct objfile_per_bfd_storage) <intern>: New
+       methods.
+       (struct objfile) <intern>: Use
+       objfile::objfile_per_bfd_storage::intern.
+
 2021-04-01  Simon Marchi  <simon.marchi@efficios.com>
 
        * gdbtypes.h (TYPE_FLAG_ENUM): Remove, replace all uses
index 4cd392bd7f022e71571346a0e850395c5f27002a..e8a8b5f6de78be04cd470661c6c32e1e0ab4d99a 100644 (file)
@@ -270,6 +270,23 @@ struct objfile_per_bfd_storage
 
   ~objfile_per_bfd_storage ();
 
+  /* Intern STRING in this object's string cache and return the unique copy.
+     The copy has the same lifetime as this object.
+
+     STRING must be null-terminated.  */
+
+  const char *intern (const char *str)
+  {
+    return (const char *) string_cache.insert (str, strlen (str) + 1);
+  }
+
+  /* Same as the above, but for an std::string.  */
+
+  const char *intern (const std::string &str)
+  {
+    return (const char *) string_cache.insert (str.c_str (), str.size () + 1);
+  }
+
   /* The storage has an obstack of its own.  */
 
   auto_obstack storage_obstack;
@@ -516,15 +533,14 @@ public:
      lifetime as the per-BFD object.  */
   const char *intern (const char *str)
   {
-    return (const char *) per_bfd->string_cache.insert (str, strlen (str) + 1);
+    return per_bfd->intern (str);
   }
 
   /* Intern STRING and return the unique copy.  The copy has the same
      lifetime as the per-BFD object.  */
   const char *intern (const std::string &str)
   {
-    return (const char *) per_bfd->string_cache.insert (str.c_str (),
-                                                       str.size () + 1);
+    return per_bfd->intern (str);
   }
 
   /* Retrieve the gdbarch associated with this objfile.  */