From: "Christian Biesinger via gdb-patches" <gdb-patches@sourceware.org>
To: gdb-patches@sourceware.org
Cc: Christian Biesinger <cbiesinger@google.com>
Subject: [PATCH] Put bcache inside "namespace gdb"
Date: Mon, 02 Dec 2019 21:15:00 -0000 [thread overview]
Message-ID: <20191202211550.231100-1-cbiesinger@google.com> (raw)
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(-)
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. */
--
2.24.0.393.g34dc348eaf-goog
next reply other threads:[~2019-12-02 21:15 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-02 21:15 Christian Biesinger via gdb-patches [this message]
2019-12-05 21:32 ` [PATCH v2] " Christian Biesinger via gdb-patches
2019-12-06 18:51 ` Pedro Alves
2019-12-06 19:20 ` Christian Biesinger via gdb-patches
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191202211550.231100-1-cbiesinger@google.com \
--to=gdb-patches@sourceware.org \
--cc=cbiesinger@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox