aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/symtab.c27
2 files changed, 10 insertions, 22 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index dce6f50..1aedd24 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@
2003-02-24 David Carlton <carlton@math.stanford.edu>
+ * symtab.c (make_symbol_overload_list): Only read in partial
+ symtabs containing a matching partial symbol.
+
+2003-02-24 David Carlton <carlton@math.stanford.edu>
+
* symtab.c (lookup_partial_symbol): Use strcmp_iw_ordered to
do the comparison, not strcmp.
* symfile.c (compare_psymbols): Ditto.
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 1b1e375..cb5ba7f 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -3995,8 +3995,8 @@ make_symbol_overload_list (struct symbol *fsym)
sym_return_val = (struct symbol **) xmalloc ((sym_return_val_size + 1) * sizeof (struct symbol *));
sym_return_val[0] = NULL;
- /* Look through the partial symtabs for all symbols which begin
- by matching OLOAD_NAME. Make sure we read that symbol table in. */
+ /* Read in all partial symtabs containing a partial symbol named
+ OLOAD_NAME. */
ALL_PSYMTABS (objfile, ps)
{
@@ -4007,26 +4007,9 @@ make_symbol_overload_list (struct symbol *fsym)
if (ps->readin)
continue;
- for (psym = objfile->global_psymbols.list + ps->globals_offset;
- psym < (objfile->global_psymbols.list + ps->globals_offset
- + ps->n_global_syms);
- psym++)
- {
- /* If interrupted, then quit. */
- QUIT;
- /* This will cause the symbol table to be read if it has not yet been */
- s = PSYMTAB_TO_SYMTAB (ps);
- }
-
- for (psym = objfile->static_psymbols.list + ps->statics_offset;
- psym < (objfile->static_psymbols.list + ps->statics_offset
- + ps->n_static_syms);
- psym++)
- {
- QUIT;
- /* This will cause the symbol table to be read if it has not yet been */
- s = PSYMTAB_TO_SYMTAB (ps);
- }
+ if ((lookup_partial_symbol (ps, oload_name, 1, VAR_NAMESPACE) != NULL)
+ || (lookup_partial_symbol (ps, oload_name, 0, VAR_NAMESPACE) != NULL))
+ PSYMTAB_TO_SYMTAB (ps);
}
/* Search upwards from currently selected frame (so that we can