From c5933f6db95fefa46e4e6ad036e04b34de5034c3 Mon Sep 17 00:00:00 2001 From: Joel Brobecker Date: Thu, 12 Mar 2009 17:56:20 +0000 Subject: [PATCH] * 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. --- gdb/ChangeLog | 6 ++++++ gdb/xcoffread.c | 34 +++++++++++++++++++++++++--------- 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 + + * 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 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; -- 2.30.2