Removing lookup_minimal_symbol_and_objfile

Function lookup_minimal_symbol_and_objfile iterates on all objfiles and
calls lookup_minimal_symbol for each of them, effectively searching in all
objfiles.  lookup_bound_minimal_symbol calls lookup_minimal_symbol with NULL,
which also effectively searches all objfiles.  AFAIK, they do exactly the same
thing, so we can get rid of one (and lookup_minimal_symbol_and_objfile happens
to be the most inefficient because it ends up n^2 on the number of objfiles).

Tested in both aarch64-linux-gnu and amd64-linux-gnu. No regressions.
This commit is contained in:
Weimin Pan 2018-05-29 22:01:34 +00:00
parent e7ec8713ec
commit 64cc34d870
7 changed files with 15 additions and 28 deletions

View File

@ -1,3 +1,13 @@
2018-05-29 Weimin Pan <weimin.pan@oracle.com>
* minsyms.h (lookup_minimal_symbol_and_objfile): Remove declaration.
* minsyms.c (lookup_minimal_symbol_and_objfile): Remove definition.
* coff-pe-read.c (add_pe_forwarded_sym): Replace
lookup_minimal_symbol_and_objfile with lookup_bound_minimal_symbol.
* glibc-tdep.c (glibc_skip_solib_resolver): Likewise.
* jit.c (jit_breakpoint_re_set_internal): Likewise.
* printcmd.c (info_address_command): Likewise.
2018-05-29 Tom Tromey <tom@tromey.com> 2018-05-29 Tom Tromey <tom@tromey.com>
* windows-nat.c (handle_exception): Update fall-through comment. * windows-nat.c (handle_exception): Update fall-through comment.

View File

@ -220,7 +220,7 @@ add_pe_forwarded_sym (minimal_symbol_reader &reader,
forward_func_name); forward_func_name);
msymbol = lookup_minimal_symbol_and_objfile (forward_qualified_name); msymbol = lookup_bound_minimal_symbol (forward_qualified_name);
if (!msymbol.minsym) if (!msymbol.minsym)
{ {
@ -228,7 +228,7 @@ add_pe_forwarded_sym (minimal_symbol_reader &reader,
for (i = 0; i < forward_dll_name_len; i++) for (i = 0; i < forward_dll_name_len; i++)
forward_qualified_name[i] = tolower (forward_qualified_name[i]); forward_qualified_name[i] = tolower (forward_qualified_name[i]);
msymbol = lookup_minimal_symbol_and_objfile (forward_qualified_name); msymbol = lookup_bound_minimal_symbol (forward_qualified_name);
} }
if (!msymbol.minsym) if (!msymbol.minsym)

View File

@ -54,7 +54,7 @@ glibc_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
debugging programs that use shared libraries. */ debugging programs that use shared libraries. */
struct bound_minimal_symbol resolver struct bound_minimal_symbol resolver
= lookup_minimal_symbol_and_objfile ("_dl_runtime_resolve"); = lookup_bound_minimal_symbol ("_dl_runtime_resolve");
if (resolver.minsym) if (resolver.minsym)
{ {

View File

@ -1041,7 +1041,7 @@ jit_breakpoint_re_set_internal (struct gdbarch *gdbarch,
{ {
/* Lookup the registration symbol. If it is missing, then we /* Lookup the registration symbol. If it is missing, then we
assume we are not attached to a JIT. */ assume we are not attached to a JIT. */
reg_symbol = lookup_minimal_symbol_and_objfile (jit_break_name); reg_symbol = lookup_bound_minimal_symbol (jit_break_name);
if (reg_symbol.minsym == NULL if (reg_symbol.minsym == NULL
|| BMSYMBOL_VALUE_ADDRESS (reg_symbol) == 0) || BMSYMBOL_VALUE_ADDRESS (reg_symbol) == 0)
return 1; return 1;

View File

@ -990,24 +990,6 @@ static const struct gnu_ifunc_fns stub_gnu_ifunc_fns =
const struct gnu_ifunc_fns *gnu_ifunc_fns_p = &stub_gnu_ifunc_fns; const struct gnu_ifunc_fns *gnu_ifunc_fns_p = &stub_gnu_ifunc_fns;
/* See minsyms.h. */
struct bound_minimal_symbol
lookup_minimal_symbol_and_objfile (const char *name)
{
struct bound_minimal_symbol result;
struct objfile *objfile;
ALL_OBJFILES (objfile)
{
result = lookup_minimal_symbol (name, NULL, objfile);
if (result.minsym != NULL)
return result;
}
memset (&result, 0, sizeof (result));
return result;
}
/* Return leading symbol character for a BFD. If BFD is NULL, /* Return leading symbol character for a BFD. If BFD is NULL,

View File

@ -202,11 +202,6 @@ struct bound_minimal_symbol lookup_minimal_symbol (const char *,
struct bound_minimal_symbol lookup_bound_minimal_symbol (const char *); struct bound_minimal_symbol lookup_bound_minimal_symbol (const char *);
/* Find the minimal symbol named NAME, and return both the minsym
struct and its objfile. */
struct bound_minimal_symbol lookup_minimal_symbol_and_objfile (const char *);
/* Look through all the current minimal symbol tables and find the /* Look through all the current minimal symbol tables and find the
first minimal symbol that matches NAME and has text type. If OBJF first minimal symbol that matches NAME and has text type. If OBJF
is non-NULL, limit the search to that objfile. Returns a bound is non-NULL, limit the search to that objfile. Returns a bound

View File

@ -1549,7 +1549,7 @@ info_address_command (const char *exp, int from_tty)
{ {
struct bound_minimal_symbol msym; struct bound_minimal_symbol msym;
msym = lookup_minimal_symbol_and_objfile (SYMBOL_LINKAGE_NAME (sym)); msym = lookup_bound_minimal_symbol (SYMBOL_LINKAGE_NAME (sym));
if (msym.minsym == NULL) if (msym.minsym == NULL)
printf_filtered ("unresolved"); printf_filtered ("unresolved");
else else