* xcoffread.c (read_xcoff_symtab): Process XTY_LD symbols we were
authorJim Kingdon <jkingdon@engr.sgi.com>
Wed, 28 Sep 1994 17:18:59 +0000 (17:18 +0000)
committerJim Kingdon <jkingdon@engr.sgi.com>
Wed, 28 Sep 1994 17:18:59 +0000 (17:18 +0000)
ignoring before.  But continue to ignore XMC_DS.

gdb/ChangeLog
gdb/xcoffread.c

index 9ceab3efdbf24cb10af62dcd9fd2a9e4f2ad45da..2c4da0cea7d4c63e1e625add73de06f3a2dd0547 100644 (file)
@@ -1,3 +1,8 @@
+Wed Sep 28 08:59:14 1994  Jim Kingdon  (kingdon@cygnus.com)
+
+       * xcoffread.c (read_xcoff_symtab): Process XTY_LD symbols we were
+       ignoring before.  But continue to ignore XMC_DS.
+
 Mon Sep 26 02:59:00 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)
 
        * defs.h (misc_command_type):  Remove trailing comma from
index 7a0f4c5785147ab130a92ce6d76a396e94c2907f..57d3f40624cfe20c606fa254b3071fd8d9dbec05 100644 (file)
@@ -1282,11 +1282,12 @@ read_xcoff_symtab (objfile, nsyms)
          break;                        /* switch CSECT_SCLAS() */
 
        case XTY_LD :
-         
-         /* a function entry point. */
-         if (CSECT_SCLAS (&main_aux) == XMC_PR) {
 
-function_entry_point:
+         switch (CSECT_SCLAS (&main_aux))
+           {
+           case XMC_PR:
+             /* a function entry point. */
+           function_entry_point:
            RECORD_MINIMAL_SYMBOL (cs->c_name, cs->c_value, mst_text, 
                                   symname_alloced, cs->c_secnum, objfile);
 
@@ -1357,9 +1358,9 @@ function_entry_point:
                           cs->c_value + ptb->fsize, objfile);
            }
            continue;
-         }
-         /* shared library function trampoline code entry point. */
-         else if (CSECT_SCLAS (&main_aux) == XMC_GL) {
+
+         case XMC_GL:
+           /* shared library function trampoline code entry point. */
 
            /* record trampoline code entries as mst_solib_trampoline symbol.
               When we lookup mst symbols, we will choose mst_text over
@@ -1397,8 +1398,22 @@ function_entry_point:
                                   symname_alloced, objfile);
 #endif
            continue;
+
+         case XMC_DS:
+           /* The symbols often have the same names as debug symbols for
+              functions, and confuse lookup_symbol.  */
+           continue;
+
+         default:
+           /* xlc and old versions of gcc put each variable in a
+              separate csect, so we get an XTY_SD.  But new (2.5?
+              2.6? something like that) gcc's put several variables
+              in a csect, so that each variable only gets an XTY_LD.
+              We still need to record them.  This will typically be
+              XMC_RW; I suspect XMC_RO and XMC_BS might be possible
+              too.  */
+           break;
          }
-         continue;
 
        default :               /* all other XTY_XXXs */
          break;