diff options
author | Doug Evans <dje@google.com> | 2012-06-04 02:57:28 +0000 |
---|---|---|
committer | Doug Evans <dje@google.com> | 2012-06-04 02:57:28 +0000 |
commit | d790cf0a9cd4ac9c90668788215bb0b7f0095387 (patch) | |
tree | 9f0bb4ab0f1b3f82a49dbabada5d66e814c05912 /gdb | |
parent | bb3a4c10194fcd2be8963749de7a6b88b6deb2c1 (diff) | |
download | gdb-d790cf0a9cd4ac9c90668788215bb0b7f0095387.zip gdb-d790cf0a9cd4ac9c90668788215bb0b7f0095387.tar.gz gdb-d790cf0a9cd4ac9c90668788215bb0b7f0095387.tar.bz2 |
* 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.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 10 | ||||
-rw-r--r-- | gdb/dwarf2read.c | 17 | ||||
-rw-r--r-- | gdb/linespec.c | 31 | ||||
-rw-r--r-- | gdb/objfiles.h | 12 | ||||
-rw-r--r-- | gdb/symtab.c | 44 |
5 files changed, 61 insertions, 53 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 024a139..7efd705 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -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 diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 8dbc53e..23779ac 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 e678dfa..ccafe59 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 d5c807f..98cc39e 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 5eb7ced..5d53959 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) |