mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-21 07:23:38 +08:00
* objfiles.h (ALL_PRIMARY_SYMTABS): Define.
* ada-lang.c (symtab_for_sym, ada_lookup_symbol_list) (ada_lookup_symbol): Use ALL_PRIMARY_SYMTABS. * cp-support.c (make_symbol_overload_list_qualified): Likewise. * symtab.c (lookup_symbol_aux_block, lookup_symbol_aux_symtabs) (basic_lookup_transparent_type, find_pc_sect_symtab, search_symbols) (make_symbol_completion_list): Likewise.
This commit is contained in:
parent
cb1df416fb
commit
1130965767
@ -1,3 +1,14 @@
|
||||
2007-01-21 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* objfiles.h (ALL_PRIMARY_SYMTABS): Define.
|
||||
|
||||
* ada-lang.c (symtab_for_sym, ada_lookup_symbol_list)
|
||||
(ada_lookup_symbol): Use ALL_PRIMARY_SYMTABS.
|
||||
* cp-support.c (make_symbol_overload_list_qualified): Likewise.
|
||||
* symtab.c (lookup_symbol_aux_block, lookup_symbol_aux_symtabs)
|
||||
(basic_lookup_transparent_type, find_pc_sect_symtab, search_symbols)
|
||||
(make_symbol_completion_list): Likewise.
|
||||
|
||||
2007-01-21 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
|
@ -4120,7 +4120,7 @@ symtab_for_sym (struct symbol *sym)
|
||||
struct dict_iterator iter;
|
||||
int j;
|
||||
|
||||
ALL_SYMTABS (objfile, s)
|
||||
ALL_PRIMARY_SYMTABS (objfile, s)
|
||||
{
|
||||
switch (SYMBOL_CLASS (sym))
|
||||
{
|
||||
@ -4549,11 +4549,9 @@ ada_lookup_symbol_list (const char *name0, const struct block *block0,
|
||||
/* Now add symbols from all global blocks: symbol tables, minimal symbol
|
||||
tables, and psymtab's. */
|
||||
|
||||
ALL_SYMTABS (objfile, s)
|
||||
ALL_PRIMARY_SYMTABS (objfile, s)
|
||||
{
|
||||
QUIT;
|
||||
if (!s->primary)
|
||||
continue;
|
||||
bv = BLOCKVECTOR (s);
|
||||
block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
|
||||
ada_add_block_symbols (&symbol_list_obstack, block, name, namespace,
|
||||
@ -4619,11 +4617,9 @@ ada_lookup_symbol_list (const char *name0, const struct block *block0,
|
||||
if (num_defns_collected (&symbol_list_obstack) == 0)
|
||||
{
|
||||
|
||||
ALL_SYMTABS (objfile, s)
|
||||
ALL_PRIMARY_SYMTABS (objfile, s)
|
||||
{
|
||||
QUIT;
|
||||
if (!s->primary)
|
||||
continue;
|
||||
bv = BLOCKVECTOR (s);
|
||||
block = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
|
||||
ada_add_block_symbols (&symbol_list_obstack, block, name, namespace,
|
||||
@ -4703,7 +4699,7 @@ ada_lookup_symbol (const char *name, const struct block *block0,
|
||||
|
||||
/* Search the list of symtabs for one which contains the
|
||||
address of the start of this block. */
|
||||
ALL_SYMTABS (objfile, s)
|
||||
ALL_PRIMARY_SYMTABS (objfile, s)
|
||||
{
|
||||
bv = BLOCKVECTOR (s);
|
||||
b = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
|
||||
|
@ -750,7 +750,7 @@ make_symbol_overload_list_qualified (const char *func_name)
|
||||
/* Go through the symtabs and check the externs and statics for
|
||||
symbols which match. */
|
||||
|
||||
ALL_SYMTABS (objfile, s)
|
||||
ALL_PRIMARY_SYMTABS (objfile, s)
|
||||
{
|
||||
QUIT;
|
||||
b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), GLOBAL_BLOCK);
|
||||
@ -764,7 +764,7 @@ make_symbol_overload_list_qualified (const char *func_name)
|
||||
}
|
||||
}
|
||||
|
||||
ALL_SYMTABS (objfile, s)
|
||||
ALL_PRIMARY_SYMTABS (objfile, s)
|
||||
{
|
||||
QUIT;
|
||||
b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), STATIC_BLOCK);
|
||||
|
@ -603,6 +603,14 @@ extern void *objfile_data (struct objfile *objfile,
|
||||
ALL_OBJFILES (objfile) \
|
||||
ALL_OBJFILE_SYMTABS (objfile, s)
|
||||
|
||||
/* Traverse all symtabs in all objfiles, skipping included files
|
||||
(which share a blockvector with their primary symtab). */
|
||||
|
||||
#define ALL_PRIMARY_SYMTABS(objfile, s) \
|
||||
ALL_OBJFILES (objfile) \
|
||||
ALL_OBJFILE_SYMTABS (objfile, s) \
|
||||
if ((s)->primary)
|
||||
|
||||
/* Traverse all psymtabs in all objfiles. */
|
||||
|
||||
#define ALL_PSYMTABS(objfile, p) \
|
||||
|
24
gdb/symtab.c
24
gdb/symtab.c
@ -1269,7 +1269,7 @@ lookup_symbol_aux_block (const char *name, const char *linkage_name,
|
||||
{
|
||||
/* Search the list of symtabs for one which contains the
|
||||
address of the start of this block. */
|
||||
ALL_SYMTABS (objfile, s)
|
||||
ALL_PRIMARY_SYMTABS (objfile, s)
|
||||
{
|
||||
bv = BLOCKVECTOR (s);
|
||||
b = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
|
||||
@ -1304,7 +1304,7 @@ lookup_symbol_aux_symtabs (int block_index,
|
||||
const struct block *block;
|
||||
struct symtab *s;
|
||||
|
||||
ALL_SYMTABS (objfile, s)
|
||||
ALL_PRIMARY_SYMTABS (objfile, s)
|
||||
{
|
||||
bv = BLOCKVECTOR (s);
|
||||
block = BLOCKVECTOR_BLOCK (bv, block_index);
|
||||
@ -1719,7 +1719,7 @@ basic_lookup_transparent_type (const char *name)
|
||||
of the desired name as a global, then do psymtab-to-symtab
|
||||
conversion on the fly and return the found symbol. */
|
||||
|
||||
ALL_SYMTABS (objfile, s)
|
||||
ALL_PRIMARY_SYMTABS (objfile, s)
|
||||
{
|
||||
bv = BLOCKVECTOR (s);
|
||||
block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
|
||||
@ -1767,7 +1767,7 @@ basic_lookup_transparent_type (const char *name)
|
||||
conversion on the fly and return the found symbol.
|
||||
*/
|
||||
|
||||
ALL_SYMTABS (objfile, s)
|
||||
ALL_PRIMARY_SYMTABS (objfile, s)
|
||||
{
|
||||
bv = BLOCKVECTOR (s);
|
||||
block = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
|
||||
@ -1944,7 +1944,7 @@ find_pc_sect_symtab (CORE_ADDR pc, asection *section)
|
||||
It also happens for objfiles that have their functions reordered.
|
||||
For these, the symtab we are looking for is not necessarily read in. */
|
||||
|
||||
ALL_SYMTABS (objfile, s)
|
||||
ALL_PRIMARY_SYMTABS (objfile, s)
|
||||
{
|
||||
bv = BLOCKVECTOR (s);
|
||||
b = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
|
||||
@ -2897,7 +2897,6 @@ search_symbols (char *regexp, domain_enum kind, int nfiles, char *files[],
|
||||
struct symtab *s;
|
||||
struct partial_symtab *ps;
|
||||
struct blockvector *bv;
|
||||
struct blockvector *prev_bv = 0;
|
||||
struct block *b;
|
||||
int i = 0;
|
||||
struct dict_iterator iter;
|
||||
@ -3079,15 +3078,9 @@ search_symbols (char *regexp, domain_enum kind, int nfiles, char *files[],
|
||||
}
|
||||
}
|
||||
|
||||
ALL_SYMTABS (objfile, s)
|
||||
ALL_PRIMARY_SYMTABS (objfile, s)
|
||||
{
|
||||
bv = BLOCKVECTOR (s);
|
||||
/* Often many files share a blockvector.
|
||||
Scan each blockvector only once so that
|
||||
we don't get every symbol many times.
|
||||
It happens that the first symtab in the list
|
||||
for any given blockvector is the main file. */
|
||||
if (bv != prev_bv)
|
||||
for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
|
||||
{
|
||||
struct symbol_search *prevtail = tail;
|
||||
@ -3139,7 +3132,6 @@ search_symbols (char *regexp, domain_enum kind, int nfiles, char *files[],
|
||||
tail = sort_search_symbols (prevtail, nfound);
|
||||
}
|
||||
}
|
||||
prev_bv = bv;
|
||||
}
|
||||
|
||||
/* If there are no eyes, avoid all contact. I mean, if there are
|
||||
@ -3704,7 +3696,7 @@ make_symbol_completion_list (char *text, char *word)
|
||||
/* Go through the symtabs and check the externs and statics for
|
||||
symbols which match. */
|
||||
|
||||
ALL_SYMTABS (objfile, s)
|
||||
ALL_PRIMARY_SYMTABS (objfile, s)
|
||||
{
|
||||
QUIT;
|
||||
b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), GLOBAL_BLOCK);
|
||||
@ -3714,7 +3706,7 @@ make_symbol_completion_list (char *text, char *word)
|
||||
}
|
||||
}
|
||||
|
||||
ALL_SYMTABS (objfile, s)
|
||||
ALL_PRIMARY_SYMTABS (objfile, s)
|
||||
{
|
||||
QUIT;
|
||||
b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), STATIC_BLOCK);
|
||||
|
Loading…
Reference in New Issue
Block a user