gdb, cp: update add_symbol_overload_list_qualified

Iterate over objfiles in search order using the objfile of the selected
block as current_objfile so the iteration can stay inside the block's
linker namespace.
This commit is contained in:
Markus Metzger
2022-04-26 15:11:09 +02:00
parent 5f0277edf2
commit 2aab243870

View File

@ -1460,30 +1460,30 @@ add_symbol_overload_list_qualified (const char *func_name,
/* Go through the symtabs and check the externs and statics for /* Go through the symtabs and check the externs and statics for
symbols which match. */ symbols which match. */
for (objfile *objfile : current_program_space->objfiles ()) const block *block = get_selected_block (0);
struct objfile *current_objfile = block ? block_objfile (block) : nullptr;
gdbarch_iterate_over_objfiles_in_search_order
(current_objfile ? current_objfile->arch () : target_gdbarch (),
[func_name, surrounding_static_block, &overload_list]
(struct objfile *obj)
{ {
for (compunit_symtab *cust : objfile->compunits ()) for (compunit_symtab *cust : obj->compunits ())
{ {
QUIT; QUIT;
const block *b = cust->blockvector ()->global_block (); const struct block *b = cust->blockvector ()->global_block ();
add_symbol_overload_list_block (func_name, b, overload_list); add_symbol_overload_list_block (func_name, b, overload_list);
}
}
for (objfile *objfile : current_program_space->objfiles ())
{
for (compunit_symtab *cust : objfile->compunits ())
{
QUIT;
const block *b = cust->blockvector ()->static_block ();
b = cust->blockvector ()->static_block ();
/* Don't do this block twice. */ /* Don't do this block twice. */
if (b == surrounding_static_block) if (b == surrounding_static_block)
continue; continue;
add_symbol_overload_list_block (func_name, b, overload_list); add_symbol_overload_list_block (func_name, b, overload_list);
} }
}
return 0;
}, current_objfile);
} }
/* Lookup the rtti type for a class name. */ /* Lookup the rtti type for a class name. */