return table;
}
- struct compunit_symtab *find_compunit_symtab_by_address
+ struct symbol *find_symbol_by_address
(struct objfile *objfile, CORE_ADDR address) override;
bool has_unexpanded_symtabs (struct objfile *objfile) override
return die;
}
-struct compunit_symtab *
-cooked_index_functions::find_compunit_symtab_by_address
+struct symbol *
+cooked_index_functions::find_symbol_by_address
(struct objfile *objfile, CORE_ADDR address)
{
if (objfile->sect_index_data == -1)
if (per_cu == nullptr)
return nullptr;
- return dw2_instantiate_symtab (per_cu, per_objfile, false);
+ struct compunit_symtab *cu = dw2_instantiate_symtab (per_cu, per_objfile,
+ false);
+ return cu->symbol_at_address (address);
}
bool
CORE_ADDR pc, struct obj_section *section, int warn_if_readin)
override;
- struct compunit_symtab *find_compunit_symtab_by_address
+ struct symbol *find_symbol_by_address
(struct objfile *objfile, CORE_ADDR address) override
{
return nullptr;
void compute_main_name ();
/* See quick_symbol_functions. */
- struct compunit_symtab *find_compunit_symtab_by_address (CORE_ADDR address);
+ struct symbol *find_symbol_by_address (CORE_ADDR address);
/* See quick_symbol_functions. */
enum language lookup_global_symbol_language (const char *name,
(struct objfile *objfile, bound_minimal_symbol msymbol, CORE_ADDR pc,
struct obj_section *section, int warn_if_readin) override;
- struct compunit_symtab *find_compunit_symtab_by_address
+ struct symbol *find_symbol_by_address
(struct objfile *objfile, CORE_ADDR address) override
{
return nullptr;
(struct objfile *objfile, bound_minimal_symbol msymbol, CORE_ADDR pc,
struct obj_section *section, int warn_if_readin) = 0;
- /* Return the comp unit from OBJFILE that contains a symbol at
- ADDRESS. Return NULL if there is no such comp unit. Unlike
- find_pc_sect_compunit_symtab, any sort of symbol (not just text
- symbols) can be considered, and only exact address matches are
- considered. */
- virtual struct compunit_symtab *find_compunit_symtab_by_address
+ /* Return the symbol from OBJFILE at ADDRESS. Return NULL if there is
+ no such symbol. Any sort of symbol (not just text symbols) can be
+ considered, and only exact address matches are considered. */
+ virtual struct symbol *find_symbol_by_address
(struct objfile *objfile, CORE_ADDR address) = 0;
/* Call FUN for every file defined in OBJFILE whose symtab is
iter->compute_main_name (this);
}
-struct compunit_symtab *
-objfile::find_compunit_symtab_by_address (CORE_ADDR address)
+struct symbol *
+objfile::find_symbol_by_address (CORE_ADDR address)
{
if (debug_symfile)
gdb_printf (gdb_stdlog,
- "qf->find_compunit_symtab_by_address (%s, %s)\n",
+ "qf->find_symbol_by_address (%s, %s)\n",
objfile_debug_name (this),
hex_string (address));
- struct compunit_symtab *result = NULL;
+ struct symbol *result = NULL;
for (const auto &iter : qf)
{
- result = iter->find_compunit_symtab_by_address (this, address);
+ result = iter->find_symbol_by_address (this, address);
if (result != nullptr)
break;
}
if (debug_symfile)
gdb_printf (gdb_stdlog,
- "qf->find_compunit_symtab_by_address (...) = %s\n",
+ "qf->find_symbol_by_address (...) = %s\n",
result
- ? debug_symtab_name (result->primary_filetab ())
+ ? result->print_name ()
: "NULL");
return result;
}
else
{
- struct compunit_symtab *symtab
- = objfile.find_compunit_symtab_by_address (address);
- if (symtab != NULL)
- {
- struct symbol *sym = symtab->symbol_at_address (address);
- if (sym != nullptr)
- return sym;
- }
+ struct symbol *sym = objfile.find_symbol_by_address (address);
+ if (sym != nullptr)
+ return sym;
}
}