* dbxread.c (process_one_symbol): If the value of an N_FUN for a
authorJim Kingdon <jkingdon@engr.sgi.com>
Tue, 7 Sep 1993 18:12:26 +0000 (18:12 +0000)
committerJim Kingdon <jkingdon@engr.sgi.com>
Tue, 7 Sep 1993 18:12:26 +0000 (18:12 +0000)
function is zero, use minimal symbols to get the address.

gdb/ChangeLog
gdb/dbxread.c

index aeac2c76fee7245e8925b258d2c9a8ce402c8f1a..d8e50e4cf89abcdf8a7ef6eb76f56d2bb94eeaad 100644 (file)
@@ -1,3 +1,8 @@
+Tue Sep  7 13:06:44 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)
+
+       * dbxread.c (process_one_symbol): If the value of an N_FUN for a
+       function is zero, use minimal symbols to get the address.
+
 Mon Sep  6 15:01:57 1993  Jeffrey Wheat  (cassidy@cygnus.com)
 
        * elfread.c: change elf32_symbol_type to elf_symbol_type
index e50cd0494937f36e19459b4b2391acb209fa3c55..8c35def35f4332ad5d442fee35e7a872cb739ce5 100644 (file)
@@ -1911,7 +1911,15 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile)
                 previous function. This means that we can use the
                 minimal symbol table to get the address.  */
 
-             if (type == N_GSYM || type == N_STSYM)
+             /* On solaris up to 2.2, the N_FUN stab gets relocated.
+                On Solaris 2.3, ld no longer relocates stabs (which
+                is good), and the N_FUN's value is now always zero.
+                We only provide this correction for functions, not for
+                all N_FUN symbols, because that is easiest and all
+                readonly variables seem to go in the .rodata on Solaris.  */
+
+             if (type == N_GSYM || type == N_STSYM
+                 || (type == N_FUN && valu == 0))
                {
                  struct minimal_symbol *m;
                  int l = colon_pos - name;