diff options
author | David Carlton <carlton@bactrian.org> | 2002-12-23 16:43:18 +0000 |
---|---|---|
committer | David Carlton <carlton@bactrian.org> | 2002-12-23 16:43:18 +0000 |
commit | e45febe22eee94c14180d0546f7c8a878a9fabdf (patch) | |
tree | bb427ec4981b319e1e1eb266abbe6aee17136253 /gdb/symtab.c | |
parent | 59f14fc0a3872ce9306832798fbaf1f7f59088ad (diff) | |
download | gdb-e45febe22eee94c14180d0546f7c8a878a9fabdf.zip gdb-e45febe22eee94c14180d0546f7c8a878a9fabdf.tar.gz gdb-e45febe22eee94c14180d0546f7c8a878a9fabdf.tar.bz2 |
2002-12-23 David Carlton <carlton@math.stanford.edu>
* symtab.c (lookup_symbol_aux): Delete 'force_return' variable.
(lookup_symbol_aux_minsyms): Delete 'force_return' argument.
(search_symbols): Call lookup_symbol_aux_minsyms to find debugging
information associated to a minsym, not lookup_symbol.
Diffstat (limited to 'gdb/symtab.c')
-rw-r--r-- | gdb/symtab.c | 67 |
1 files changed, 39 insertions, 28 deletions
diff --git a/gdb/symtab.c b/gdb/symtab.c index badda47..ee10461 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -117,8 +117,7 @@ struct symbol *lookup_symbol_aux_minsyms (const char *name, const char *mangled_name, const namespace_enum namespace, int *is_a_field_of_this, - struct symtab **symtab, - int *force_return); + struct symtab **symtab); static struct symbol *find_active_alias (struct symbol *sym, CORE_ADDR addr); @@ -805,14 +804,6 @@ lookup_symbol_aux (const char *name, const char *mangled_name, struct symbol *sym; const struct block *static_block; - /* FIXME: carlton/2002-11-05: This variable is here so that - lookup_symbol_aux will sometimes return NULL after receiving a - NULL return value from lookup_symbol_aux_minsyms, without - proceeding on to the partial symtab and static variable tests. I - suspect that that's a bad idea. */ - - int force_return; - /* Search specified block and its superiors. Don't search STATIC_BLOCK or GLOBAL_BLOCK. */ @@ -931,13 +922,11 @@ lookup_symbol_aux (const char *name, const char *mangled_name, a mangled variable that is stored in one of the minimal symbol tables. Eventually, all global symbols might be resolved in this way. */ - force_return = 0; - sym = lookup_symbol_aux_minsyms (name, mangled_name, namespace, is_a_field_of_this, - symtab, &force_return); + symtab); - if (sym != NULL || force_return == 1) + if (sym != NULL) return sym; #endif @@ -981,13 +970,11 @@ lookup_symbol_aux (const char *name, const char *mangled_name, */ - force_return = 0; - sym = lookup_symbol_aux_minsyms (name, mangled_name, namespace, is_a_field_of_this, - symtab, &force_return); + symtab); - if (sym != NULL || force_return == 1) + if (sym != NULL) return sym; #endif @@ -1172,13 +1159,20 @@ lookup_symbol_aux_psymtabs (int block_index, const char *name, tables. Eventually, all global symbols might be resolved in this way. */ +/* NOTE: carlton/2002-12-05: At one point, this function was part of + lookup_symbol_aux, and what are now 'return' statements within + lookup_symbol_aux_minsyms returned from lookup_symbol_aux, even if + sym was NULL. As far as I can tell, this was basically accidental; + it didn't happen every time that msymbol was non-NULL, but only if + some additional conditions held as well, and it caused problems + with HP-generated symbol tables. */ + static struct symbol * lookup_symbol_aux_minsyms (const char *name, const char *mangled_name, const namespace_enum namespace, int *is_a_field_of_this, - struct symtab **symtab, - int *force_return) + struct symtab **symtab) { struct symbol *sym; struct blockvector *bv; @@ -1271,7 +1265,6 @@ lookup_symbol_aux_minsyms (const char *name, if (symtab != NULL && sym != NULL) *symtab = s; - *force_return = 1; return fixup_symbol_section (sym, s->objfile); } else if (MSYMBOL_TYPE (msymbol) != mst_text @@ -1280,7 +1273,6 @@ lookup_symbol_aux_minsyms (const char *name, { /* This is a mangled variable, look it up by its mangled name. */ - *force_return = 1; return lookup_symbol_aux (SYMBOL_NAME (msymbol), mangled_name, NULL, namespace, is_a_field_of_this, symtab); @@ -2904,12 +2896,31 @@ search_symbols (char *regexp, namespace_enum kind, int nfiles, char *files[], { if (0 == find_pc_symtab (SYMBOL_VALUE_ADDRESS (msymbol))) { - if (kind == FUNCTIONS_NAMESPACE - || lookup_symbol (SYMBOL_NAME (msymbol), - (struct block *) NULL, - VAR_NAMESPACE, - 0, (struct symtab **) NULL) == NULL) - found_misc = 1; + if (kind == FUNCTIONS_NAMESPACE) + { + found_misc = 1; + } + else + { + struct symbol *sym; + + if (SYMBOL_DEMANGLED_NAME (msymbol) != NULL) + sym + = lookup_symbol_aux_minsyms (SYMBOL_DEMANGLED_NAME + (msymbol), + SYMBOL_NAME (msymbol), + VAR_NAMESPACE, + NULL, NULL); + else + sym + = lookup_symbol_aux_minsyms (SYMBOL_NAME (msymbol), + NULL, + VAR_NAMESPACE, + NULL, NULL); + + if (sym == NULL) + found_misc = 1; + } } } } |