summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@gnat.com>2009-03-12 17:56:20 +0000
committerJoel Brobecker <brobecker@gnat.com>2009-03-12 17:56:20 +0000
commit852c0e0d0263f85b62090507be8daa135a87a53a (patch)
tree895dda2ba6174776b3557c4256e3be2510d3502f
parentfca72fa5ad030093f21211e1b4394ef40ab1d0cc (diff)
downloadgdb-852c0e0d0263f85b62090507be8daa135a87a53a.tar.gz
* 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.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/xcoffread.c34
2 files changed, 31 insertions, 9 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 80d44b2daa6..fc0f7d28586 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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
diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c
index aab3e48236a..9ae929f24d5 100644
--- a/gdb/xcoffread.c
+++ b/gdb/xcoffread.c
@@ -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;