From Tom Tromey <tromey@cygnus.com> and Keith Seitz <?>:

* minsyms.c: #include <ctype.h>, for msymbol_hash_iw.
(compact_minimal_symbols): Added `objfile' argument.
Put symbols in the objfile's hash table.
(install_minimal_symbols): Put symbols in the objfile's demangled
hash table.
(lookup_minimal_symbol): Use hash table to find symbol in
objfile.
(msymbol_hash_iw, msymbol_hash, add_minsym_to_hash_table): New
functions.
(prim_record_minimal_symbol_and_info): Initialize the
hash link fields of the new minimal symbol.
* symtab.h (struct minimal_symbol): New fields `hash_next',
`demangled_hash_next'.
(msymbol_hash_iw, msymbol_hash, add_minsym_to_hash_table): Declare.
* objfiles.h (MINIMAL_SYMBOL_HASH_SIZE): New define.
(struct objfile): New fields `msymbol_hash',
`msymbol_demangled_hash'.
This commit is contained in:
Jim Blandy
2000-03-07 04:33:52 +00:00
parent ded0aeb791
commit 9227b5eb3d
4 changed files with 137 additions and 8 deletions

View File

@ -1,5 +1,5 @@
/* Definitions for symbol file management in GDB.
Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
Copyright (C) 1992, 1993, 1994, 1995, 1999 Free Software Foundation, Inc.
This file is part of GDB.
@ -200,6 +200,9 @@ struct objstats
extern void print_objfile_statistics PARAMS ((void));
extern void print_symbol_bcache_statistics PARAMS ((void));
/* Number of entries in the minimal symbol hash table. */
#define MINIMAL_SYMBOL_HASH_SIZE 349
/* Master structure for keeping track of each file from which
gdb reads symbols. There are several ways these get allocated: 1.
The main symbol file, symfile_objfile, set by the symbol-file command,
@ -292,6 +295,15 @@ struct objfile
struct minimal_symbol *msymbols;
int minimal_symbol_count;
/* This is a hash table used to index the minimal symbols by name. */
struct minimal_symbol *msymbol_hash[MINIMAL_SYMBOL_HASH_SIZE];
/* This hash table is used to index the minimal symbols by their
demangled names. */
struct minimal_symbol *msymbol_demangled_hash[MINIMAL_SYMBOL_HASH_SIZE];
/* For object file formats which don't specify fundamental types, gdb
can create such types. For now, it maintains a vector of pointers
to these internally created fundamental types on a per objfile basis,