diff options
author | Peter Schauer <Peter.Schauer@mytum.de> | 1994-03-15 21:46:32 +0000 |
---|---|---|
committer | Peter Schauer <Peter.Schauer@mytum.de> | 1994-03-15 21:46:32 +0000 |
commit | ae6d035d284f36a654186f284ead34a246eb86de (patch) | |
tree | 81117ce5058d3d7984ef902010a3d4b4a39c63c2 /gdb/minsyms.c | |
parent | f1b4e13156bf7987b306aaacc649e66e26f3c5f6 (diff) | |
download | gdb-ae6d035d284f36a654186f284ead34a246eb86de.zip gdb-ae6d035d284f36a654186f284ead34a246eb86de.tar.gz gdb-ae6d035d284f36a654186f284ead34a246eb86de.tar.bz2 |
For Sunos 4.x targets, enable gdb to set breakpoints in shared
library functions before the executable is run. Retrieve dynamic
symbols from stripped executables.
* symtab.h (minimal_symbol_type): Add mst_solib_trampoline type.
* parse.c (write_exp_msymbol), symmisc.c (dump_msymbols),
symtab.c (list_symbols): Handle mst_solib_trampoline.
* minsyms.c (lookup_minimal_symbol): Handle mst_solib_trampoline
for all targets, remove IBM6000_TARGET dependencies.
* dbxread.c (read_dbx_dynamic_symtab): New function.
* dbxread.c (dbx_symfile_read): Use it.
* dbxread.c (SET_NAMESTRING): Set namestring to
"<bad string table index>" instead of "foo" if the string index is
corrupt.
* xcoffread.c (read_xcoff_symtab): Use mst_solib_trampoline instead
of mst_unknown.
* symtab.c (list_symbols): Take from_tty as parameter and pass it
to break_command. Handle mst_file_* minimal symbol types.
Diffstat (limited to 'gdb/minsyms.c')
-rw-r--r-- | gdb/minsyms.c | 33 |
1 files changed, 6 insertions, 27 deletions
diff --git a/gdb/minsyms.c b/gdb/minsyms.c index d517a9a..ec72471 100644 --- a/gdb/minsyms.c +++ b/gdb/minsyms.c @@ -97,9 +97,7 @@ lookup_minimal_symbol (name, objf) struct minimal_symbol *msymbol; struct minimal_symbol *found_symbol = NULL; struct minimal_symbol *found_file_symbol = NULL; -#ifdef IBM6000_TARGET struct minimal_symbol *trampoline_symbol = NULL; -#endif for (objfile = object_files; objfile != NULL && found_symbol == NULL; @@ -125,34 +123,17 @@ lookup_minimal_symbol (name, objf) found_file_symbol = msymbol; break; - case mst_unknown: -#ifdef IBM6000_TARGET - /* I *think* all platforms using shared - libraries (and trampoline code) will suffer - this problem. Consider a case where there are - 5 shared libraries, each referencing `foo' - with a trampoline entry. When someone wants - to put a breakpoint on `foo' and the only - info we have is minimal symbol vector, we - want to use the real `foo', rather than one - of those trampoline entries. MGO */ + case mst_solib_trampoline: /* If a trampoline symbol is found, we prefer to keep looking for the *real* symbol. If the - actual symbol not found, then we'll use the - trampoline entry. Sorry for the machine - dependent code here, but I hope this will - benefit other platforms as well. For - trampoline entries, we used mst_unknown - earlier. Perhaps we should define a - `mst_trampoline' type?? */ - + actual symbol is not found, then we'll use the + trampoline entry. */ if (trampoline_symbol == NULL) trampoline_symbol = msymbol; break; -#else - /* FALLTHROUGH */ -#endif + + case mst_unknown: default: found_symbol = msymbol; break; @@ -169,11 +150,9 @@ lookup_minimal_symbol (name, objf) if (found_file_symbol) return found_file_symbol; - /* Symbols for IBM shared library trampolines are next best. */ -#ifdef IBM6000_TARGET + /* Symbols for shared library trampolines are next best. */ if (trampoline_symbol) return trampoline_symbol; -#endif return NULL; } |