diff options
author | Jim Kingdon <jkingdon@engr.sgi.com> | 1995-04-12 22:17:41 +0000 |
---|---|---|
committer | Jim Kingdon <jkingdon@engr.sgi.com> | 1995-04-12 22:17:41 +0000 |
commit | f8203ed005ff2eed14a018ba83ed8e4b111f7bbe (patch) | |
tree | a7249976784123dad643fd9e0835c94cfd234f0f /gdb/xcoffread.c | |
parent | 0fb26eac12dad00e77d98f010234c0bee7ca03a0 (diff) | |
download | gdb-f8203ed005ff2eed14a018ba83ed8e4b111f7bbe.zip gdb-f8203ed005ff2eed14a018ba83ed8e4b111f7bbe.tar.gz gdb-f8203ed005ff2eed14a018ba83ed8e4b111f7bbe.tar.bz2 |
* xcoffread.c: Call complain() rather than error() or printing a
warning.
Diffstat (limited to 'gdb/xcoffread.c')
-rw-r--r-- | gdb/xcoffread.c | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c index 7ee6794..c727642 100644 --- a/gdb/xcoffread.c +++ b/gdb/xcoffread.c @@ -152,6 +152,9 @@ static struct complaint storclass_complaint = static struct complaint bf_notfound_complaint = {"line numbers off, `.bf' symbol not found", 0, 0}; +extern struct complaint ef_complaint; +extern struct complaint eb_complaint; + static void enter_line_range PARAMS ((struct subfile *, unsigned, unsigned, CORE_ADDR, CORE_ADDR, unsigned *)); @@ -1633,10 +1636,13 @@ read_xcoff_symtab (objfile, nsyms) fcn_last_line = main_aux.x_sym.x_misc.x_lnsz.x_lnno; new = pop_context (); - if (context_stack_depth != 0) - error ("\ - invalid symbol data; .bf/.ef/.bb/.eb symbol mismatch, at symbol %d.", - symnum); + /* Stack must be empty now. */ + if (context_stack_depth > 0 || new == NULL) + { + complain (&ef_complaint, cs->c_symnum); + within_function = 0; + break; + } finish_block (new->name, &local_symbols, new->old_blocks, new->start_addr, @@ -1665,12 +1671,16 @@ read_xcoff_symtab (objfile, nsyms) case C_ARG: case C_REGPARM: + case C_REG: case C_TPDEF: case C_STRTAG: case C_UNTAG: case C_ENTAG: - printf_unfiltered - ("ERROR: Unimplemented storage class: %d.\n", cs->c_sclass); + { + static struct complaint msg = + {"Unrecognized storage class %d.", 0, 0}; + complain (&msg, cs->c_sclass); + } break; case C_LABEL: @@ -1741,12 +1751,11 @@ read_xcoff_symtab (objfile, nsyms) else if (STREQ (cs->c_name, ".eb")) { new = pop_context (); - if (depth != new->depth) - error ("\ - Invalid symbol data: .bb/.eb symbol mismatch at symbol %d.", - symnum); - - depth--; + if (depth-- != new->depth) + { + complain (&eb_complaint, symnum); + break; + } if (local_symbols && context_stack_depth > 0) { /* Make a block for the local symbols within. */ @@ -1937,15 +1946,6 @@ process_xcoff_symbol (cs, objfile) (sym2, within_function ? &local_symbols : &file_symbols); break; - case C_REG: - printf_unfiltered ("ERROR! C_REG is not fully implemented!\n"); - SYMBOL_CLASS (sym) = LOC_REGISTER; - SYMBOL_NAME (sym) = SYMNAME_ALLOC (name, symname_alloced); - SYMBOL_SECTION (sym) = cs->c_secnum; - SYMBOL_DUP (sym, sym2); - add_symbol_to_list (sym2, &local_symbols); - break; - case C_RSYM: pp = (char*) strchr (name, ':'); if (pp) |