Change regcache list to be an hash map
[deliverable/binutils-gdb.git] / gdb / stabsread.c
index c3da9a239b4b33f9cce7bc5df4ab430e924c33e5..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,7 +1001,7 @@ 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;
            }
          ftype->set_num_fields (nparams);
@@ -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;
@@ -1366,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':
@@ -1836,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;
@@ -1848,7 +1810,7 @@ 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);
         }
         func_type->set_num_fields (num_args);
         TYPE_PROTOTYPED (func_type) = 1;
@@ -2787,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
@@ -2839,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);
@@ -2916,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
@@ -3160,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 = newobj->field.type->name ();
+      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 == ';')
@@ -3232,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)
                {
@@ -3309,9 +3271,10 @@ attach_fields_to_type (struct stab_field_info *fip, struct type *type,
      array of fields, and create blank visibility bitfields if necessary.  */
 
   type->set_num_fields (nfields);
-  TYPE_FIELDS (type) = (struct field *)
-    TYPE_ALLOC (type, sizeof (struct field) * nfields);
-  memset (TYPE_FIELDS (type), 0, sizeof (struct field) * 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)
     {
@@ -3337,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:
@@ -3655,9 +3618,10 @@ read_enum_type (const char **pp, struct type *type,
   if (unsigned_enum)
     TYPE_UNSIGNED (type) = 1;
   type->set_num_fields (nsyms);
-  TYPE_FIELDS (type) = (struct field *)
-    TYPE_ALLOC (type, sizeof (struct field) * nsyms);
-  memset (TYPE_FIELDS (type), 0, sizeof (struct field) * 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
@@ -3678,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)
@@ -4239,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;
 }
This page took 0.028079 seconds and 4 git commands to generate.