From d790cf0a9cd4ac9c90668788215bb0b7f0095387 Mon Sep 17 00:00:00 2001 From: Doug Evans Date: Mon, 4 Jun 2012 02:57:28 +0000 Subject: [PATCH] * 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. --- gdb/ChangeLog | 10 ++++++++++ gdb/dwarf2read.c | 17 ++++++++--------- gdb/linespec.c | 31 ++++++++++++++----------------- gdb/objfiles.h | 12 ++++++++---- gdb/symtab.c | 44 +++++++++++++++++++++----------------------- 5 files changed, 61 insertions(+), 53 deletions(-) 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; + struct block *block; - block = BLOCKVECTOR_BLOCK (BLOCKVECTOR (symtab), STATIC_BLOCK); - LA_ITERATE_OVER_SYMBOLS (block, name, domain, callback, data); + block = BLOCKVECTOR_BLOCK (BLOCKVECTOR (symtab), STATIC_BLOCK); + LA_ITERATE_OVER_SYMBOLS (block, name, domain, callback, data); - if (include_inline) - { - struct symbol_and_data_callback cad = { callback, data }; - int i; + if (include_inline) + { + 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); - } + 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); } } } 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) -- 2.30.2