diff options
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/buildsym.c | 11 |
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) { |