aboutsummaryrefslogtreecommitdiff
path: root/gdb/dbxread.c
diff options
context:
space:
mode:
authorKlee Dienes <kdienes@apple.com>2002-11-18 19:14:10 +0000
committerKlee Dienes <kdienes@apple.com>2002-11-18 19:14:10 +0000
commit0c5e171aedb2697b4ebf072e47f498aaf62b7a05 (patch)
treeeb5298b4d660ad5ee83458a089cf5509c1398a6f /gdb/dbxread.c
parent11041102f23fd5f34fd4b81b04788e403a70edee (diff)
downloadgdb-0c5e171aedb2697b4ebf072e47f498aaf62b7a05.zip
gdb-0c5e171aedb2697b4ebf072e47f498aaf62b7a05.tar.gz
gdb-0c5e171aedb2697b4ebf072e47f498aaf62b7a05.tar.bz2
2002-11-18 Klee Dienes <kdienes@apple.com>
* buildsym.h (pop_context): Convert to function, defined in buildsym.c. * buildsym.c: Include gdb_assert.h. (pop_context): Implement as C function. Add check for stack underflow. * dbxread.c (process_one_symbol): Complain and stop processing that symbol if we are already at the top of the context stack for a function-end N_FUN (this would imply an umatched RBRAC). Ditto when processing N_RBRAC.
Diffstat (limited to 'gdb/dbxread.c')
-rw-r--r--gdb/dbxread.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/gdb/dbxread.c b/gdb/dbxread.c
index 0cf7091..538f076 100644
--- a/gdb/dbxread.c
+++ b/gdb/dbxread.c
@@ -2774,6 +2774,13 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, char *name,
{
/* This N_FUN marks the end of a function. This closes off the
current block. */
+
+ if (context_stack_depth <= 0)
+ {
+ complain (&lbrac_mismatch_complaint, symnum);
+ break;
+ }
+
record_line (current_subfile, 0, function_start_offset + valu);
within_function = 0;
new = pop_context ();
@@ -2843,6 +2850,12 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, char *name,
N_SO, the linker did not relocate them (sigh). */
valu += last_source_start_addr;
+ if (context_stack_depth <= 0)
+ {
+ complain (&lbrac_mismatch_complaint, symnum);
+ break;
+ }
+
new = pop_context ();
if (desc != new->depth)
complain (&lbrac_mismatch_complaint, symnum);