aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/buildsym.c11
2 files changed, 13 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 88d52a7..635cc7f 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2006-08-25 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * buildsym.c (finish_block): Don't adjust the boundaries of
+ nested functions.
+
2006-08-24 Andreas Schwab <schwab@suse.de>
* symfile.c (add_symbol_file_command): Fix off-by-one when
diff --git a/gdb/buildsym.c b/gdb/buildsym.c
index d0143bc..2e946b9 100644
--- a/gdb/buildsym.c
+++ b/gdb/buildsym.c
@@ -400,9 +400,14 @@ finish_block (struct symbol *symbol, struct pending **listhead,
#if 1
/* Check to be sure the blocks are nested as we receive
them. If the compiler/assembler/linker work, this just
- burns a small amount of time. */
- if (BLOCK_START (pblock->block) < BLOCK_START (block) ||
- BLOCK_END (pblock->block) > BLOCK_END (block))
+ burns a small amount of time.
+
+ Skip blocks which correspond to a function; they're not
+ physically nested inside this other blocks, only
+ lexically nested. */
+ if (BLOCK_FUNCTION (pblock->block) == NULL
+ && (BLOCK_START (pblock->block) < BLOCK_START (block)
+ || BLOCK_END (pblock->block) > BLOCK_END (block)))
{
if (symbol)
{