diff options
author | Jim Blandy <jimb@codesourcery.com> | 2002-11-08 20:05:10 +0000 |
---|---|---|
committer | Jim Blandy <jimb@codesourcery.com> | 2002-11-08 20:05:10 +0000 |
commit | ba5773c40e14732f263f8bf9f141c9ad293c3a0c (patch) | |
tree | 942c4cdfa607c4c0ea6e4eb449c796fb9a69f2e9 | |
parent | cd08282f32fee351a0c0895eb8b25855b0c81532 (diff) | |
download | gdb-ba5773c40e14732f263f8bf9f141c9ad293c3a0c.tar.gz |
* dwarf2read.c (read_func_scope): Restore list_in_scope properly
when we finish a function a context.
* buildsym.h (outermost_context_p): New macro.
(Bug analyzed by David Edelsohn.)
-rw-r--r-- | gdb/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/buildsym.h | 3 | ||||
-rw-r--r-- | gdb/dwarf2read.c | 5 |
3 files changed, 14 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 7985ef7e009..38edccb4cc9 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2002-11-08 Jim Blandy <jimb@redhat.com> + + * dwarf2read.c (read_func_scope): Restore list_in_scope properly + when we finish a function a context. + * buildsym.h (outermost_context_p): New macro. + (Bug analyzed by David Edelsohn.) + 2002-11-08 Andrew Cagney <ac131313@redhat.com> * blockframe.c: Include "dummy-frame.h". diff --git a/gdb/buildsym.h b/gdb/buildsym.h index 8a252cb2b4c..968a5793845 100644 --- a/gdb/buildsym.h +++ b/gdb/buildsym.h @@ -179,6 +179,9 @@ EXTERN int context_stack_size; #define pop_context() (&context_stack[--context_stack_depth]); +/* Non-zero if the context stack is empty. */ +#define outermost_context_p() (context_stack_depth == 0) + /* Nonzero if within a function (so symbols should be local, if nothing says specifically). */ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 7e017c6dfc0..13ddaea6530 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -2021,7 +2021,10 @@ read_func_scope (struct die_info *die, struct objfile *objfile, local_symbols = new->locals; param_symbols = new->params; - list_in_scope = &file_symbols; + /* If we've finished processing a top-level function, subsequent + symbols go in the file symbol list. */ + if (outermost_context_p ()) + list_in_scope = &file_symbols; } /* Process all the DIES contained within a lexical block scope. Start |