/* See minsyms.h. */
+struct bound_minimal_symbol
+lookup_minimal_symbol_linkage (const char *name, bool only_main)
+{
+ for (objfile *objfile : current_program_space->objfiles ())
+ {
+ if (objfile->separate_debug_objfile_backlink != nullptr)
+ continue;
+
+ if (only_main && (objfile->flags & OBJF_MAINLINE) == 0)
+ continue;
+
+ bound_minimal_symbol minsym = lookup_minimal_symbol_linkage (name,
+ objfile);
+ if (minsym.minsym != nullptr)
+ return minsym;
+ }
+
+ return {};
+}
+
+/* See minsyms.h. */
+
struct bound_minimal_symbol
lookup_minimal_symbol_text (const char *name, struct objfile *objf)
{
(const char *name, struct objfile *objf)
ATTRIBUTE_NONNULL (1) ATTRIBUTE_NONNULL (2);
+/* A variant of lookup_minimal_symbol_linkage that iterates over all
+ objfiles. If ONLY_MAIN is true, then only an objfile with
+ OBJF_MAINLINE will be considered. */
+
+extern struct bound_minimal_symbol lookup_minimal_symbol_linkage
+ (const char *name, bool only_main)
+ ATTRIBUTE_NONNULL (1);
+
/* Look through all the current minimal symbol tables and find the
first minimal symbol that matches NAME and PC. If OBJF is non-NULL,
limit the search to that objfile. Returns a pointer to the minimal
gdb_assert (sym->aclass () == LOC_STATIC);
const char *linkage_name = sym->linkage_name ();
-
- for (objfile *objfile : current_program_space->objfiles ())
- {
- if (objfile->separate_debug_objfile_backlink != nullptr)
- continue;
-
- bound_minimal_symbol minsym
- = lookup_minimal_symbol_linkage (linkage_name, objfile);
- if (minsym.minsym != nullptr)
- return minsym.value_address ();
- }
+ bound_minimal_symbol minsym = lookup_minimal_symbol_linkage (linkage_name,
+ false);
+ if (minsym.minsym != nullptr)
+ return minsym.value_address ();
return sym->m_value.address;
}
gdb_assert ((objf->flags & OBJF_MAINLINE) == 0);
const char *linkage_name = minsym->linkage_name ();
-
- for (objfile *objfile : current_program_space->objfiles ())
- {
- if (objfile->separate_debug_objfile_backlink == nullptr
- && (objfile->flags & OBJF_MAINLINE) != 0)
- {
- bound_minimal_symbol found
- = lookup_minimal_symbol_linkage (linkage_name, objfile);
- if (found.minsym != nullptr)
- return found.value_address ();
- }
- }
+ bound_minimal_symbol found = lookup_minimal_symbol_linkage (linkage_name,
+ true);
+ if (found.minsym != nullptr)
+ return found.value_address ();
return (minsym->m_value.address
+ objf->section_offsets[minsym->section_index ()]);
}