aboutsummaryrefslogtreecommitdiff
path: root/gdb/minsyms.c
diff options
context:
space:
mode:
authorPeter Schauer <Peter.Schauer@mytum.de>1994-03-15 21:46:32 +0000
committerPeter Schauer <Peter.Schauer@mytum.de>1994-03-15 21:46:32 +0000
commitae6d035d284f36a654186f284ead34a246eb86de (patch)
tree81117ce5058d3d7984ef902010a3d4b4a39c63c2 /gdb/minsyms.c
parentf1b4e13156bf7987b306aaacc649e66e26f3c5f6 (diff)
downloadgdb-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.c33
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;
}