aboutsummaryrefslogtreecommitdiff
path: root/gdb/buildsym.c
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2006-08-25 16:32:32 +0000
committerDaniel Jacobowitz <drow@false.org>2006-08-25 16:32:32 +0000
commit14711c8202654c66aa23a10247dfd06b9d88b19f (patch)
treee16e78253ad262eb106991bfb849be3080d94772 /gdb/buildsym.c
parent74869ac7a4dcde1530155889456cbaa37f87b60c (diff)
downloadgdb-14711c8202654c66aa23a10247dfd06b9d88b19f.zip
gdb-14711c8202654c66aa23a10247dfd06b9d88b19f.tar.gz
gdb-14711c8202654c66aa23a10247dfd06b9d88b19f.tar.bz2
* 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 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)
{