summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Evans <dje@google.com>2012-06-04 02:57:26 +0000
committerDoug Evans <dje@google.com>2012-06-04 02:57:26 +0000
commitdd3e83238802b09fada91b3987ee69a32a11d73b (patch)
tree53cc8a4c9c1895fde01e5bd6bdd21c8d59f6eb22
parentad064eb42448f46eda90bd9a470916ce594534d4 (diff)
downloadgdb-dd3e83238802b09fada91b3987ee69a32a11d73b.tar.gz
* 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.
-rw-r--r--gdb/ChangeLog10
-rw-r--r--gdb/dwarf2read.c17
-rw-r--r--gdb/linespec.c31
-rw-r--r--gdb/objfiles.h12
-rw-r--r--gdb/symtab.c44
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 <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 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)