Patchwork Put bcache inside "namespace gdb"

login
register
mail settings
Submitter Doug Evans via gdb-patches
Date Dec. 2, 2019, 9:15 p.m.
Message ID <20191202211550.231100-1-cbiesinger@google.com>
Download mbox | patch
Permalink /patch/36444/
State New
Headers show

Comments

Doug Evans via gdb-patches - Dec. 2, 2019, 9:15 p.m.
This avoids a conflict with a system "struct bcache" on
Solaris (see e.g.
https://www.isi.edu/nsnam/archive/ns-users/webarch/2001/msg05393.html)

Note that the Solaris conflict for now only surfaces with
--enable-targets=all (which the build bot doesn't use).

Some callers of hash should probably be switched to fast_hash, and
perhaps that function should be entirely be replaced by that one,
but I am not doing that as part of this patch.

gdb/ChangeLog:

2019-12-02  Christian Biesinger  <cbiesinger@google.com>

	* bcache.c: Put in namespace gdb.
	* bcache.h: Likewise.
	* gdbtypes.c (check_types_worklist): Update.
	(types_deeply_equal): Update.
	* macrotab.c (struct macro_table) <bcache>: Update.
	(new_macro_table): Update.
	* macrotab.h (struct bcache): Put this forward declaration
	inside namespace gdb.
	(new_macro_table): Update.
	* objfiles.h (struct objfile_per_bfd_storage) <filename_cache>:
	Update.
	<macro_cache>: Update.
	* psymtab.c (psymbol_hash): Update.
	* psymtab.h: (psymtab_storage) <psymbol_cache>: Update.
	* stabsread.c (hashname): Update.

Change-Id: I843d5e91f7ccb3db6d1099a8214c15a74510256f
---
 gdb/bcache.c    |  4 ++++
 gdb/bcache.h    |  4 ++++
 gdb/gdbtypes.c  |  4 ++--
 gdb/macrotab.c  |  4 ++--
 gdb/macrotab.h  |  7 +++++--
 gdb/objfiles.h  |  4 ++--
 gdb/psymtab.c   | 13 +++++++------
 gdb/psymtab.h   |  2 +-
 gdb/stabsread.c |  2 +-
 9 files changed, 28 insertions(+), 16 deletions(-)

Patch

diff --git a/gdb/bcache.c b/gdb/bcache.c
index 3f0a63be22..42ca3a2e12 100644
--- a/gdb/bcache.c
+++ b/gdb/bcache.c
@@ -25,6 +25,8 @@ 
 
 #include <algorithm>
 
+namespace gdb {
+
 /* The type used to hold a single bcache string.  The user data is
    stored in d.data.  Since it can be any type, it needs to have the
    same alignment as the most strict alignment of any type on the host
@@ -403,3 +405,5 @@  bcache::memory_used ()
     return 0;
   return obstack_memory_used (&m_cache);
 }
+
+} /* namespace gdb */
diff --git a/gdb/bcache.h b/gdb/bcache.h
index 15dcc63440..96bf880b48 100644
--- a/gdb/bcache.h
+++ b/gdb/bcache.h
@@ -136,6 +136,8 @@ 
   
 */
 
+namespace gdb {
+
 struct bstring;
 
 /* The hash functions */
@@ -221,4 +223,6 @@  private:
   void expand_hash_table ();
 };
 
+} /* namespace gdb */
+
 #endif /* BCACHE_H */
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
index f10f65d0da..6bc13c5071 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
@@ -3783,7 +3783,7 @@  check_types_equal (struct type *type1, struct type *type2,
 
 static bool
 check_types_worklist (std::vector<type_equality_entry> *worklist,
-		      struct bcache *cache)
+		      gdb::bcache *cache)
 {
   while (!worklist->empty ())
     {
@@ -3819,7 +3819,7 @@  types_deeply_equal (struct type *type1, struct type *type2)
   if (type1 == type2)
     return true;
 
-  struct bcache cache (nullptr, nullptr);
+  gdb::bcache cache (nullptr, nullptr);
   worklist.emplace_back (type1, type2);
   return check_types_worklist (&worklist, &cache);
 }
diff --git a/gdb/macrotab.c b/gdb/macrotab.c
index 90f29439c0..e500cf5cbe 100644
--- a/gdb/macrotab.c
+++ b/gdb/macrotab.c
@@ -40,7 +40,7 @@  struct macro_table
 
   /* The bcache we should use to hold macro names, argument names, and
      definitions, or zero if we should use xmalloc.  */
-  struct bcache *bcache;
+  gdb::bcache *bcache;
 
   /* The main source file for this compilation unit --- the one whose
      name was given to the compiler.  This is the root of the
@@ -1025,7 +1025,7 @@  macro_for_each_in_scope (struct macro_source_file *file, int line,
 
 
 struct macro_table *
-new_macro_table (struct obstack *obstack, struct bcache *b,
+new_macro_table (struct obstack *obstack, gdb::bcache *b,
 		 struct compunit_symtab *cust)
 {
   struct macro_table *t;
diff --git a/gdb/macrotab.h b/gdb/macrotab.h
index 045d1625a1..83a7dfad23 100644
--- a/gdb/macrotab.h
+++ b/gdb/macrotab.h
@@ -23,9 +23,12 @@ 
 #include "gdbsupport/function-view.h"
 
 struct obstack;
-struct bcache;
 struct compunit_symtab;
 
+namespace gdb {
+struct bcache;
+}
+
 /* How do we represent a source location?  I mean, how should we
    represent them within GDB; the user wants to use all sorts of
    ambiguous abbreviations, like "break 32" and "break foo.c:32"
@@ -170,7 +173,7 @@  struct macro_source_file
    the same source location (although 'gcc -DFOO -UFOO -DFOO=2' does
    do that in GCC 4.1.2.).  */
 struct macro_table *new_macro_table (struct obstack *obstack,
-                                     struct bcache *bcache,
+                                     gdb::bcache *bcache,
 				     struct compunit_symtab *cust);
 
 
diff --git a/gdb/objfiles.h b/gdb/objfiles.h
index 0c044582e4..1601cfe591 100644
--- a/gdb/objfiles.h
+++ b/gdb/objfiles.h
@@ -244,11 +244,11 @@  struct objfile_per_bfd_storage
 
   /* Byte cache for file names.  */
 
-  struct bcache filename_cache;
+  gdb::bcache filename_cache;
 
   /* Byte cache for macros.  */
 
-  struct bcache macro_cache;
+  gdb::bcache macro_cache;
 
   /* The gdbarch associated with the BFD.  Note that this gdbarch is
      determined solely from BFD information, without looking at target
diff --git a/gdb/psymtab.c b/gdb/psymtab.c
index 7074a32956..1718868fd7 100644
--- a/gdb/psymtab.c
+++ b/gdb/psymtab.c
@@ -1530,14 +1530,15 @@  psymbol_hash (const void *addr, int length)
   unsigned int domain = psymbol->domain;
   unsigned int theclass = psymbol->aclass;
 
-  h = hash_continue (&psymbol->ginfo.value, sizeof (psymbol->ginfo.value), h);
-  h = hash_continue (&lang, sizeof (unsigned int), h);
-  h = hash_continue (&domain, sizeof (unsigned int), h);
-  h = hash_continue (&theclass, sizeof (unsigned int), h);
+  h = gdb::hash_continue (&psymbol->ginfo.value, sizeof (psymbol->ginfo.value),
+			  h);
+  h = gdb::hash_continue (&lang, sizeof (unsigned int), h);
+  h = gdb::hash_continue (&domain, sizeof (unsigned int), h);
+  h = gdb::hash_continue (&theclass, sizeof (unsigned int), h);
   /* Note that psymbol names are interned via symbol_set_names, so
      there's no need to hash the contents of the name here.  */
-  h = hash_continue (&psymbol->ginfo.name,
-		     sizeof (psymbol->ginfo.name), h);
+  h = gdb::hash_continue (&psymbol->ginfo.name,
+			  sizeof (psymbol->ginfo.name), h);
 
   return h;
 }
diff --git a/gdb/psymtab.h b/gdb/psymtab.h
index a4ac35a791..a4281c80bf 100644
--- a/gdb/psymtab.h
+++ b/gdb/psymtab.h
@@ -120,7 +120,7 @@  public:
   /* A byte cache where we can stash arbitrary "chunks" of bytes that
      will not change.  */
 
-  struct bcache psymbol_cache;
+  gdb::bcache psymbol_cache;
 
   /* Vectors of all partial symbols read in from file.  The actual data
      is stored in the objfile_obstack.  */
diff --git a/gdb/stabsread.c b/gdb/stabsread.c
index 979df0266c..96a886f85a 100644
--- a/gdb/stabsread.c
+++ b/gdb/stabsread.c
@@ -4778,7 +4778,7 @@  find_name_end (const char *name)
 int
 hashname (const char *name)
 {
-  return hash (name, strlen (name)) % HASHSIZE;
+  return gdb::hash (name, strlen (name)) % HASHSIZE;
 }
 
 /* Initializer for this module.  */