Change regcache list to be an hash map
[deliverable/binutils-gdb.git] / gdb / stabsread.c
index 716b5f3f531d891e303c25c7d095f7be9629f816..d2ff54a47bdf5291690d118684cc62b89482cddf 100644 (file)
@@ -723,12 +723,6 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
          /* This was an anonymous type that was never fixed up.  */
          goto normal;
 
-       case 'X':
-         /* SunPRO (3.0 at least) static variable encoding.  */
-         if (gdbarch_static_transform_name_p (gdbarch))
-           goto normal;
-         /* fall through */
-
        default:
          complaint (_("Unknown C++ symbol name `%s'"),
                     string);
@@ -986,8 +980,9 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
            }
 
          /* Allocate parameter information fields and fill them in.  */
-         TYPE_FIELDS (ftype) = (struct field *)
-           TYPE_ALLOC (ftype, nsemi * sizeof (struct field));
+         ftype->set_fields
+           ((struct field *)
+            TYPE_ALLOC (ftype, nsemi * sizeof (struct field)));
          while (*p++ == ';')
            {
              struct type *ptype;
@@ -1006,10 +1001,10 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
                 FIXME: Do we need a new builtin_promoted_int_arg ?  */
              if (ptype->code () == TYPE_CODE_VOID)
                ptype = objfile_type (objfile)->builtin_int;
-             TYPE_FIELD_TYPE (ftype, nparams) = ptype;
+             ftype->field (nparams).set_type (ptype);
              TYPE_FIELD_ARTIFICIAL (ftype, nparams++) = 0;
            }
-         TYPE_NFIELDS (ftype) = nparams;
+         ftype->set_num_fields (nparams);
          TYPE_PROTOTYPED (ftype) = 1;
        }
       break;
@@ -1185,23 +1180,6 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
       SYMBOL_TYPE (sym) = read_type (&p, objfile);
       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
       SET_SYMBOL_VALUE_ADDRESS (sym, valu);
-      if (gdbarch_static_transform_name_p (gdbarch)
-         && gdbarch_static_transform_name (gdbarch, sym->linkage_name ())
-            != sym->linkage_name ())
-       {
-         struct bound_minimal_symbol msym;
-
-         msym = lookup_minimal_symbol (sym->linkage_name (), NULL, objfile);
-         if (msym.minsym != NULL)
-           {
-             const char *new_name = gdbarch_static_transform_name
-               (gdbarch, sym->linkage_name ());
-
-             sym->set_linkage_name (new_name);
-             SET_SYMBOL_VALUE_ADDRESS (sym,
-                                       BMSYMBOL_VALUE_ADDRESS (msym));
-           }
-       }
       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
       add_symbol_to_list (sym, get_file_symbols ());
       break;
@@ -1238,7 +1216,7 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
          a base type which did not have its name defined when the
          derived class was output.  We fill in the derived class's
          base part member's name here in that case.  */
-      if (TYPE_NAME (SYMBOL_TYPE (sym)) != NULL)
+      if (SYMBOL_TYPE (sym)->name () != NULL)
        if ((SYMBOL_TYPE (sym)->code () == TYPE_CODE_STRUCT
             || SYMBOL_TYPE (sym)->code () == TYPE_CODE_UNION)
            && TYPE_N_BASECLASSES (SYMBOL_TYPE (sym)))
@@ -1248,10 +1226,10 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
            for (j = TYPE_N_BASECLASSES (SYMBOL_TYPE (sym)) - 1; j >= 0; j--)
              if (TYPE_BASECLASS_NAME (SYMBOL_TYPE (sym), j) == 0)
                TYPE_BASECLASS_NAME (SYMBOL_TYPE (sym), j) =
-                 TYPE_NAME (TYPE_BASECLASS (SYMBOL_TYPE (sym), j));
+                 TYPE_BASECLASS (SYMBOL_TYPE (sym), j)->name ();
          }
 
-      if (TYPE_NAME (SYMBOL_TYPE (sym)) == NULL)
+      if (SYMBOL_TYPE (sym)->name () == NULL)
        {
          if ((SYMBOL_TYPE (sym)->code () == TYPE_CODE_PTR
               && strcmp (sym->linkage_name (), vtbl_ptr_name))
@@ -1294,12 +1272,10 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
 
              /* Pascal accepts names for pointer types.  */
              if (get_current_subfile ()->language == language_pascal)
-               {
-                 TYPE_NAME (SYMBOL_TYPE (sym)) = sym->linkage_name ();
-               }
+               SYMBOL_TYPE (sym)->set_name (sym->linkage_name ());
            }
          else
-           TYPE_NAME (SYMBOL_TYPE (sym)) = sym->linkage_name ();
+           SYMBOL_TYPE (sym)->set_name (sym->linkage_name ());
        }
 
       add_symbol_to_list (sym, get_file_symbols ());
@@ -1313,13 +1289,13 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
           SYMBOL_ACLASS_INDEX (struct_sym) = LOC_TYPEDEF;
           SYMBOL_VALUE (struct_sym) = valu;
           SYMBOL_DOMAIN (struct_sym) = STRUCT_DOMAIN;
-          if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
-            TYPE_NAME (SYMBOL_TYPE (sym))
-             obconcat (&objfile->objfile_obstack, sym->linkage_name (),
-                         (char *) NULL);
+          if (SYMBOL_TYPE (sym)->name () == 0)
+           SYMBOL_TYPE (sym)->set_name
+             (obconcat (&objfile->objfile_obstack, sym->linkage_name (),
+                        (char *) NULL));
           add_symbol_to_list (struct_sym, get_file_symbols ());
         }
-      
+
       break;
 
     case 'T':
@@ -1340,10 +1316,10 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
       SYMBOL_VALUE (sym) = valu;
       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
-      if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
-       TYPE_NAME (SYMBOL_TYPE (sym))
-         obconcat (&objfile->objfile_obstack, sym->linkage_name (),
-                     (char *) NULL);
+      if (SYMBOL_TYPE (sym)->name () == 0)
+       SYMBOL_TYPE (sym)->set_name
+         (obconcat (&objfile->objfile_obstack, sym->linkage_name (),
+                    (char *) NULL));
       add_symbol_to_list (sym, get_file_symbols ());
 
       if (synonym)
@@ -1355,10 +1331,10 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
          SYMBOL_ACLASS_INDEX (typedef_sym) = LOC_TYPEDEF;
          SYMBOL_VALUE (typedef_sym) = valu;
          SYMBOL_DOMAIN (typedef_sym) = VAR_DOMAIN;
-         if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
-           TYPE_NAME (SYMBOL_TYPE (sym))
-             obconcat (&objfile->objfile_obstack, sym->linkage_name (),
-                         (char *) NULL);
+         if (SYMBOL_TYPE (sym)->name () == 0)
+           SYMBOL_TYPE (sym)->set_name
+             (obconcat (&objfile->objfile_obstack, sym->linkage_name (),
+                        (char *) NULL));
          add_symbol_to_list (typedef_sym, get_file_symbols ());
        }
       break;
@@ -1368,24 +1344,8 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
       SYMBOL_TYPE (sym) = read_type (&p, objfile);
       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
       SET_SYMBOL_VALUE_ADDRESS (sym, valu);
-      if (gdbarch_static_transform_name_p (gdbarch)
-         && gdbarch_static_transform_name (gdbarch, sym->linkage_name ())
-            != sym->linkage_name ())
-       {
-         struct bound_minimal_symbol msym;
-
-         msym = lookup_minimal_symbol (sym->linkage_name (), NULL, objfile);
-         if (msym.minsym != NULL)
-           {
-             const char *new_name = gdbarch_static_transform_name
-               (gdbarch, sym->linkage_name ());
-
-             sym->set_linkage_name (new_name);
-             SET_SYMBOL_VALUE_ADDRESS (sym, BMSYMBOL_VALUE_ADDRESS (msym));
-           }
-       }
       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
-       add_symbol_to_list (sym, get_local_symbols ());
+      add_symbol_to_list (sym, get_local_symbols ());
       break;
 
     case 'v':
@@ -1688,7 +1648,7 @@ again:
           type.  */
        type = dbx_alloc_type (typenums, objfile);
        type->set_code (code);
-       TYPE_NAME (type) = type_name;
+       type->set_name (type_name);
        INIT_CPLUS_SPECIFIC (type);
        TYPE_STUB (type) = 1;
 
@@ -1752,7 +1712,7 @@ again:
                "complete_this_type" function, but never create unnecessary
                copies of a type otherwise.  */
            replace_type (type, xtype);
-           TYPE_NAME (type) = NULL;
+           type->set_name (NULL);
          }
        else
          {
@@ -1838,10 +1798,10 @@ again:
             && arg_types->type->code () == TYPE_CODE_VOID)
           num_args = 0;
 
-        TYPE_FIELDS (func_type)
-          = (struct field *) TYPE_ALLOC (func_type,
-                                         num_args * sizeof (struct field));
-        memset (TYPE_FIELDS (func_type), 0, num_args * sizeof (struct field));
+       func_type->set_fields
+         ((struct field *) TYPE_ALLOC (func_type,
+                                       num_args * sizeof (struct field)));
+        memset (func_type->fields (), 0, num_args * sizeof (struct field));
         {
           int i;
           struct type_list *t;
@@ -1850,9 +1810,9 @@ again:
              when we read it, so the list is reversed.  Build the
              fields array right-to-left.  */
           for (t = arg_types, i = num_args - 1; t; t = t->next, i--)
-            TYPE_FIELD_TYPE (func_type, i) = t->type;
+            func_type->field (i).set_type (t->type);
         }
-        TYPE_NFIELDS (func_type) = num_args;
+        func_type->set_num_fields (num_args);
         TYPE_PROTOTYPED (func_type) = 1;
 
         type = func_type;
@@ -2750,7 +2710,7 @@ read_cpp_abbrev (struct stab_field_info *fip, const char **pp,
       switch (cpp_abbrev)
        {
        case 'f':               /* $vf -- a virtual function table pointer */
-         name = TYPE_NAME (context);
+         name = context->name ();
          if (name == NULL)
            {
              name = "";
@@ -2760,7 +2720,7 @@ read_cpp_abbrev (struct stab_field_info *fip, const char **pp,
          break;
 
        case 'b':               /* $vb -- a virtual bsomethingorother */
-         name = TYPE_NAME (context);
+         name = context->name ();
          if (name == NULL)
            {
              complaint (_("C++ abbreviated type name "
@@ -2789,7 +2749,7 @@ read_cpp_abbrev (struct stab_field_info *fip, const char **pp,
          invalid_cpp_abbrev_complaint (*pp);
          return 0;
        }
-      fip->list->field.type = read_type (pp, objfile);
+      fip->list->field.set_type (read_type (pp, objfile));
       if (**pp == ',')
        (*pp)++;                /* Skip the comma.  */
       else
@@ -2841,7 +2801,7 @@ read_one_struct_field (struct stab_field_info *fip, const char **pp,
       fip->list->visibility = VISIBILITY_PUBLIC;
     }
 
-  fip->list->field.type = read_type (pp, objfile);
+  fip->list->field.set_type (read_type (pp, objfile));
   if (**pp == ':')
     {
       p = ++(*pp);
@@ -2918,7 +2878,7 @@ read_one_struct_field (struct stab_field_info *fip, const char **pp,
          Note that forward refs cannot be packed,
          and treat enums as if they had the width of ints.  */
 
-      struct type *field_type = check_typedef (FIELD_TYPE (fip->list->field));
+      struct type *field_type = check_typedef (fip->list->field.type ());
 
       if (field_type->code () != TYPE_CODE_INT
          && field_type->code () != TYPE_CODE_RANGE
@@ -3162,8 +3122,8 @@ read_baseclasses (struct stab_field_info *fip, const char **pp,
          base class.  Read it, and remember it's type name as this
          field's name.  */
 
-      newobj->field.type = read_type (pp, objfile);
-      newobj->field.name = TYPE_NAME (newobj->field.type);
+      newobj->field.set_type (read_type (pp, objfile));
+      newobj->field.name = newobj->field.type ()->name ();
 
       /* Skip trailing ';' and bump count of number of fields seen.  */
       if (**pp == ';')
@@ -3234,7 +3194,7 @@ read_tilde_fields (struct stab_field_info *fip, const char **pp,
          set_type_vptr_basetype (type, t);
          if (type == t)        /* Our own class provides vtbl ptr.  */
            {
-             for (i = TYPE_NFIELDS (t) - 1;
+             for (i = t->num_fields () - 1;
                   i >= TYPE_N_BASECLASSES (t);
                   --i)
                {
@@ -3250,7 +3210,7 @@ read_tilde_fields (struct stab_field_info *fip, const char **pp,
              /* Virtual function table field not found.  */
              complaint (_("virtual function table pointer "
                           "not found when defining class `%s'"),
-                        TYPE_NAME (type));
+                        type->name ());
              return 0;
            }
          else
@@ -3310,10 +3270,11 @@ attach_fields_to_type (struct stab_field_info *fip, struct type *type,
      non-public fields.  Record the field count, allocate space for the
      array of fields, and create blank visibility bitfields if necessary.  */
 
-  TYPE_NFIELDS (type) = nfields;
-  TYPE_FIELDS (type) = (struct field *)
-    TYPE_ALLOC (type, sizeof (struct field) * nfields);
-  memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
+  type->set_num_fields (nfields);
+  type->set_fields
+    ((struct field *)
+     TYPE_ALLOC (type, sizeof (struct field) * nfields));
+  memset (type->fields (), 0, sizeof (struct field) * nfields);
 
   if (non_public_fields)
     {
@@ -3339,7 +3300,7 @@ attach_fields_to_type (struct stab_field_info *fip, struct type *type,
 
   while (nfields-- > 0)
     {
-      TYPE_FIELD (type, nfields) = fip->list->field;
+      type->field (nfields) = fip->list->field;
       switch (fip->list->visibility)
        {
        case VISIBILITY_PRIVATE:
@@ -3379,9 +3340,9 @@ complain_about_struct_wipeout (struct type *type)
   const char *name = "";
   const char *kind = "";
 
-  if (TYPE_NAME (type))
+  if (type->name ())
     {
-      name = TYPE_NAME (type);
+      name = type->name ();
       switch (type->code ())
         {
         case TYPE_CODE_STRUCT: kind = "struct "; break;
@@ -3656,10 +3617,11 @@ read_enum_type (const char **pp, struct type *type,
   TYPE_STUB (type) = 0;
   if (unsigned_enum)
     TYPE_UNSIGNED (type) = 1;
-  TYPE_NFIELDS (type) = nsyms;
-  TYPE_FIELDS (type) = (struct field *)
-    TYPE_ALLOC (type, sizeof (struct field) * nsyms);
-  memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nsyms);
+  type->set_num_fields (nsyms);
+  type->set_fields
+    ((struct field *)
+     TYPE_ALLOC (type, sizeof (struct field) * nsyms));
+  memset (type->fields (), 0, sizeof (struct field) * nsyms);
 
   /* Find the symbols for the values and put them into the type.
      The symbols can be found in the symlist that we put them on
@@ -3680,7 +3642,7 @@ read_enum_type (const char **pp, struct type *type,
 
          SYMBOL_TYPE (xsym) = type;
          TYPE_FIELD_NAME (type, n) = xsym->linkage_name ();
-         SET_FIELD_ENUMVAL (TYPE_FIELD (type, n), SYMBOL_VALUE (xsym));
+         SET_FIELD_ENUMVAL (type->field (n), SYMBOL_VALUE (xsym));
          TYPE_FIELD_BITSIZE (type, n) = 0;
        }
       if (syms == osyms)
@@ -4241,7 +4203,7 @@ read_args (const char **pp, int end, struct objfile *objfile, int *nargsp,
 
   rval = XCNEWVEC (struct field, n);
   for (i = 0; i < n; i++)
-    rval[i].type = types[i];
+    rval[i].set_type (types[i]);
   *nargsp = n;
   return rval;
 }
@@ -4410,7 +4372,7 @@ add_undefined_type_1 (struct type *type)
 static void
 add_undefined_type (struct type *type, int typenums[2])
 {
-  if (TYPE_NAME (type) == NULL)
+  if (type->name () == NULL)
     add_undefined_type_noname (type, typenums);
   else
     add_undefined_type_1 (type);
@@ -4495,7 +4457,7 @@ cleanup_undefined_types_1 (void)
                struct pending *ppt;
                int i;
                /* Name of the type, without "struct" or "union".  */
-               const char *type_name = TYPE_NAME (*type);
+               const char *type_name = (*type)->name ();
 
                if (type_name == NULL)
                  {
This page took 0.029634 seconds and 4 git commands to generate.