* xcoffread.c (read_xcoff_symtab): If several program csects in one
authorJim Kingdon <jkingdon@engr.sgi.com>
Thu, 27 May 1993 22:06:12 +0000 (22:06 +0000)
committerJim Kingdon <jkingdon@engr.sgi.com>
Thu, 27 May 1993 22:06:12 +0000 (22:06 +0000)
source file, give them all the name of the source file, rather than
the 2nd and subsequent ones having NULL names.

gdb/ChangeLog
gdb/xcoffread.c

index 41d3434142e1809e180ec2c8d26ae0f301084ce9..f3776605b7f4b4d4e3358dbb4725cca8cdc1e0a3 100644 (file)
@@ -1,3 +1,9 @@
+Thu May 27 16:56:25 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)
+
+       * xcoffread.c (read_xcoff_symtab): If several program csects in one
+       source file, give them all the name of the source file, rather than
+       the 2nd and subsequent ones having NULL names.
+
 Thu May 27 06:16:56 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)
 
        * printcmd.c (print_address_symbolic):  Append source filename and
index 585a4f0687b354989672c22bdc6ff42d6f87ad42..cd16e749ba23b8ca7822245d617d368cdf77f432 100644 (file)
@@ -1163,14 +1163,16 @@ read_xcoff_symtab (objfile, nsyms)
            case XMC_PR :                       /* a `.text' csect.     */
              {
 
-               /* A program csect is seen.
-                
-                  We have to allocate one symbol table for each program csect. Normally
-                  gdb prefers one symtab for each compilation unit (CU). In case of AIX, one
-                  CU might include more than one prog csect, and they don't have to be
-                  adjacent in terms of the space they occupy in memory. Thus, one single
-                  CU might get fragmented in the memory and gdb's file start and end address
-                  approach does not work!  */
+               /* A program csect is seen.  We have to allocate one
+                  symbol table for each program csect.  Normally gdb
+                  prefers one symtab for each source file.  In case
+                  of AIX, one source file might include more than one
+                  [PR] csect, and they don't have to be adjacent in
+                  terms of the space they occupy in memory. Thus, one
+                  single source file might get fragmented in the
+                  memory and gdb's file start and end address
+                  approach does not work!  GCC (and I think xlc) seem
+                  to put all the code in the unnamed program csect.  */
 
                if (last_csect_name) {
 
@@ -1191,7 +1193,9 @@ read_xcoff_symtab (objfile, nsyms)
                              textsec->target_index);
                  end_stabs ();
                  start_stabs ();
-                 start_symtab ((char *)NULL, (char *)NULL, (CORE_ADDR)0);
+                 /* Give all csects for this source file the same
+                    name.  */
+                 start_symtab (filestring, (char *)NULL, (CORE_ADDR)0);
                }
 
                /* If this is the very first csect seen, basically `__start'. */