* xcoffread.c: Call complain() rather than error() or printing a
authorJim Kingdon <jkingdon@engr.sgi.com>
Wed, 12 Apr 1995 22:17:41 +0000 (22:17 +0000)
committerJim Kingdon <jkingdon@engr.sgi.com>
Wed, 12 Apr 1995 22:17:41 +0000 (22:17 +0000)
warning.

gdb/ChangeLog
gdb/xcoffread.c

index 80b4bb573ecd11a56a1b69f1e85621f20afc8684..9e706d83e2eb57bd2da10cb94205a2a9aeeac0d6 100644 (file)
@@ -1,3 +1,8 @@
+Wed Apr 12 14:34:31 1995  Jim Kingdon  <kingdon@deneb.cygnus.com>
+
+       * xcoffread.c: Call complain() rather than error() or printing a
+       warning.
+
 start-sanitize-arc
 Wed Apr 12 08:15:27 1995  Doug Evans  <dje@canuck.cygnus.com>
 
index 7ee67940bdb3d7819b998755f483f332f395fe68..c727642ccb804abc60a53f70b713a3fb1603dfbc 100644 (file)
@@ -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)