summaryrefslogtreecommitdiff
path: root/gdb/buildsym.c
diff options
context:
space:
mode:
authorDaniel Jacobowitz <dan@debian.org>2006-08-25 16:32:32 +0000
committerDaniel Jacobowitz <dan@debian.org>2006-08-25 16:32:32 +0000
commit6eb08ff2cb9434a8c78fde25668e1a9cc1f904ed (patch)
treefc6a37a34c6e46ade52b6e60f642dacdaa29ae4a /gdb/buildsym.c
parentbaaf807c6a9f69b0254494ebce015132d0658ebd (diff)
downloadgdb-6eb08ff2cb9434a8c78fde25668e1a9cc1f904ed.tar.gz
* buildsym.c (finish_block): Don't adjust the boundaries of
nested functions.
Diffstat (limited to 'gdb/buildsym.c')
-rw-r--r--gdb/buildsym.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/gdb/buildsym.c b/gdb/buildsym.c
index d0143bc3f24..2e946b9a102 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)
{