mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-03 04:12:10 +08:00
* objfiles.h (ALL_OBJFILE_PRIMARY_SYMTABS): New macro.
(ALL_PRIMARY_SYMTABS): Use it. (ALL_PSPACE_PRIMARY_SYMTABS): Ditto. * dwarf2read.c (dw2_find_symbol_file): Ditto. * linespec.c (iterate_over_all_matching_symtabs): Ditto. * symtab.c (lookup_symbol_aux_objfile): Ditto. (basic_lookup_transparent_type): Ditto.
This commit is contained in:
parent
bb3a4c1019
commit
d790cf0a9c
@ -1,3 +1,13 @@
|
||||
2012-06-03 Doug Evans <dje@google.com>
|
||||
|
||||
* objfiles.h (ALL_OBJFILE_PRIMARY_SYMTABS): New macro.
|
||||
(ALL_PRIMARY_SYMTABS): Use it.
|
||||
(ALL_PSPACE_PRIMARY_SYMTABS): Ditto.
|
||||
* dwarf2read.c (dw2_find_symbol_file): Ditto.
|
||||
* linespec.c (iterate_over_all_matching_symtabs): Ditto.
|
||||
* symtab.c (lookup_symbol_aux_objfile): Ditto.
|
||||
(basic_lookup_transparent_type): Ditto.
|
||||
|
||||
2012-06-02 Sergio Durigan Junior <sergiodj@redhat.com>
|
||||
|
||||
* symtab.c (symbol_demangled_name): New variable `dem_name'. Use
|
||||
|
@ -2842,16 +2842,15 @@ dw2_find_symbol_file (struct objfile *objfile, const char *name)
|
||||
{
|
||||
struct symtab *s;
|
||||
|
||||
ALL_OBJFILE_SYMTABS (objfile, s)
|
||||
if (s->primary)
|
||||
{
|
||||
struct blockvector *bv = BLOCKVECTOR (s);
|
||||
const struct block *block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
|
||||
struct symbol *sym = lookup_block_symbol (block, name, VAR_DOMAIN);
|
||||
ALL_OBJFILE_PRIMARY_SYMTABS (objfile, s)
|
||||
{
|
||||
struct blockvector *bv = BLOCKVECTOR (s);
|
||||
const struct block *block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
|
||||
struct symbol *sym = lookup_block_symbol (block, name, VAR_DOMAIN);
|
||||
|
||||
if (sym)
|
||||
return sym->symtab->filename;
|
||||
}
|
||||
if (sym)
|
||||
return sym->symtab->filename;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -987,27 +987,24 @@ iterate_over_all_matching_symtabs (struct linespec_state *state,
|
||||
ALL_DOMAIN,
|
||||
&matcher_data);
|
||||
|
||||
ALL_OBJFILE_SYMTABS (objfile, symtab)
|
||||
ALL_OBJFILE_PRIMARY_SYMTABS (objfile, symtab)
|
||||
{
|
||||
if (symtab->primary)
|
||||
struct block *block;
|
||||
|
||||
block = BLOCKVECTOR_BLOCK (BLOCKVECTOR (symtab), STATIC_BLOCK);
|
||||
LA_ITERATE_OVER_SYMBOLS (block, name, domain, callback, data);
|
||||
|
||||
if (include_inline)
|
||||
{
|
||||
struct block *block;
|
||||
struct symbol_and_data_callback cad = { callback, data };
|
||||
int i;
|
||||
|
||||
block = BLOCKVECTOR_BLOCK (BLOCKVECTOR (symtab), STATIC_BLOCK);
|
||||
LA_ITERATE_OVER_SYMBOLS (block, name, domain, callback, data);
|
||||
|
||||
if (include_inline)
|
||||
for (i = FIRST_LOCAL_BLOCK;
|
||||
i < BLOCKVECTOR_NBLOCKS (BLOCKVECTOR (symtab)); i++)
|
||||
{
|
||||
struct symbol_and_data_callback cad = { callback, data };
|
||||
int i;
|
||||
|
||||
for (i = FIRST_LOCAL_BLOCK;
|
||||
i < BLOCKVECTOR_NBLOCKS (BLOCKVECTOR (symtab)); i++)
|
||||
{
|
||||
block = BLOCKVECTOR_BLOCK (BLOCKVECTOR (symtab), i);
|
||||
LA_ITERATE_OVER_SYMBOLS (block, name, domain,
|
||||
iterate_inline_only, &cad);
|
||||
}
|
||||
block = BLOCKVECTOR_BLOCK (BLOCKVECTOR (symtab), i);
|
||||
LA_ITERATE_OVER_SYMBOLS (block, name, domain,
|
||||
iterate_inline_only, &cad);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -556,6 +556,12 @@ extern int gdb_bfd_close_or_warn (struct bfd *abfd);
|
||||
#define ALL_OBJFILE_SYMTABS(objfile, s) \
|
||||
for ((s) = (objfile) -> symtabs; (s) != NULL; (s) = (s) -> next)
|
||||
|
||||
/* Traverse all primary symtabs in one objfile. */
|
||||
|
||||
#define ALL_OBJFILE_PRIMARY_SYMTABS(objfile, s) \
|
||||
ALL_OBJFILE_SYMTABS ((objfile), (s)) \
|
||||
if ((s)->primary)
|
||||
|
||||
/* Traverse all minimal symbols in one objfile. */
|
||||
|
||||
#define ALL_OBJFILE_MSYMBOLS(objfile, m) \
|
||||
@ -578,13 +584,11 @@ extern int gdb_bfd_close_or_warn (struct bfd *abfd);
|
||||
|
||||
#define ALL_PRIMARY_SYMTABS(objfile, s) \
|
||||
ALL_OBJFILES (objfile) \
|
||||
ALL_OBJFILE_SYMTABS (objfile, s) \
|
||||
if ((s)->primary)
|
||||
ALL_OBJFILE_PRIMARY_SYMTABS (objfile, s)
|
||||
|
||||
#define ALL_PSPACE_PRIMARY_SYMTABS(pspace, objfile, s) \
|
||||
ALL_PSPACE_OBJFILES (ss, objfile) \
|
||||
ALL_OBJFILE_SYMTABS (objfile, s) \
|
||||
if ((s)->primary)
|
||||
ALL_OBJFILE_PRIMARY_SYMTABS (objfile, s)
|
||||
|
||||
/* Traverse all minimal symbols in all objfiles in the current symbol
|
||||
space. */
|
||||
|
44
gdb/symtab.c
44
gdb/symtab.c
@ -1517,18 +1517,17 @@ lookup_symbol_aux_objfile (struct objfile *objfile, int block_index,
|
||||
objfile->sf->qf->pre_expand_symtabs_matching (objfile, block_index,
|
||||
name, domain);
|
||||
|
||||
ALL_OBJFILE_SYMTABS (objfile, s)
|
||||
if (s->primary)
|
||||
{
|
||||
bv = BLOCKVECTOR (s);
|
||||
block = BLOCKVECTOR_BLOCK (bv, block_index);
|
||||
sym = lookup_block_symbol (block, name, domain);
|
||||
if (sym)
|
||||
{
|
||||
block_found = block;
|
||||
return fixup_symbol_section (sym, objfile);
|
||||
}
|
||||
}
|
||||
ALL_OBJFILE_PRIMARY_SYMTABS (objfile, s)
|
||||
{
|
||||
bv = BLOCKVECTOR (s);
|
||||
block = BLOCKVECTOR_BLOCK (bv, block_index);
|
||||
sym = lookup_block_symbol (block, name, domain);
|
||||
if (sym)
|
||||
{
|
||||
block_found = block;
|
||||
return fixup_symbol_section (sym, objfile);
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
@ -1829,17 +1828,16 @@ basic_lookup_transparent_type (const char *name)
|
||||
GLOBAL_BLOCK,
|
||||
name, STRUCT_DOMAIN);
|
||||
|
||||
ALL_OBJFILE_SYMTABS (objfile, s)
|
||||
if (s->primary)
|
||||
{
|
||||
bv = BLOCKVECTOR (s);
|
||||
block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
|
||||
sym = lookup_block_symbol (block, name, STRUCT_DOMAIN);
|
||||
if (sym && !TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
|
||||
{
|
||||
return SYMBOL_TYPE (sym);
|
||||
}
|
||||
}
|
||||
ALL_OBJFILE_PRIMARY_SYMTABS (objfile, s)
|
||||
{
|
||||
bv = BLOCKVECTOR (s);
|
||||
block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
|
||||
sym = lookup_block_symbol (block, name, STRUCT_DOMAIN);
|
||||
if (sym && !TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
|
||||
{
|
||||
return SYMBOL_TYPE (sym);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ALL_OBJFILES (objfile)
|
||||
|
Loading…
Reference in New Issue
Block a user