diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 024a139e966..7efd70538b7 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +2012-06-03 Doug Evans + + * 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 * symtab.c (symbol_demangled_name): New variable `dem_name'. Use diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 8dbc53e9111..23779ac821a 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -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; } diff --git a/gdb/linespec.c b/gdb/linespec.c index e678dfa1008..ccafe59c9e9 100644 --- a/gdb/linespec.c +++ b/gdb/linespec.c @@ -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); } } } diff --git a/gdb/objfiles.h b/gdb/objfiles.h index d5c807f2c38..98cc39ee7e7 100644 --- a/gdb/objfiles.h +++ b/gdb/objfiles.h @@ -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. */ diff --git a/gdb/symtab.c b/gdb/symtab.c index 5eb7ced1870..5d539595f86 100644 --- a/gdb/symtab.c +++ b/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)