mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-02 04:27:46 +08:00
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:
@ -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>
|
2010-01-21 Kai Tietz <kai.tietz@onevision.com>
|
||||||
|
|
||||||
* inflow.c (check_syscall): Guard by #if clause for GO32 and
|
* inflow.c (check_syscall): Guard by #if clause for GO32 and
|
||||||
|
@ -28,35 +28,6 @@
|
|||||||
|
|
||||||
/* Calling functions in shared libraries. */
|
/* 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.
|
/* See the comments for SKIP_SOLIB_RESOLVER at the top of infrun.c.
|
||||||
This function:
|
This function:
|
||||||
1) decides whether a PLT has sent us into the linker to resolve
|
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 objfile *objfile;
|
||||||
struct minimal_symbol *resolver
|
struct minimal_symbol *resolver
|
||||||
= find_minsym_and_objfile ("_dl_runtime_resolve", &objfile);
|
= lookup_minimal_symbol_and_objfile ("_dl_runtime_resolve", &objfile);
|
||||||
|
|
||||||
if (resolver)
|
if (resolver)
|
||||||
{
|
{
|
||||||
|
@ -693,6 +693,37 @@ lookup_minimal_symbol_by_pc (CORE_ADDR pc)
|
|||||||
{
|
{
|
||||||
return lookup_minimal_symbol_by_pc_section (pc, NULL);
|
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,
|
/* 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_by_pc (CORE_ADDR);
|
||||||
|
|
||||||
|
extern struct minimal_symbol *
|
||||||
|
lookup_minimal_symbol_and_objfile (const char *,
|
||||||
|
struct objfile **);
|
||||||
|
|
||||||
extern struct minimal_symbol
|
extern struct minimal_symbol
|
||||||
*lookup_minimal_symbol_by_pc_section (CORE_ADDR, struct obj_section *);
|
*lookup_minimal_symbol_by_pc_section (CORE_ADDR, struct obj_section *);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user