* emultempl/mmo.em: Improve comments. Explain why there's
[deliverable/binutils-gdb.git] / gdb / stabsread.c
index 463c7b64cd40f8b3e318146e80e8871015dbcd5f..428cbc2e8bfb0516a43fa00529e9bd66a2cc67a1 100644 (file)
@@ -1,8 +1,8 @@
 /* Support routines for decoding "stabs" debugging information format.
 
-   Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
-   1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free
-   Software Foundation, Inc.
+   Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
+   1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+   Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -18,8 +18,8 @@
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
 
 /* Support routines for reading and decoding debugging information in
    the "stabs" format.  This format is used with many systems that use
@@ -174,14 +174,14 @@ static const char vb_name[] = "_vb$";
 static void
 invalid_cpp_abbrev_complaint (const char *arg1)
 {
-  complaint (&symfile_complaints, "invalid C++ abbreviation `%s'", arg1);
+  complaint (&symfile_complaints, _("invalid C++ abbreviation `%s'"), arg1);
 }
 
 static void
 reg_value_complaint (int regnum, int num_regs, const char *sym)
 {
   complaint (&symfile_complaints,
-            "register number %d too large (max %d) in symbol %s",
+            _("register number %d too large (max %d) in symbol %s"),
              regnum, num_regs - 1, sym);
 }
 
@@ -229,7 +229,7 @@ dbx_lookup_type (int typenums[2])
   if (filenum < 0 || filenum >= n_this_object_header_files)
     {
       complaint (&symfile_complaints,
-                "Invalid symbol data: type number (%d,%d) out of range at symtab pos %d.",
+                _("Invalid symbol data: type number (%d,%d) out of range at symtab pos %d."),
                 filenum, index, symnum);
       goto error_return;
     }
@@ -669,7 +669,7 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
 #endif
 
        default:
-         complaint (&symfile_complaints, "Unknown C++ symbol name `%s'",
+         complaint (&symfile_complaints, _("Unknown C++ symbol name `%s'"),
                     string);
          goto normal;          /* Do *something* with it */
        }
@@ -722,7 +722,7 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
        case 'r':
          {
            double d = atof (p);
-           char *dbl_valu;
+           gdb_byte *dbl_valu;
 
            /* FIXME-if-picky-about-floating-accuracy: Should be using
               target arithmetic to get the value.  real.c in GCC
@@ -737,7 +737,7 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
 
            SYMBOL_TYPE (sym) = lookup_fundamental_type (objfile,
                                                         FT_DBL_PREC_FLOAT);
-           dbl_valu = (char *)
+           dbl_valu =
              obstack_alloc (&objfile->objfile_obstack,
                             TYPE_LENGTH (SYMBOL_TYPE (sym)));
            store_typed_floating (dbl_valu, SYMBOL_TYPE (sym), d);
@@ -1345,7 +1345,7 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
 static struct type *
 error_type (char **pp, struct objfile *objfile)
 {
-  complaint (&symfile_complaints, "couldn't parse type; debugger out of date?");
+  complaint (&symfile_complaints, _("couldn't parse type; debugger out of date?"));
   while (1)
     {
       /* Skip to end of symbol.  */
@@ -1466,7 +1466,7 @@ again:
                /* Complain and keep going, so compilers can invent new
                   cross-reference types.  */
                complaint (&symfile_complaints,
-                          "Unrecognized cross-reference type `%c'", (*pp)[0]);
+                          _("Unrecognized cross-reference type `%c'"), (*pp)[0]);
                code = TYPE_CODE_STRUCT;
                break;
              }
@@ -1672,7 +1672,7 @@ again:
         else
           {
            complaint (&symfile_complaints,
-                      "Prototyped function type didn't end arguments with `#':\n%s",
+                      _("Prototyped function type didn't end arguments with `#':\n%s"),
                       type_start);
           }
 
@@ -1783,7 +1783,7 @@ again:
          return_type = read_type (pp, objfile);
          if (*(*pp)++ != ';')
            complaint (&symfile_complaints,
-                      "invalid (minimal) member type data format at symtab pos %d.",
+                      _("invalid (minimal) member type data format at symtab pos %d."),
                       symnum);
          type = allocate_stub_method (return_type);
          if (typenums[0] != -1)
@@ -1804,6 +1804,8 @@ again:
 
          return_type = read_type (pp, objfile);
          args = read_args (pp, ';', objfile, &nargs, &varargs);
+         if (args == NULL)
+           return error_type (pp, objfile);
          type = dbx_alloc_type (typenums, objfile);
          smash_to_method_type (type, domain, return_type, args,
                                nargs, varargs);
@@ -1911,7 +1913,7 @@ rs6000_builtin_type (int typenum)
 
   if (typenum >= 0 || typenum < -NUMBER_RECOGNIZED)
     {
-      complaint (&symfile_complaints, "Unknown builtin type %d", typenum);
+      complaint (&symfile_complaints, _("Unknown builtin type %d"), typenum);
       return builtin_type_error;
     }
   if (negative_types[-typenum] != NULL)
@@ -2076,7 +2078,7 @@ update_method_name_from_physname (char **old_name, char *physname)
   if (method_name == NULL)
     {
       complaint (&symfile_complaints,
-                "Method has bad physname %s\n", physname);
+                _("Method has bad physname %s\n"), physname);
       return;
     }
 
@@ -2274,7 +2276,7 @@ read_member_functions (struct field_info *fip, char **pp, struct type *type,
              break;
            default:
              complaint (&symfile_complaints,
-                        "const/volatile indicator missing, got '%c'", **pp);
+                        _("const/volatile indicator missing, got '%c'"), **pp);
              break;
            }
 
@@ -2357,7 +2359,7 @@ read_member_functions (struct field_info *fip, char **pp, struct type *type,
            default:
              /* error */
              complaint (&symfile_complaints,
-                        "member function type missing, got '%c'", (*pp)[-1]);
+                        _("member function type missing, got '%c'"), (*pp)[-1]);
              /* Fall through into normal member function.  */
 
            case '.':
@@ -2527,7 +2529,8 @@ read_member_functions (struct field_info *fip, char **pp, struct type *type,
            }
          else if (has_destructor && new_fnlist->fn_fieldlist.name[0] != '~')
            {
-             new_fnlist->fn_fieldlist.name = concat ("~", main_fn_name, NULL);
+             new_fnlist->fn_fieldlist.name =
+               concat ("~", main_fn_name, (char *)NULL);
              xfree (main_fn_name);
            }
          else if (!has_stub)
@@ -2623,7 +2626,7 @@ read_cpp_abbrev (struct field_info *fip, char **pp, struct type *type,
          if (name == NULL)
            {
              complaint (&symfile_complaints,
-                        "C++ abbreviated type name unknown at symtab pos %d",
+                        _("C++ abbreviated type name unknown at symtab pos %d"),
                         symnum);
              name = "FOO";
            }
@@ -2751,7 +2754,7 @@ read_one_struct_field (struct field_info *fip, char **pp, char *p,
          it is a field which has been optimized out.  The correct stab for
          this case is to use VISIBILITY_IGNORE, but that is a recent
          invention.  (2) It is a 0-size array.  For example
-         union { int num; char str[0]; } foo.  Printing "<no value>" for
+         union { int num; char str[0]; } foo.  Printing _("<no value>" for
          str in "p foo" is OK, since foo.str (and thus foo.str[3])
          will continue to work, and a 0-size array as a whole doesn't
          have any contents to print.
@@ -2976,7 +2979,7 @@ read_baseclasses (struct field_info *fip, char **pp, struct type *type,
          /* Unknown character.  Complain and treat it as non-virtual.  */
          {
            complaint (&symfile_complaints,
-                      "Unknown virtual character `%c' for baseclass", **pp);
+                      _("Unknown virtual character `%c' for baseclass"), **pp);
          }
        }
       ++(*pp);
@@ -2993,7 +2996,7 @@ read_baseclasses (struct field_info *fip, char **pp, struct type *type,
             public.  */
          {
            complaint (&symfile_complaints,
-                      "Unknown visibility `%c' for baseclass",
+                      _("Unknown visibility `%c' for baseclass"),
                       new->visibility);
            new->visibility = VISIBILITY_PUBLIC;
          }
@@ -3101,7 +3104,7 @@ read_tilde_fields (struct field_info *fip, char **pp, struct type *type,
                }
              /* Virtual function table field not found.  */
              complaint (&symfile_complaints,
-                        "virtual function table pointer not found when defining class `%s'",
+                        _("virtual function table pointer not found when defining class `%s'"),
                         TYPE_NAME (type));
              return 0;
            }
@@ -3211,7 +3214,7 @@ attach_fields_to_type (struct field_info *fip, struct type *type,
        default:
          /* Unknown visibility.  Complain and treat it as public.  */
          {
-           complaint (&symfile_complaints, "Unknown visibility `%c' for field",
+           complaint (&symfile_complaints, _("Unknown visibility `%c' for field"),
                       fip->list->visibility);
          }
          break;
@@ -3253,7 +3256,7 @@ complain_about_struct_wipeout (struct type *type)
     }
 
   complaint (&symfile_complaints,
-            "struct/union type gets multiply defined: %s%s", kind, name);
+            _("struct/union type gets multiply defined: %s%s"), kind, name);
 }
 
 
@@ -3971,7 +3974,7 @@ handle_true_range:
       static struct type *range_type_index;
 
       complaint (&symfile_complaints,
-                "base type %d of range type is not defined", rangenums[1]);
+                _("base type %d of range type is not defined"), rangenums[1]);
       if (range_type_index == NULL)
        range_type_index =
          init_type (TYPE_CODE_INT, TARGET_INT_BIT / TARGET_CHAR_BIT,
@@ -3984,8 +3987,8 @@ handle_true_range:
 }
 
 /* Read in an argument list.  This is a list of types, separated by commas
-   and terminated with END.  Return the list of types read in, or (struct type
-   **)-1 if there is an error.  */
+   and terminated with END.  Return the list of types read in, or NULL
+   if there is an error.  */
 
 static struct field *
 read_args (char **pp, int end, struct objfile *objfile, int *nargsp,
@@ -4000,7 +4003,7 @@ read_args (char **pp, int end, struct objfile *objfile, int *nargsp,
     {
       if (**pp != ',')
        /* Invalid argument list: no ','.  */
-       return (struct field *) -1;
+       return NULL;
       (*pp)++;
       STABS_CONTINUE (pp, objfile);
       types[n++] = read_type (pp, objfile);
@@ -4048,7 +4051,7 @@ common_block_start (char *name, struct objfile *objfile)
   if (common_block_name != NULL)
     {
       complaint (&symfile_complaints,
-                "Invalid symbol data: common block within common block");
+                _("Invalid symbol data: common block within common block"));
     }
   common_block = local_symbols;
   common_block_i = local_symbols ? local_symbols->nsyms : 0;
@@ -4074,7 +4077,7 @@ common_block_end (struct objfile *objfile)
 
   if (common_block_name == NULL)
     {
-      complaint (&symfile_complaints, "ECOMM symbol unmatched by BCOMM");
+      complaint (&symfile_complaints, _("ECOMM symbol unmatched by BCOMM"));
       return;
     }
 
@@ -4187,7 +4190,7 @@ cleanup_undefined_types (void)
 
                if (typename == NULL)
                  {
-                   complaint (&symfile_complaints, "need a type name");
+                   complaint (&symfile_complaints, _("need a type name"));
                    break;
                  }
                for (ppt = file_symbols; ppt; ppt = ppt->next)
@@ -4211,8 +4214,8 @@ cleanup_undefined_types (void)
        default:
          {
            complaint (&symfile_complaints,
-                      "forward-referenced types left unresolved, "
-                       "type code %d.",
+                      _("forward-referenced types left unresolved, "
+                       "type code %d."),
                       TYPE_CODE (*type));
          }
          break;
@@ -4354,7 +4357,7 @@ scan_file_globals (struct objfile *objfile)
            SYMBOL_CLASS (prev) = LOC_UNRESOLVED;
          else
            complaint (&symfile_complaints,
-                      "%s: common block `%s' from global_sym_chain unresolved",
+                      _("%s: common block `%s' from global_sym_chain unresolved"),
                       objfile->name, DEPRECATED_SYMBOL_NAME (prev));
        }
     }
This page took 0.028589 seconds and 4 git commands to generate.