aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Kingdon <jkingdon@engr.sgi.com>1995-02-09 07:00:45 +0000
committerJim Kingdon <jkingdon@engr.sgi.com>1995-02-09 07:00:45 +0000
commit2d336b1b5186660c5965deb7b7728fefe0f2d14d (patch)
tree63738f35d4b8fd6e25a72ef0bcb0c7aa9a0cc203
parent151e7820c7460be261142e031fe35a7a193f8acd (diff)
downloadgdb-2d336b1b5186660c5965deb7b7728fefe0f2d14d.zip
gdb-2d336b1b5186660c5965deb7b7728fefe0f2d14d.tar.gz
gdb-2d336b1b5186660c5965deb7b7728fefe0f2d14d.tar.bz2
* config/sparc/tm-sun4sol2.h, dbxread.c: Rename
N_SO_ADDRESS_MAYBE_MISSING to SOFUN_ADDRESS_MAYBE_MISSING. * symtab.h (minimal_symbol) [SOFUN_ADDRESS_MAYBE_MISSING]: Add filename field. * elfread.c (record_minimal_symbol_and_info), minsyms.c, symtab.h (prim_record_minimal_symbol_and_info): Return newly created symbol. * elfread.c (elf_symtab_read) [SOFUN_ADDRESS_MAYBE_MISSING]: Set filename field of minimal symbol. * symmisc.c (dump_msymbols) [SOFUN_ADDRESS_MAYBE_MISSING]: Print filename field. * minsyms.c, symtab.h (lookup_minimal_symbol): New arg sfile. * symm-tdep.c, somsolib.c, hppa-tdep.c, c-exp.y, f-exp.y, m2-exp.y, nindy-tdep.c, m3-nat.c, irix5-nat.c, hpread.c, os9kread.c, breakpoint.c, alpha-tdep.c, valops.c, symtab.c, printcmd.c, dbxread.c: Change callers to pass NULL for sfile. * dbxread.c (process_one_symbol) [SOFUN_ADDRESS_MAYBE_MISSING]: Find address of function from minimal symbols. * partial-stab.h, case 'f', 'F': Call find_stab_function_addr instead of getting pst->textlow from the stab. * minsyms.c (find_stab_function_addr): New function.
-rw-r--r--gdb/ChangeLog24
-rw-r--r--gdb/alpha-tdep.c2
-rw-r--r--gdb/c-exp.y7
-rw-r--r--gdb/config/sparc/tm-sun4sol2.h5
-rw-r--r--gdb/elfread.c27
-rw-r--r--gdb/f-exp.y3
-rw-r--r--gdb/hppa-tdep.c24
-rw-r--r--gdb/hpread.c2
-rw-r--r--gdb/irix5-nat.c2
-rw-r--r--gdb/m2-exp.y3
-rw-r--r--gdb/m3-nat.c2
-rw-r--r--gdb/minsyms.c64
-rw-r--r--gdb/nindy-tdep.c2
-rw-r--r--gdb/os9kread.c2
-rw-r--r--gdb/partial-stab.h10
-rw-r--r--gdb/somsolib.c10
-rw-r--r--gdb/symm-tdep.c2
17 files changed, 142 insertions, 49 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index ce96113..f74db0a 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,27 @@
+Wed Feb 8 20:32:18 1995 Jim Kingdon <kingdon@deneb.cygnus.com>
+
+ * config/sparc/tm-sun4sol2.h, dbxread.c: Rename
+ N_SO_ADDRESS_MAYBE_MISSING to SOFUN_ADDRESS_MAYBE_MISSING.
+ * symtab.h (minimal_symbol) [SOFUN_ADDRESS_MAYBE_MISSING]: Add
+ filename field.
+ * elfread.c (record_minimal_symbol_and_info),
+ minsyms.c, symtab.h (prim_record_minimal_symbol_and_info): Return
+ newly created symbol.
+ * elfread.c (elf_symtab_read) [SOFUN_ADDRESS_MAYBE_MISSING]:
+ Set filename field of minimal symbol.
+ * symmisc.c (dump_msymbols) [SOFUN_ADDRESS_MAYBE_MISSING]:
+ Print filename field.
+ * minsyms.c, symtab.h (lookup_minimal_symbol): New arg sfile.
+ * symm-tdep.c, somsolib.c, hppa-tdep.c, c-exp.y, f-exp.y,
+ m2-exp.y, nindy-tdep.c, m3-nat.c, irix5-nat.c, hpread.c,
+ os9kread.c, breakpoint.c, alpha-tdep.c, valops.c, symtab.c,
+ printcmd.c, dbxread.c: Change callers to pass NULL for sfile.
+ * dbxread.c (process_one_symbol) [SOFUN_ADDRESS_MAYBE_MISSING]:
+ Find address of function from minimal symbols.
+ * partial-stab.h, case 'f', 'F': Call find_stab_function_addr
+ instead of getting pst->textlow from the stab.
+ * minsyms.c (find_stab_function_addr): New function.
+
Wed Feb 8 19:19:56 1995 Rob Savoye <rob@darkstar.cygnus.com>
* monitor.c: Fix so all the output shows up in the GUI command
diff --git a/gdb/alpha-tdep.c b/gdb/alpha-tdep.c
index 7dedb78..ea6591f 100644
--- a/gdb/alpha-tdep.c
+++ b/gdb/alpha-tdep.c
@@ -1116,7 +1116,7 @@ alpha_call_dummy_address ()
if (entry != 0)
return entry;
- sym = lookup_minimal_symbol ("_Prelude", symfile_objfile);
+ sym = lookup_minimal_symbol ("_Prelude", NULL, symfile_objfile);
if (!sym || MSYMBOL_TYPE (sym) != mst_text)
return 0;
diff --git a/gdb/c-exp.y b/gdb/c-exp.y
index e8b0d7e..fc88cab 100644
--- a/gdb/c-exp.y
+++ b/gdb/c-exp.y
@@ -633,8 +633,7 @@ variable: qualified_name
break;
}
- msymbol = lookup_minimal_symbol (name,
- (struct objfile *) NULL);
+ msymbol = lookup_minimal_symbol (name, NULL, NULL);
if (msymbol != NULL)
{
write_exp_msymbol (msymbol,
@@ -689,8 +688,8 @@ variable: name_not_typename
struct minimal_symbol *msymbol;
register char *arg = copy_name ($1.stoken);
- msymbol = lookup_minimal_symbol (arg,
- (struct objfile *) NULL);
+ msymbol =
+ lookup_minimal_symbol (arg, NULL, NULL);
if (msymbol != NULL)
{
write_exp_msymbol (msymbol,
diff --git a/gdb/config/sparc/tm-sun4sol2.h b/gdb/config/sparc/tm-sun4sol2.h
index 4ea328e..292e683 100644
--- a/gdb/config/sparc/tm-sun4sol2.h
+++ b/gdb/config/sparc/tm-sun4sol2.h
@@ -60,8 +60,9 @@ get_longjmp_target PARAMS ((CORE_ADDR *));
#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
#endif /* 0 */
-/* The SunPRO compiler puts out 0 instead of the address in an N_SO symbol. */
-#define N_SO_ADDRESS_MAYBE_MISSING
+/* The SunPRO compiler puts out 0 instead of the address in N_SO symbols,
+ and for SunPRO 3.0, N_FUN symbols too. */
+#define SOFUN_ADDRESS_MAYBE_MISSING
#define FAULTED_USE_SIGINFO
diff --git a/gdb/elfread.c b/gdb/elfread.c
index 0b16463..326f93c 100644
--- a/gdb/elfread.c
+++ b/gdb/elfread.c
@@ -81,7 +81,7 @@ free_elfinfo PARAMS ((void *));
static struct section_offsets *
elf_symfile_offsets PARAMS ((struct objfile *, CORE_ADDR));
-static void
+static struct minimal_symbol *
record_minimal_symbol_and_info PARAMS ((char *, CORE_ADDR,
enum minimal_symbol_type, char *,
struct objfile *));
@@ -171,7 +171,7 @@ elf_interpreter (abfd)
#endif
-static void
+static struct minimal_symbol *
record_minimal_symbol_and_info (name, address, ms_type, info, objfile)
char *name;
CORE_ADDR address;
@@ -206,8 +206,8 @@ record_minimal_symbol_and_info (name, address, ms_type, info, objfile)
}
name = obsavestring (name, strlen (name), &objfile -> symbol_obstack);
- prim_record_minimal_symbol_and_info (name, address, ms_type, info, section,
- objfile);
+ return prim_record_minimal_symbol_and_info
+ (name, address, ms_type, info, section, objfile);
}
/*
@@ -258,6 +258,10 @@ elf_symtab_read (abfd, addr, objfile, dynamic)
/* If filesym is nonzero, it points to a file symbol, but we haven't
seen any section info for it yet. */
asymbol *filesym = 0;
+#ifdef SOFUN_ADDRESS_MAYBE_MISSING
+ /* Name of filesym, as saved on the symbol_obstack. */
+ char *filesymname;
+#endif
struct dbx_symfile_info *dbx = (struct dbx_symfile_info *)
objfile->sym_stab_info;
unsigned long size;
@@ -340,9 +344,16 @@ elf_symtab_read (abfd, addr, objfile, dynamic)
sectinfo = NULL;
}
filesym = sym;
+#ifdef SOFUN_ADDRESS_MAYBE_MISSING
+ filesymname =
+ obsavestring ((char *)filesym->name, strlen (filesym->name),
+ &objfile->symbol_obstack);
+#endif
}
else if (sym -> flags & (BSF_GLOBAL | BSF_LOCAL | BSF_WEAK))
{
+ struct minimal_symbol *msym;
+
/* Select global/local/weak symbols. Note that bfd puts abs
symbols in their own section, so all symbols we are
interested in will have a section. */
@@ -498,8 +509,12 @@ elf_symtab_read (abfd, addr, objfile, dynamic)
}
/* Pass symbol size field in via BFD. FIXME!!! */
size = ((elf_symbol_type *) sym) -> internal_elf_sym.st_size;
- record_minimal_symbol_and_info ((char *) sym -> name, symaddr,
- ms_type, (PTR) size, objfile);
+ msym = record_minimal_symbol_and_info
+ ((char *) sym -> name, symaddr,
+ ms_type, (PTR) size, objfile);
+#ifdef SOFUN_ADDRESS_MAYBE_MISSING
+ msym->filename = filesymname;
+#endif
}
}
do_cleanups (back_to);
diff --git a/gdb/f-exp.y b/gdb/f-exp.y
index ad31224..741d76c 100644
--- a/gdb/f-exp.y
+++ b/gdb/f-exp.y
@@ -469,7 +469,8 @@ variable: name_not_typename
struct minimal_symbol *msymbol;
register char *arg = copy_name ($1.stoken);
- msymbol = lookup_minimal_symbol (arg, NULL);
+ msymbol =
+ lookup_minimal_symbol (arg, NULL, NULL);
if (msymbol != NULL)
{
write_exp_msymbol (msymbol,
diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c
index 0cc1151..c227b94 100644
--- a/gdb/hppa-tdep.c
+++ b/gdb/hppa-tdep.c
@@ -1066,7 +1066,7 @@ frame_chain_valid (chain, thisframe)
which is (legitimately, since it is in the user's namespace)
named Ltext_end, so we can't just ignore it. */
msym_us = lookup_minimal_symbol_by_pc (FRAME_SAVED_PC (thisframe));
- msym_start = lookup_minimal_symbol ("_start", NULL);
+ msym_start = lookup_minimal_symbol ("_start", NULL, NULL);
if (msym_us
&& msym_start
&& SYMBOL_VALUE_ADDRESS (msym_us) == SYMBOL_VALUE_ADDRESS (msym_start))
@@ -1415,7 +1415,7 @@ hppa_fix_call_dummy (dummy, pc, fun, nargs, args, type, gcc_p)
int flags = read_register (FLAGS_REGNUM);
struct unwind_table_entry *u;
- msymbol = lookup_minimal_symbol ("$$dyncall", (struct objfile *) NULL);
+ msymbol = lookup_minimal_symbol ("$$dyncall", NULL, NULL);
if (msymbol == NULL)
error ("Can't find an address for $$dyncall trampoline");
@@ -1457,7 +1457,7 @@ hppa_fix_call_dummy (dummy, pc, fun, nargs, args, type, gcc_p)
ALL_OBJFILES (objfile)
{
stub_symbol = lookup_minimal_symbol (SYMBOL_NAME (funsymbol),
- objfile);
+ NULL, objfile);
/* Found a symbol with the right name. */
if (stub_symbol)
{
@@ -1492,9 +1492,9 @@ hppa_fix_call_dummy (dummy, pc, fun, nargs, args, type, gcc_p)
if (u && u->stub_type == IMPORT)
{
CORE_ADDR new_fun;
- msymbol = lookup_minimal_symbol ("__d_plt_call", (struct objfile *) NULL);
+ msymbol = lookup_minimal_symbol ("__d_plt_call", NULL, NULL);
if (msymbol == NULL)
- msymbol = lookup_minimal_symbol ("__gcc_plt_call", NULL);
+ msymbol = lookup_minimal_symbol ("__gcc_plt_call", NULL, NULL);
if (msymbol == NULL)
error ("Can't find an address for __d_plt_call or __gcc_plt_call trampoline");
@@ -1507,7 +1507,7 @@ hppa_fix_call_dummy (dummy, pc, fun, nargs, args, type, gcc_p)
else
{
/* We have to store the address of the stub in __shlib_funcptr. */
- msymbol = lookup_minimal_symbol ("__shlib_funcptr",
+ msymbol = lookup_minimal_symbol ("__shlib_funcptr", NULL,
(struct objfile *)NULL);
if (msymbol == NULL)
error ("Can't find an address for __shlib_funcptr");
@@ -1518,7 +1518,7 @@ hppa_fix_call_dummy (dummy, pc, fun, nargs, args, type, gcc_p)
}
/* We still need sr4export's address too. */
- msymbol = lookup_minimal_symbol ("_sr4export", (struct objfile *) NULL);
+ msymbol = lookup_minimal_symbol ("_sr4export", NULL, NULL);
if (msymbol == NULL)
error ("Can't find an address for _sr4export trampoline");
@@ -1749,7 +1749,7 @@ in_solib_call_trampoline (pc, name)
/* First see if PC is in one of the two C-library trampolines. */
if (!dyncall)
{
- minsym = lookup_minimal_symbol ("$$dyncall", NULL);
+ minsym = lookup_minimal_symbol ("$$dyncall", NULL, NULL);
if (minsym)
dyncall = SYMBOL_VALUE_ADDRESS (minsym);
else
@@ -1758,7 +1758,7 @@ in_solib_call_trampoline (pc, name)
if (!sr4export)
{
- minsym = lookup_minimal_symbol ("_sr4export", NULL);
+ minsym = lookup_minimal_symbol ("_sr4export", NULL, NULL);
if (minsym)
sr4export = SYMBOL_VALUE_ADDRESS (minsym);
else
@@ -1918,7 +1918,7 @@ skip_trampoline_code (pc, name)
if (!dyncall)
{
- msym = lookup_minimal_symbol ("$$dyncall", NULL);
+ msym = lookup_minimal_symbol ("$$dyncall", NULL, NULL);
if (msym)
dyncall = SYMBOL_VALUE_ADDRESS (msym);
else
@@ -1927,7 +1927,7 @@ skip_trampoline_code (pc, name)
if (!sr4export)
{
- msym = lookup_minimal_symbol ("_sr4export", NULL);
+ msym = lookup_minimal_symbol ("_sr4export", NULL, NULL);
if (msym)
sr4export = SYMBOL_VALUE_ADDRESS (msym);
else
@@ -2021,7 +2021,7 @@ skip_trampoline_code (pc, name)
return orig_pc == pc ? 0 : pc & ~0x3;
}
- libsym = lookup_minimal_symbol (SYMBOL_NAME (stubsym), NULL);
+ libsym = lookup_minimal_symbol (SYMBOL_NAME (stubsym), NULL, NULL);
if (libsym == NULL)
{
warning ("Unable to find library symbol for %s\n",
diff --git a/gdb/hpread.c b/gdb/hpread.c
index b31d972..099a883 100644
--- a/gdb/hpread.c
+++ b/gdb/hpread.c
@@ -700,7 +700,7 @@ hpread_get_textlow (global, index, objfile)
return 0;
/* The minimal symbols are typically more accurate for some reason. */
- msymbol = lookup_minimal_symbol (dn_bufp->dfunc.name + VT (objfile),
+ msymbol = lookup_minimal_symbol (dn_bufp->dfunc.name + VT (objfile), NULL,
objfile);
if (msymbol)
return SYMBOL_VALUE_ADDRESS (msymbol);
diff --git a/gdb/irix5-nat.c b/gdb/irix5-nat.c
index 110af26..689ef00 100644
--- a/gdb/irix5-nat.c
+++ b/gdb/irix5-nat.c
@@ -405,7 +405,7 @@ locate_base ()
struct minimal_symbol *msymbol;
CORE_ADDR address = 0;
- msymbol = lookup_minimal_symbol (DEBUG_BASE, symfile_objfile);
+ msymbol = lookup_minimal_symbol (DEBUG_BASE, NULL, symfile_objfile);
if ((msymbol != NULL) && (SYMBOL_VALUE_ADDRESS (msymbol) != 0))
{
address = SYMBOL_VALUE_ADDRESS (msymbol);
diff --git a/gdb/m2-exp.y b/gdb/m2-exp.y
index 57b6abe..81d791c 100644
--- a/gdb/m2-exp.y
+++ b/gdb/m2-exp.y
@@ -625,7 +625,8 @@ variable: NAME
struct minimal_symbol *msymbol;
register char *arg = copy_name ($1);
- msymbol = lookup_minimal_symbol (arg, NULL);
+ msymbol =
+ lookup_minimal_symbol (arg, NULL, NULL);
if (msymbol != NULL)
{
write_exp_msymbol
diff --git a/gdb/m3-nat.c b/gdb/m3-nat.c
index bf5f9d7..52a3eb6 100644
--- a/gdb/m3-nat.c
+++ b/gdb/m3-nat.c
@@ -2462,7 +2462,7 @@ lookup_address_of_variable (name)
if (! symaddr)
{
- msymbol = lookup_minimal_symbol (name, (struct objfile *) NULL);
+ msymbol = lookup_minimal_symbol (name, NULL, NULL);
if (msymbol && msymbol->type == mst_data)
symaddr = SYMBOL_VALUE_ADDRESS (msymbol);
diff --git a/gdb/minsyms.c b/gdb/minsyms.c
index 26777f8..c04a353 100644
--- a/gdb/minsyms.c
+++ b/gdb/minsyms.c
@@ -79,10 +79,11 @@ compare_minimal_symbols PARAMS ((const void *, const void *));
static int
compact_minimal_symbols PARAMS ((struct minimal_symbol *, int));
-/* Look through all the current minimal symbol tables and find the first
- minimal symbol that matches NAME. If OBJF is non-NULL, it specifies a
- particular objfile and the search is limited to that objfile. Returns
- a pointer to the minimal symbol that matches, or NULL if no match is found.
+/* Look through all the current minimal symbol tables and find the
+ first minimal symbol that matches NAME. If OBJF is non-NULL, limit
+ the search to that objfile. If SFILE is non-NULL, limit the search
+ to that source file. Returns a pointer to the minimal symbol that
+ matches, or NULL if no match is found.
Note: One instance where there may be duplicate minimal symbols with
the same name is when the symbol tables for a shared library and the
@@ -90,8 +91,9 @@ compact_minimal_symbols PARAMS ((struct minimal_symbol *, int));
names (the dynamic linker deals with the duplication). */
struct minimal_symbol *
-lookup_minimal_symbol (name, objf)
+lookup_minimal_symbol (name, sfile, objf)
register const char *name;
+ const char *sfile;
struct objfile *objf;
{
struct objfile *objfile;
@@ -100,6 +102,15 @@ lookup_minimal_symbol (name, objf)
struct minimal_symbol *found_file_symbol = NULL;
struct minimal_symbol *trampoline_symbol = NULL;
+#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)
@@ -118,10 +129,17 @@ lookup_minimal_symbol (name, objf)
case mst_file_text:
case mst_file_data:
case mst_file_bss:
- /* It is file-local. If we find more than one, just
- return the latest one (the user can't expect
- useful behavior in that case). */
+#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;
case mst_solib_trampoline:
@@ -260,6 +278,31 @@ lookup_minimal_symbol_by_pc (pc)
return (best_symbol);
}
+#ifdef SOFUN_ADDRESS_MAYBE_MISSING
+CORE_ADDR
+find_stab_function_addr (namestring, pst, objfile)
+ char *namestring;
+ struct partial_symtab *pst;
+ struct objfile *objfile;
+{
+ struct minimal_symbol *msym;
+ char *p;
+ int n;
+
+ p = strchr (namestring, ':');
+ if (p == NULL)
+ p = namestring;
+ n = p - namestring;
+ p = alloca (n + 1);
+ strncpy (p, namestring, n);
+ p[n] = 0;
+
+ msym = lookup_minimal_symbol (p, pst->filename, objfile);
+ return msym == NULL ? 0 : SYMBOL_VALUE_ADDRESS (msym);
+}
+#endif /* SOFUN_ADDRESS_MAYBE_MISSING */
+
+
/* Return leading symbol character for a BFD. If BFD is NULL,
return the leading symbol character from the main objfile. */
@@ -320,7 +363,9 @@ prim_record_minimal_symbol (name, address, ms_type, objfile)
NULL, section, objfile);
}
-void
+/* Record a minimal symbol in the msym bunches. Returns the symbol
+ newly created. */
+struct minimal_symbol *
prim_record_minimal_symbol_and_info (name, address, ms_type, info, section,
objfile)
const char *name;
@@ -372,6 +417,7 @@ prim_record_minimal_symbol_and_info (name, address, ms_type, info, section,
MSYMBOL_INFO (msymbol) = info; /* FIXME! */
msym_bunch_index++;
msym_count++;
+ return msymbol;
}
/* Compare two minimal symbols by address and return a signed result based
diff --git a/gdb/nindy-tdep.c b/gdb/nindy-tdep.c
index 03a67c8..f4c5f37 100644
--- a/gdb/nindy-tdep.c
+++ b/gdb/nindy-tdep.c
@@ -63,7 +63,7 @@ nindy_frame_chain_valid (chain, curframe)
if ( sym != 0 ){
a = SYMBOL_VALUE (sym);
} else {
- msymbol = lookup_minimal_symbol (sf, (struct objfile *) NULL);
+ msymbol = lookup_minimal_symbol (sf, NULL, NULL);
if (msymbol == NULL)
return 0;
a = SYMBOL_VALUE_ADDRESS (msymbol);
diff --git a/gdb/os9kread.c b/gdb/os9kread.c
index d7661f9..3d56369 100644
--- a/gdb/os9kread.c
+++ b/gdb/os9kread.c
@@ -1080,7 +1080,7 @@ os9k_end_psymtab (pst, include_list, num_includes, capping_symbol_cnt,
strncpy (p, last_function_name, n);
p[n] = 0;
- minsym = lookup_minimal_symbol (p, objfile);
+ minsym = lookup_minimal_symbol (p, NULL, objfile);
if (minsym) {
pst->texthigh = SYMBOL_VALUE_ADDRESS(minsym)+(long)MSYMBOL_INFO(minsym);
diff --git a/gdb/partial-stab.h b/gdb/partial-stab.h
index 4530bab..e92da5a 100644
--- a/gdb/partial-stab.h
+++ b/gdb/partial-stab.h
@@ -511,10 +511,13 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifdef DBXREAD_ONLY
/* Kludges for ELF/STABS with Sun ACC */
last_function_name = namestring;
+#ifdef SOFUN_ADDRESS_MAYBE_MISSING
/* Do not fix textlow==0 for .o or NLM files, as 0 is a legit
value for the bottom of the text seg in those cases. */
if (pst && pst->textlow == 0 && !symfile_relocatable)
- pst->textlow = CUR_SYMBOL_VALUE;
+ pst->textlow =
+ find_stab_function_addr (namestring, pst, objfile);
+#endif
#if 0
if (startup_file_end == 0)
startup_file_end = CUR_SYMBOL_VALUE;
@@ -535,10 +538,13 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifdef DBXREAD_ONLY
/* Kludges for ELF/STABS with Sun ACC */
last_function_name = namestring;
+#ifdef SOFUN_ADDRESS_MAYBE_MISSING
/* Do not fix textlow==0 for .o or NLM files, as 0 is a legit
value for the bottom of the text seg in those cases. */
if (pst && pst->textlow == 0 && !symfile_relocatable)
- pst->textlow = CUR_SYMBOL_VALUE;
+ pst->textlow =
+ find_stab_function_addr (namestring, pst, objfile);
+#endif
#if 0
if (startup_file_end == 0)
startup_file_end = CUR_SYMBOL_VALUE;
diff --git a/gdb/somsolib.c b/gdb/somsolib.c
index 3bdc82f..41b6c2b 100644
--- a/gdb/somsolib.c
+++ b/gdb/somsolib.c
@@ -138,7 +138,7 @@ som_solib_add (arg_string, from_tty, target)
if (bfd_section_size (symfile_objfile->obfd, shlib_info) == 0)
return;
- msymbol = lookup_minimal_symbol ("__dld_flags", (struct objfile *) NULL);
+ msymbol = lookup_minimal_symbol ("__dld_flags", NULL, NULL);
if (msymbol == NULL)
{
error ("Unable to find __dld_flags symbol in object file.\n");
@@ -166,12 +166,12 @@ som_solib_add (arg_string, from_tty, target)
if ((dld_flags & 1) == 0)
warning ("The shared libraries were not privately mapped; setting a\nbreakpoint in a shared library will not work until you rerun the program.\n");
- msymbol = lookup_minimal_symbol ("__dld_list", (struct objfile *) NULL);
+ msymbol = lookup_minimal_symbol ("__dld_list", NULL, NULL);
if (!msymbol)
{
/* Older crt0.o files (hpux8) don't have __dld_list as a symbol,
but the data is still available if you know where to look. */
- msymbol = lookup_minimal_symbol ("__dld_flags", (struct objfile *)NULL);
+ msymbol = lookup_minimal_symbol ("__dld_flags", NULL, NULL);
if (!msymbol)
{
error ("Unable to find dynamic library list.\n");
@@ -471,7 +471,7 @@ som_solib_create_inferior_hook()
/* Get the address of __dld_flags, if no such symbol exists, then we can
not debug the shared code. */
- msymbol = lookup_minimal_symbol ("__dld_flags", (struct objfile *) NULL);
+ msymbol = lookup_minimal_symbol ("__dld_flags", NULL, NULL);
if (msymbol == NULL)
{
error ("Unable to find __dld_flags symbol in object file.\n");
@@ -499,7 +499,7 @@ som_solib_create_inferior_hook()
}
/* Now find the address of _start and set a breakpoint there. */
- msymbol = lookup_minimal_symbol ("_start", symfile_objfile);
+ msymbol = lookup_minimal_symbol ("_start", NULL, symfile_objfile);
if (msymbol == NULL)
{
error ("Unable to find _start symbol in object file.\n");
diff --git a/gdb/symm-tdep.c b/gdb/symm-tdep.c
index 7216a1b..279d4f3 100644
--- a/gdb/symm-tdep.c
+++ b/gdb/symm-tdep.c
@@ -47,7 +47,7 @@ symmetry_extract_return_value(type, regbuf, valbuf)
float f;
if (TYPE_CODE_FLT == TYPE_CODE(type)) {
- msymbol = lookup_minimal_symbol ("1167_flt", (struct objfile *) NULL);
+ msymbol = lookup_minimal_symbol ("1167_flt", NULL, NULL);
if (msymbol != NULL) {
/* found "1167_flt" means 1167, %fp2-%fp3 */
/* float & double; 19= %fp2, 20= %fp3 */