aboutsummaryrefslogtreecommitdiff
path: root/gdb/psymtab.h
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@polymtl.ca>2020-09-14 14:02:30 -0400
committerSimon Marchi <simon.marchi@efficios.com>2020-09-14 14:02:30 -0400
commit898066264058f68c4dd26e82e1310db305177c8e (patch)
treefc0b04a903748034dcf5fabf9b650636df7b4725 /gdb/psymtab.h
parent2ddc8f011a497d710737ab7637dbf88cbe1398a1 (diff)
downloadgdb-898066264058f68c4dd26e82e1310db305177c8e.zip
gdb-898066264058f68c4dd26e82e1310db305177c8e.tar.gz
gdb-898066264058f68c4dd26e82e1310db305177c8e.tar.bz2
gdb: turn gdb::bcache's function pointers into virtual methods
The two function pointers optionally passed to gdb::bcache are very good candidates to be turned into virtual methods, this patch does that in the most straightforward / unsurprising way. gdb/ChangeLog: * bcache.h (struct bcache) <bcache>: Remove constructor. <m_hash_function, m_compare_function>: Remove. <~bcache>: Make virtual. <compare>: Remove static method, introduce virtual method. <default_hash>: Remove. <hash>: New virtual method. * bcache.c (bcache::expand_hash_table): Update. (bcache::insert): Update. (bcache::hash): New. (bcache::compare): Update comment and parameter names. * gdbtypes.c (types_deeply_equal): Update. * psymtab.h (struct psymbol_bcache): New struct. (class psymtab_storage) <psymtab_storage>: Make default. <psymbol_cache>: Change type to psymbol_bcache. * psymtab.c (psymtab_storage::psymtab_storage): Remove. (psymbol_hash): Change to... (psymbol_bcache::hash): ... this. (psymbol_compare): Change to... (psymbol_bcache::compare): ... this. Change-Id: I41d578e61de8ac1163461a28fbd220d1f855e372
Diffstat (limited to 'gdb/psymtab.h')
-rw-r--r--gdb/psymtab.h22
1 files changed, 18 insertions, 4 deletions
diff --git a/gdb/psymtab.h b/gdb/psymtab.h
index e8bafbe..3c2d65f 100644
--- a/gdb/psymtab.h
+++ b/gdb/psymtab.h
@@ -27,6 +27,22 @@
struct partial_symbol;
+/* Specialization of bcache to store partial symbols. */
+
+struct psymbol_bcache : public gdb::bcache
+{
+ /* Calculate a hash code for the given partial symbol. The hash is
+ calculated using the symbol's value, language, domain, class
+ and name. These are the values which are set by
+ add_psymbol_to_bcache. */
+ unsigned long hash (const void *addr, int length) override;
+
+ /* Returns true if the symbol LEFT equals the symbol RIGHT.
+ For the comparison this function uses a symbols value,
+ language, domain, class and name. */
+ int compare (const void *left, const void *right, int length) override;
+};
+
/* An instance of this class manages the partial symbol tables and
partial symbols for a given objfile.
@@ -48,9 +64,7 @@ struct partial_symbol;
class psymtab_storage
{
public:
-
- psymtab_storage ();
-
+ psymtab_storage () = default;
~psymtab_storage ();
DISABLE_COPY_AND_ASSIGN (psymtab_storage);
@@ -121,7 +135,7 @@ public:
/* A byte cache where we can stash arbitrary "chunks" of bytes that
will not change. */
- gdb::bcache psymbol_cache;
+ psymbol_bcache psymbol_cache;
/* Vectors of all partial symbols read in from file. The actual data
is stored in the objfile_obstack. */