diff options
author | Jim Kingdon <jkingdon@engr.sgi.com> | 1995-02-09 07:00:45 +0000 |
---|---|---|
committer | Jim Kingdon <jkingdon@engr.sgi.com> | 1995-02-09 07:00:45 +0000 |
commit | 2d336b1b5186660c5965deb7b7728fefe0f2d14d (patch) | |
tree | 63738f35d4b8fd6e25a72ef0bcb0c7aa9a0cc203 | |
parent | 151e7820c7460be261142e031fe35a7a193f8acd (diff) | |
download | gdb-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/ChangeLog | 24 | ||||
-rw-r--r-- | gdb/alpha-tdep.c | 2 | ||||
-rw-r--r-- | gdb/c-exp.y | 7 | ||||
-rw-r--r-- | gdb/config/sparc/tm-sun4sol2.h | 5 | ||||
-rw-r--r-- | gdb/elfread.c | 27 | ||||
-rw-r--r-- | gdb/f-exp.y | 3 | ||||
-rw-r--r-- | gdb/hppa-tdep.c | 24 | ||||
-rw-r--r-- | gdb/hpread.c | 2 | ||||
-rw-r--r-- | gdb/irix5-nat.c | 2 | ||||
-rw-r--r-- | gdb/m2-exp.y | 3 | ||||
-rw-r--r-- | gdb/m3-nat.c | 2 | ||||
-rw-r--r-- | gdb/minsyms.c | 64 | ||||
-rw-r--r-- | gdb/nindy-tdep.c | 2 | ||||
-rw-r--r-- | gdb/os9kread.c | 2 | ||||
-rw-r--r-- | gdb/partial-stab.h | 10 | ||||
-rw-r--r-- | gdb/somsolib.c | 10 | ||||
-rw-r--r-- | gdb/symm-tdep.c | 2 |
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 */ |