aboutsummaryrefslogtreecommitdiff
path: root/gdb/psymtab.c
diff options
context:
space:
mode:
authorDoug Evans <xdje42@gmail.com>2014-11-18 08:08:00 -0800
committerDoug Evans <xdje42@gmail.com>2014-11-18 08:08:00 -0800
commitf194fefb5e345e8c3b55de1d957bc6d7b95667ad (patch)
treedcf1e5db1ae8b7e731859f490e23f06155c666d0 /gdb/psymtab.c
parent6937bb54a9c3ddc7ba330bc18af76f8dbe856ac3 (diff)
downloadgdb-f194fefb5e345e8c3b55de1d957bc6d7b95667ad.zip
gdb-f194fefb5e345e8c3b55de1d957bc6d7b95667ad.tar.gz
gdb-f194fefb5e345e8c3b55de1d957bc6d7b95667ad.tar.bz2
The result of symtab expansion is always a primary symtab.
gdb/ChangeLog: * dwarf2read.c (dw2_instantiate_symtab): Add assert. (dw2_lookup_symbol): Remove unnecessary test for primary symbol table. * psymtab.c (lookup_symbol_aux_psymtabs): Ditto. (psymtab_to_symtab): Add comment and assert. (map_matching_symbols_psymtab): Remove unnecessary test for non-primary symtab.
Diffstat (limited to 'gdb/psymtab.c')
-rw-r--r--gdb/psymtab.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/gdb/psymtab.c b/gdb/psymtab.c
index 2514b55..9cfc2c1 100644
--- a/gdb/psymtab.c
+++ b/gdb/psymtab.c
@@ -510,17 +510,16 @@ lookup_symbol_aux_psymtabs (struct objfile *objfile,
{
struct symbol *sym = NULL;
struct symtab *stab = psymtab_to_symtab (objfile, ps);
+ /* Note: While psymtab_to_symtab can return NULL if the partial symtab
+ is empty, we can assume it won't here because lookup_partial_symbol
+ succeeded. */
+ const struct blockvector *bv = BLOCKVECTOR (stab);
+ struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
/* Some caution must be observed with overloaded functions
and methods, since the psymtab will not contain any overload
information (but NAME might contain it). */
- if (stab->primary)
- {
- const struct blockvector *bv = BLOCKVECTOR (stab);
- struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
-
- sym = block_lookup_symbol (block, name, domain);
- }
+ sym = block_lookup_symbol (block, name, domain);
if (sym && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
{
@@ -756,7 +755,10 @@ lookup_partial_symbol (struct objfile *objfile,
}
/* Get the symbol table that corresponds to a partial_symtab.
- This is fast after the first time you do it. */
+ This is fast after the first time you do it.
+ The result will be NULL if the primary symtab has no symbols,
+ which can happen. Otherwise the result is the primary symtab
+ that contains PST. */
static struct symtab *
psymtab_to_symtab (struct objfile *objfile, struct partial_symtab *pst)
@@ -779,6 +781,9 @@ psymtab_to_symtab (struct objfile *objfile, struct partial_symtab *pst)
do_cleanups (back_to);
}
+ if (pst->symtab != NULL)
+ gdb_assert (pst->symtab->primary);
+
return pst->symtab;
}
@@ -1259,7 +1264,7 @@ map_matching_symbols_psymtab (struct objfile *objfile,
struct symtab *s = psymtab_to_symtab (objfile, ps);
struct block *block;
- if (s == NULL || !s->primary)
+ if (s == NULL)
continue;
block = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), block_kind);
if (map_block (name, namespace, objfile, block,