* xcoffread.c (process_linenos): Check if the line in the
authorJoel Brobecker <brobecker@gnat.com>
Thu, 12 Mar 2009 17:56:20 +0000 (17:56 +0000)
committerJoel Brobecker <brobecker@gnat.com>
Thu, 12 Mar 2009 17:56:20 +0000 (17:56 +0000)
        include table refers to the main source file and, if so,
        add them to the main subfile.

gdb/ChangeLog
gdb/xcoffread.c

index 80d44b2daa6c128b6c07187ce1d8d630fb33b28c..fc0f7d285861455d44966e44db01d8a40df792a1 100644 (file)
@@ -1,3 +1,9 @@
+2009-03-12  Jerome Guitton  <guitton@adacore.com>
+
+       * xcoffread.c (process_linenos): Check if the line in the
+       include table refers to the main source file and, if so,
+       add them to the main subfile.
+
 2009-03-12  Joel Brobecker  <brobecker@adacore.com>
 
        Fix a build failure on AIX introduced after a change in the profile
index aab3e48236a13bd3f2ba1c625957c26f7c68a57a..9ae929f24d5bd60be9546a0d83db2b7d59525b0e 100644 (file)
@@ -600,17 +600,32 @@ process_linenos (CORE_ADDR start, CORE_ADDR end)
                 start, 0, &main_source_baseline);
            }
 
-         /* Have a new subfile for the include file.  */
+         if (strcmp (inclTable[ii].name, last_source_file) == 0)
+           {
+              /* The entry in the include table refers to the main source
+                 file. Add the lines to the main subfile.  */
 
-         tmpSubfile = inclTable[ii].subfile =
-           (struct subfile *) xmalloc (sizeof (struct subfile));
+             main_source_baseline = inclTable[ii].funStartLine;
+             enter_line_range
+               (&main_subfile, inclTable[ii].begin, inclTable[ii].end,
+                start, 0, &main_source_baseline);
+             inclTable[ii].subfile = &main_subfile;
+           }
+         else
+           {
+
+             /* Have a new subfile for the include file.  */
 
-         memset (tmpSubfile, '\0', sizeof (struct subfile));
-         firstLine = &(inclTable[ii].funStartLine);
+             tmpSubfile = inclTable[ii].subfile =
+               (struct subfile *) xmalloc (sizeof (struct subfile));
 
-         /* Enter include file's lines now.  */
-         enter_line_range (tmpSubfile, inclTable[ii].begin,
-                           inclTable[ii].end, start, 0, firstLine);
+             memset (tmpSubfile, '\0', sizeof (struct subfile));
+             firstLine = &(inclTable[ii].funStartLine);
+
+             /* Enter include file's lines now.  */
+             enter_line_range (tmpSubfile, inclTable[ii].begin,
+                               inclTable[ii].end, start, 0, firstLine);
+           }
 
          if (offset <= inclTable[ii].end)
            offset = inclTable[ii].end + linesz;
@@ -656,7 +671,8 @@ process_linenos (CORE_ADDR start, CORE_ADDR end)
 
   for (ii = 0; ii < inclIndx; ++ii)
     {
-      if ((inclTable[ii].subfile)->line_vector)                /* Useless if!!! FIXMEmgo */
+      if (inclTable[ii].subfile != ((struct subfile *) &main_subfile)
+          && (inclTable[ii].subfile)->line_vector)             /* Useless if!!! FIXMEmgo */
        {
          struct linetable *lineTb, *lv;