aboutsummaryrefslogtreecommitdiff
path: root/gdb/psymtab.c
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.c
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.c')
-rw-r--r--gdb/psymtab.c27
1 files changed, 6 insertions, 21 deletions
diff --git a/gdb/psymtab.c b/gdb/psymtab.c
index 59db469..5791cd1 100644
--- a/gdb/psymtab.c
+++ b/gdb/psymtab.c
@@ -53,16 +53,6 @@ static struct partial_symbol *find_pc_sect_psymbol (struct objfile *,
static struct compunit_symtab *psymtab_to_symtab (struct objfile *objfile,
struct partial_symtab *pst);
-
-
-static unsigned long psymbol_hash (const void *addr, int length);
-static int psymbol_compare (const void *addr1, const void *addr2, int length);
-
-psymtab_storage::psymtab_storage ()
- : psymbol_cache (psymbol_hash, psymbol_compare)
-{
-}
-
psymtab_storage::~psymtab_storage ()
{
partial_symtab *iter = psymtabs;
@@ -1537,13 +1527,10 @@ end_psymtab_common (struct objfile *objfile, struct partial_symtab *pst)
sort_pst_symbols (objfile, pst);
}
-/* 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. */
+/* See psymtab.h. */
-static unsigned long
-psymbol_hash (const void *addr, int length)
+unsigned long
+psymbol_bcache::hash (const void *addr, int length)
{
unsigned long h = 0;
struct partial_symbol *psymbol = (struct partial_symbol *) addr;
@@ -1562,12 +1549,10 @@ psymbol_hash (const void *addr, int length)
return h;
}
-/* Returns true if the symbol at addr1 equals the symbol at addr2.
- For the comparison this function uses a symbols value,
- language, domain, class and name. */
+/* See psymtab.h. */
-static int
-psymbol_compare (const void *addr1, const void *addr2, int length)
+int
+psymbol_bcache::compare (const void *addr1, const void *addr2, int length)
{
struct partial_symbol *sym1 = (struct partial_symbol *) addr1;
struct partial_symbol *sym2 = (struct partial_symbol *) addr2;