aboutsummaryrefslogtreecommitdiff
path: root/gdb/minsyms.c
diff options
context:
space:
mode:
authorPeter Schauer <Peter.Schauer@mytum.de>1995-01-07 15:30:58 +0000
committerPeter Schauer <Peter.Schauer@mytum.de>1995-01-07 15:30:58 +0000
commit02b40a193ee4627451f2c525671883ad94f17452 (patch)
treeaf34b2a2958c34c3cf9b43f16c845cdd3d1b0a41 /gdb/minsyms.c
parent4a4f9e3bf1f7f3d3b30311626cb04ed2518cf826 (diff)
downloadgdb-02b40a193ee4627451f2c525671883ad94f17452.zip
gdb-02b40a193ee4627451f2c525671883ad94f17452.tar.gz
gdb-02b40a193ee4627451f2c525671883ad94f17452.tar.bz2
* dbxread.c (process_one_symbol): Handle N_FUN symbols
for Sun acc 3.0 under SunOS4. Changes to improve handling of runtime common symbols under SunOS4. * minsyms.c (get_symbol_leading_char): New routine to determine the leading symbol character for an objfile. (prim_record_minimal_symbol_and_info, install_minimal_symbols): Use it. * objfiles.h (rt_common_objfile): New global, points to objfile containing the runtime common minimal symbols. * objfiles.c (free_objfile): Mark rt_common_objfile as unallocated before freeing it. * solib.c (allocate_rt_common_objfile): New routine to allocate an objfile for the runtime common minimal symbols. (solib_add_common_symbols): Allocate an objfile for the runtime common symbols if necessary and put common symbols into it. Clean up code and comments. (solib_add, special_symbol_handling): Cleanup comments regarding runtime common symbols. * stabsread.c (scan_file_globals_1): New routine, contains old scan_file_globals code. Checks if there are any unresolved global symbols before starting the expensive minimal symbol table search. (scan_file_globals): Now calls scan_file_globals_1 for the passed objfile and eventually for the runtime common objfile. Complains about any unresolved global symbols and removes them from the global symbol chain to avoid dangling pointers into the symbol table if the symbol table is reread.
Diffstat (limited to 'gdb/minsyms.c')
-rw-r--r--gdb/minsyms.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/gdb/minsyms.c b/gdb/minsyms.c
index 77d7466..26777f8 100644
--- a/gdb/minsyms.c
+++ b/gdb/minsyms.c
@@ -1,5 +1,5 @@
/* GDB routines for manipulating the minimal symbol tables.
- Copyright 1992, 1993, 1994 Free Software Foundation, Inc.
+ Copyright 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
Contributed by Cygnus Support, using pieces from other GDB modules.
This file is part of GDB.
@@ -260,6 +260,22 @@ lookup_minimal_symbol_by_pc (pc)
return (best_symbol);
}
+/* Return leading symbol character for a BFD. If BFD is NULL,
+ return the leading symbol character from the main objfile. */
+
+static int get_symbol_leading_char PARAMS ((bfd *));
+
+static int
+get_symbol_leading_char (abfd)
+ bfd * abfd;
+{
+ if (abfd != NULL)
+ return bfd_get_symbol_leading_char (abfd);
+ if (symfile_objfile != NULL && symfile_objfile->obfd != NULL)
+ return bfd_get_symbol_leading_char (symfile_objfile->obfd);
+ return 0;
+}
+
/* Prepare to start collecting minimal symbols. Note that presetting
msym_bunch_index to BUNCH_SIZE causes the first call to save a minimal
symbol to allocate the memory for the first bunch. */
@@ -331,7 +347,7 @@ prim_record_minimal_symbol_and_info (name, address, ms_type, info, section,
{
const char *tempstring = name;
- if (tempstring[0] == bfd_get_symbol_leading_char (objfile->obfd))
+ if (tempstring[0] == get_symbol_leading_char (objfile->obfd))
++tempstring;
if (STREQN (tempstring, "__gnu_compiled", 14))
return;
@@ -539,7 +555,7 @@ install_minimal_symbols (objfile)
each bunch is full. */
mcount = objfile->minimal_symbol_count;
- leading_char = bfd_get_symbol_leading_char (objfile->obfd);
+ leading_char = get_symbol_leading_char (objfile->obfd);
for (bunch = msym_bunch; bunch != NULL; bunch = bunch -> next)
{