names (the dynamic linker deals with the duplication). */
struct minimal_symbol *
-lookup_minimal_symbol (register const char *name, const char *sfile,
+lookup_minimal_symbol (const char *name, const char *sfile,
struct objfile *objf)
{
struct objfile *objfile;
while (msymbol != NULL && found_symbol == NULL)
{
- if (DEPRECATED_SYMBOL_MATCHES_NAME (msymbol, name))
+ /* FIXME: carlton/2003-02-27: This is an unholy
+ mixture of linkage names and natural names. If
+ you want to test the linkage names with strcmp,
+ do that. If you want to test the natural names
+ with strcmp_iw, use SYMBOL_MATCHES_NATURAL_NAME. */
+ if (strcmp (DEPRECATED_SYMBOL_NAME (msymbol), (name)) == 0
+ || (SYMBOL_DEMANGLED_NAME (msymbol) != NULL
+ && strcmp_iw (SYMBOL_DEMANGLED_NAME (msymbol),
+ (name)) == 0))
{
switch (MSYMBOL_TYPE (msymbol))
{
case mst_file_data:
case mst_file_bss:
#ifdef SOFUN_ADDRESS_MAYBE_MISSING
- if (sfile == NULL || STREQ (msymbol->filename, sfile))
+ if (sfile == NULL
+ || strcmp (msymbol->filename, sfile) == 0)
found_file_symbol = msymbol;
#else
/* We have neither the ability nor the need to
/* Look through all the current minimal symbol tables and find the
first minimal symbol that matches NAME and has text type. If OBJF
- is non-NULL, limit the search to that objfile. If SFILE is non-NULL,
- the only file-scope symbols considered will be from that source file
- (global symbols are still preferred). Returns a pointer to the minimal
- symbol that matches, or NULL if no match is found.
+ is non-NULL, limit the search to that objfile. Returns a pointer
+ to the minimal symbol that matches, or NULL if no match is found.
This function only searches the mangled (linkage) names. */
struct minimal_symbol *
-lookup_minimal_symbol_text (register const char *name, const char *sfile,
- struct objfile *objf)
+lookup_minimal_symbol_text (const char *name, struct objfile *objf)
{
struct objfile *objfile;
struct minimal_symbol *msymbol;
unsigned int hash = msymbol_hash (name) % MINIMAL_SYMBOL_HASH_SIZE;
-#ifdef SOFUN_ADDRESS_MAYBE_MISSING
- if (sfile != NULL)
- {
- char *p = strrchr (sfile, '/');
- if (p != NULL)
- sfile = p + 1;
- }
-#endif
-
for (objfile = object_files;
objfile != NULL && found_symbol == NULL;
objfile = objfile->next)
switch (MSYMBOL_TYPE (msymbol))
{
case mst_file_text:
-#ifdef SOFUN_ADDRESS_MAYBE_MISSING
- if (sfile == NULL || STREQ (msymbol->filename, sfile))
- found_file_symbol = msymbol;
-#else
- /* We have neither the ability nor the need to
- deal with the SFILE parameter. If we find
- more than one symbol, just return the latest
- one (the user can't expect useful behavior in
- that case). */
found_file_symbol = msymbol;
-#endif
break;
default:
found_symbol = msymbol;
}
/* Look through all the current minimal symbol tables and find the
- first minimal symbol that matches NAME and is a solib trampoline. If OBJF
- is non-NULL, limit the search to that objfile. If SFILE is non-NULL,
- the only file-scope symbols considered will be from that source file
- (global symbols are still preferred). Returns a pointer to the minimal
- symbol that matches, or NULL if no match is found.
+ first minimal symbol that matches NAME and is a solib trampoline.
+ If OBJF is non-NULL, limit the search to that objfile. Returns a
+ pointer to the minimal symbol that matches, or NULL if no match is
+ found.
This function only searches the mangled (linkage) names. */
struct minimal_symbol *
-lookup_minimal_symbol_solib_trampoline (register const char *name,
- const char *sfile, struct objfile *objf)
+lookup_minimal_symbol_solib_trampoline (const char *name,
+ struct objfile *objf)
{
struct objfile *objfile;
struct minimal_symbol *msymbol;
unsigned int hash = msymbol_hash (name) % MINIMAL_SYMBOL_HASH_SIZE;
-#ifdef SOFUN_ADDRESS_MAYBE_MISSING
- if (sfile != NULL)
- {
- char *p = strrchr (sfile, '/');
- if (p != NULL)
- sfile = p + 1;
- }
-#endif
-
for (objfile = object_files;
objfile != NULL && found_symbol == NULL;
objfile = objfile->next)
struct objfile *objfile;
struct minimal_symbol *msymbol;
struct minimal_symbol *best_symbol = NULL;
+ struct obj_section *pc_section;
/* pc has to be in a known section. This ensures that anything beyond
the end of the last segment doesn't appear to be part of the last
function in the last segment. */
- if (find_pc_section (pc) == NULL)
+ pc_section = find_pc_section (pc);
+ if (pc_section == NULL)
return NULL;
+ /* If no section was specified, then just make sure that the PC is in
+ the same section as the minimal symbol we find. */
+ if (section == NULL)
+ section = pc_section->the_bfd_section;
+
+ /* FIXME drow/2003-07-19: Should we also check that PC is in SECTION
+ if we were passed a non-NULL SECTION argument? */
+
for (objfile = object_files;
objfile != NULL;
objfile = objfile->next)
asection *bfd_section,
struct objfile *objfile)
{
- register struct msym_bunch *new;
- register struct minimal_symbol *msymbol;
+ struct msym_bunch *new;
+ struct minimal_symbol *msymbol;
if (ms_type == mst_file_text)
{
const char *tempstring = name;
if (tempstring[0] == get_symbol_leading_char (objfile->obfd))
++tempstring;
- if (STREQN (tempstring, "__gnu_compiled", 14))
+ if (strncmp (tempstring, "__gnu_compiled", 14) == 0)
return (NULL);
}
}
MSYMBOL_TYPE (msymbol) = ms_type;
/* FIXME: This info, if it remains, needs its own field. */
MSYMBOL_INFO (msymbol) = info; /* FIXME! */
+ MSYMBOL_SIZE (msymbol) = 0;
/* The hash pointers must be cleared! If they're not,
add_minsym_to_hash_table will NOT add this msymbol to the hash table. */
static int
compare_minimal_symbols (const void *fn1p, const void *fn2p)
{
- register const struct minimal_symbol *fn1;
- register const struct minimal_symbol *fn2;
+ const struct minimal_symbol *fn1;
+ const struct minimal_symbol *fn2;
fn1 = (const struct minimal_symbol *) fn1p;
fn2 = (const struct minimal_symbol *) fn2p;
static void
do_discard_minimal_symbols_cleanup (void *arg)
{
- register struct msym_bunch *next;
+ struct msym_bunch *next;
while (msym_bunch != NULL)
{
copyfrom = copyto = msymbol;
while (copyfrom < msymbol + mcount - 1)
{
- if (SYMBOL_VALUE_ADDRESS (copyfrom) ==
- SYMBOL_VALUE_ADDRESS ((copyfrom + 1)) &&
- (STREQ (SYMBOL_LINKAGE_NAME (copyfrom),
- SYMBOL_LINKAGE_NAME ((copyfrom + 1)))))
+ if (SYMBOL_VALUE_ADDRESS (copyfrom)
+ == SYMBOL_VALUE_ADDRESS ((copyfrom + 1))
+ && strcmp (SYMBOL_LINKAGE_NAME (copyfrom),
+ SYMBOL_LINKAGE_NAME ((copyfrom + 1))) == 0)
{
if (MSYMBOL_TYPE ((copyfrom + 1)) == mst_unknown)
{
void
install_minimal_symbols (struct objfile *objfile)
{
- register int bindex;
- register int mcount;
- register struct msym_bunch *bunch;
- register struct minimal_symbol *msymbols;
+ int bindex;
+ int mcount;
+ struct msym_bunch *bunch;
+ struct minimal_symbol *msymbols;
int alloc_count;
- register char leading_char;
+ char leading_char;
if (msym_count > 0)
{
SYMBOL_LINKAGE_NAME (&msymbols[mcount]) = NULL;
SYMBOL_VALUE_ADDRESS (&msymbols[mcount]) = 0;
MSYMBOL_INFO (&msymbols[mcount]) = NULL;
+ MSYMBOL_SIZE (&msymbols[mcount]) = 0;
MSYMBOL_TYPE (&msymbols[mcount]) = mst_unknown;
SYMBOL_INIT_LANGUAGE_SPECIFIC (&msymbols[mcount], language_unknown);
ALL_MSYMBOLS (objfile, msymbol)
{
if (MSYMBOL_TYPE (msymbol) == mst_text
- && STREQ (SYMBOL_LINKAGE_NAME (msymbol),
- SYMBOL_LINKAGE_NAME (tsymbol)))
+ && strcmp (SYMBOL_LINKAGE_NAME (msymbol),
+ SYMBOL_LINKAGE_NAME (tsymbol)) == 0)
return SYMBOL_VALUE_ADDRESS (msymbol);
}
}