PR symtab/11198:
* symtab.h (lookup_minimal_symbol_and_objfile): Declare. * minsyms.c (lookup_minimal_symbol_and_objfile): New function. * glibc-tdep.c (find_minsym_and_objfile): Remove. (glibc_skip_solib_resolver): Use lookup_minimal_symbol_and_objfile.
This commit is contained in:
parent
8b315be588
commit
0d5392b8b1
|
@ -1,3 +1,12 @@
|
|||
2010-01-21 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
PR symtab/11198:
|
||||
* symtab.h (lookup_minimal_symbol_and_objfile): Declare.
|
||||
* minsyms.c (lookup_minimal_symbol_and_objfile): New function.
|
||||
* glibc-tdep.c (find_minsym_and_objfile): Remove.
|
||||
(glibc_skip_solib_resolver): Use
|
||||
lookup_minimal_symbol_and_objfile.
|
||||
|
||||
2010-01-21 Kai Tietz <kai.tietz@onevision.com>
|
||||
|
||||
* inflow.c (check_syscall): Guard by #if clause for GO32 and
|
||||
|
|
|
@ -28,35 +28,6 @@
|
|||
|
||||
/* Calling functions in shared libraries. */
|
||||
|
||||
/* Find the minimal symbol named NAME, and return both the minsym
|
||||
struct and its objfile. This probably ought to be in minsym.c, but
|
||||
everything there is trying to deal with things like C++ and
|
||||
SOFUN_ADDRESS_MAYBE_TURQUOISE, ... Since this is so simple, it may
|
||||
be considered too special-purpose for general consumption. */
|
||||
|
||||
static struct minimal_symbol *
|
||||
find_minsym_and_objfile (char *name, struct objfile **objfile_p)
|
||||
{
|
||||
struct objfile *objfile;
|
||||
|
||||
ALL_OBJFILES (objfile)
|
||||
{
|
||||
struct minimal_symbol *msym;
|
||||
|
||||
ALL_OBJFILE_MSYMBOLS (objfile, msym)
|
||||
{
|
||||
if (SYMBOL_LINKAGE_NAME (msym)
|
||||
&& strcmp (SYMBOL_LINKAGE_NAME (msym), name) == 0)
|
||||
{
|
||||
*objfile_p = objfile;
|
||||
return msym;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* See the comments for SKIP_SOLIB_RESOLVER at the top of infrun.c.
|
||||
This function:
|
||||
1) decides whether a PLT has sent us into the linker to resolve
|
||||
|
@ -85,7 +56,7 @@ glibc_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
|
|||
|
||||
struct objfile *objfile;
|
||||
struct minimal_symbol *resolver
|
||||
= find_minsym_and_objfile ("_dl_runtime_resolve", &objfile);
|
||||
= lookup_minimal_symbol_and_objfile ("_dl_runtime_resolve", &objfile);
|
||||
|
||||
if (resolver)
|
||||
{
|
||||
|
|
|
@ -693,6 +693,37 @@ lookup_minimal_symbol_by_pc (CORE_ADDR pc)
|
|||
{
|
||||
return lookup_minimal_symbol_by_pc_section (pc, NULL);
|
||||
}
|
||||
|
||||
/* Find the minimal symbol named NAME, and return both the minsym
|
||||
struct and its objfile. This only checks the linkage name. Sets
|
||||
*OBJFILE_P and returns the minimal symbol, if it is found. If it
|
||||
is not found, returns NULL. */
|
||||
|
||||
struct minimal_symbol *
|
||||
lookup_minimal_symbol_and_objfile (const char *name,
|
||||
struct objfile **objfile_p)
|
||||
{
|
||||
struct objfile *objfile;
|
||||
unsigned int hash = msymbol_hash (name) % MINIMAL_SYMBOL_HASH_SIZE;
|
||||
|
||||
ALL_OBJFILES (objfile)
|
||||
{
|
||||
struct minimal_symbol *msym;
|
||||
|
||||
for (msym = objfile->msymbol_hash[hash];
|
||||
msym != NULL;
|
||||
msym = msym->hash_next)
|
||||
{
|
||||
if (strcmp (SYMBOL_LINKAGE_NAME (msym), name) == 0)
|
||||
{
|
||||
*objfile_p = objfile;
|
||||
return msym;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* Return leading symbol character for a BFD. If BFD is NULL,
|
||||
|
|
|
@ -1158,6 +1158,10 @@ extern struct minimal_symbol *lookup_minimal_symbol_by_pc_name
|
|||
|
||||
extern struct minimal_symbol *lookup_minimal_symbol_by_pc (CORE_ADDR);
|
||||
|
||||
extern struct minimal_symbol *
|
||||
lookup_minimal_symbol_and_objfile (const char *,
|
||||
struct objfile **);
|
||||
|
||||
extern struct minimal_symbol
|
||||
*lookup_minimal_symbol_by_pc_section (CORE_ADDR, struct obj_section *);
|
||||
|
||||
|
|
Loading…
Reference in New Issue