.
[deliverable/binutils-gdb.git] / gdb / gdbtypes.c
index 3b8e62faa87e763cb8b383d67f7fcdc5db1f188e..f98cf1c579f632e92712912ff195cd7fe2fdc69a 100644 (file)
@@ -60,6 +60,7 @@ struct type *builtin_type_long_double;
 struct type *builtin_type_complex;
 struct type *builtin_type_double_complex;
 struct type *builtin_type_string;
+struct type *builtin_type_int0;
 struct type *builtin_type_int8;
 struct type *builtin_type_uint8;
 struct type *builtin_type_int16;
@@ -126,11 +127,6 @@ struct extra
     int len;
   };                           /* maximum extension is 128! FIXME */
 
-static void add_name (struct extra *, char *);
-static void add_mangled_type (struct extra *, struct type *);
-#if 0 /* OBSOLETE CFront */
-// OBSOLETE static void cfront_mangle_name (struct type *, int, int);
-#endif /* OBSOLETE CFront */
 static void print_bit_vector (B_TYPE *, int);
 static void print_arg_types (struct field *, int, int);
 static void dump_fn_fieldlists (struct type *, int);
@@ -146,7 +142,7 @@ static void virtual_base_list_aux (struct type *dclass);
 struct type *
 alloc_type (struct objfile *objfile)
 {
-  register struct type *type;
+  struct type *type;
 
   /* Alloc the structure and start off with all fields zeroed. */
 
@@ -227,7 +223,7 @@ smash_type (struct type *type)
 struct type *
 make_pointer_type (struct type *type, struct type **typeptr)
 {
-  register struct type *ntype; /* New type */
+  struct type *ntype;  /* New type */
   struct objfile *objfile;
 
   ntype = TYPE_POINTER_TYPE (type);
@@ -294,7 +290,7 @@ lookup_pointer_type (struct type *type)
 struct type *
 make_reference_type (struct type *type, struct type **typeptr)
 {
-  register struct type *ntype; /* New type */
+  struct type *ntype;  /* New type */
   struct objfile *objfile;
 
   ntype = TYPE_REFERENCE_TYPE (type);
@@ -356,7 +352,7 @@ lookup_reference_type (struct type *type)
 struct type *
 make_function_type (struct type *type, struct type **typeptr)
 {
-  register struct type *ntype; /* New type */
+  struct type *ntype;  /* New type */
   struct objfile *objfile;
 
   if (typeptr == 0 || *typeptr == 0)   /* We'll need to allocate one.  */
@@ -434,7 +430,7 @@ address_space_int_to_name (int space_flag)
 /* Create a new type with instance flags NEW_FLAGS, based on TYPE.
    If STORAGE is non-NULL, create the new type instance there.  */
 
-struct type *
+static struct type *
 make_qualified_type (struct type *type, int new_flags,
                     struct type *storage)
 {
@@ -508,8 +504,8 @@ make_type_with_address_space (struct type *type, int space_flag)
 struct type *
 make_cv_type (int cnst, int voltl, struct type *type, struct type **typeptr)
 {
-  register struct type *ntype; /* New type */
-  register struct type *tmp_type = type;       /* tmp type */
+  struct type *ntype;  /* New type */
+  struct type *tmp_type = type;        /* tmp type */
   struct objfile *objfile;
 
   int new_flags = (TYPE_INSTANCE_FLAGS (type)
@@ -592,7 +588,7 @@ replace_type (struct type *ntype, struct type *type)
 struct type *
 lookup_member_type (struct type *type, struct type *domain)
 {
-  register struct type *mtype;
+  struct type *mtype;
 
   mtype = alloc_type (TYPE_OBJFILE (type));
   smash_to_member_type (mtype, domain, type);
@@ -1019,7 +1015,7 @@ smash_to_method_type (struct type *type, struct type *domain,
    "union ", or "enum ".  If the type has a NULL name, return NULL.  */
 
 char *
-type_name_no_tag (register const struct type *type)
+type_name_no_tag (const struct type *type)
 {
   if (TYPE_TAG_NAME (type) != NULL)
     return TYPE_TAG_NAME (type);
@@ -1055,8 +1051,8 @@ lookup_primitive_typename (char *name)
 struct type *
 lookup_typename (char *name, struct block *block, int noerr)
 {
-  register struct symbol *sym;
-  register struct type *tmp;
+  struct symbol *sym;
+  struct type *tmp;
 
   sym = lookup_symbol (name, block, VAR_DOMAIN, 0, (struct symtab **) NULL);
   if (sym == NULL || SYMBOL_CLASS (sym) != LOC_TYPEDEF)
@@ -1109,7 +1105,7 @@ lookup_signed_typename (char *name)
 struct type *
 lookup_struct (char *name, struct block *block)
 {
-  register struct symbol *sym;
+  struct symbol *sym;
 
   sym = lookup_symbol (name, block, STRUCT_DOMAIN, 0,
                       (struct symtab **) NULL);
@@ -1131,7 +1127,7 @@ lookup_struct (char *name, struct block *block)
 struct type *
 lookup_union (char *name, struct block *block)
 {
-  register struct symbol *sym;
+  struct symbol *sym;
   struct type *t;
 
   sym = lookup_symbol (name, block, STRUCT_DOMAIN, 0,
@@ -1163,7 +1159,7 @@ lookup_union (char *name, struct block *block)
 struct type *
 lookup_enum (char *name, struct block *block)
 {
-  register struct symbol *sym;
+  struct symbol *sym;
 
   sym = lookup_symbol (name, block, STRUCT_DOMAIN, 0,
                       (struct symtab **) NULL);
@@ -1477,198 +1473,10 @@ check_typedef (struct type *type)
   return type;
 }
 
-#if 0 /* OBSOLETE CFront */
-// OBSOLETE  /* New code added to support parsing of Cfront stabs strings */
-// OBSOLETE  #define INIT_EXTRA { pextras->len=0; pextras->str[0]='\0'; }
-// OBSOLETE  #define ADD_EXTRA(c) { pextras->str[pextras->len++]=c; }
-
-// OBSOLETE  static void
-// OBSOLETE  add_name (struct extra *pextras, char *n)
-// OBSOLETE  {
-// OBSOLETE    int nlen;
-
-// OBSOLETE    if ((nlen = (n ? strlen (n) : 0)) == 0)
-// OBSOLETE      return;
-// OBSOLETE    sprintf (pextras->str + pextras->len, "%d%s", nlen, n);
-// OBSOLETE    pextras->len = strlen (pextras->str);
-// OBSOLETE  }
-
-// OBSOLETE  static void
-// OBSOLETE  add_mangled_type (struct extra *pextras, struct type *t)
-// OBSOLETE  {
-// OBSOLETE    enum type_code tcode;
-// OBSOLETE    int tlen, tflags;
-// OBSOLETE    char *tname;
-
-// OBSOLETE    tcode = TYPE_CODE (t);
-// OBSOLETE    tlen = TYPE_LENGTH (t);
-// OBSOLETE    tflags = TYPE_FLAGS (t);
-// OBSOLETE    tname = TYPE_NAME (t);
-// OBSOLETE    /* args of "..." seem to get mangled as "e" */
-
-// OBSOLETE    switch (tcode)
-// OBSOLETE      {
-// OBSOLETE      case TYPE_CODE_INT:
-// OBSOLETE        if (tflags == 1)
-// OBSOLETE    ADD_EXTRA ('U');
-// OBSOLETE        switch (tlen)
-// OBSOLETE    {
-// OBSOLETE    case 1:
-// OBSOLETE      ADD_EXTRA ('c');
-// OBSOLETE      break;
-// OBSOLETE    case 2:
-// OBSOLETE      ADD_EXTRA ('s');
-// OBSOLETE      break;
-// OBSOLETE    case 4:
-// OBSOLETE      {
-// OBSOLETE        char *pname;
-// OBSOLETE        if ((pname = strrchr (tname, 'l'), pname) && !strcmp (pname, "long"))
-// OBSOLETE          {
-// OBSOLETE            ADD_EXTRA ('l');
-// OBSOLETE          }
-// OBSOLETE        else
-// OBSOLETE          {
-// OBSOLETE            ADD_EXTRA ('i');
-// OBSOLETE          }
-// OBSOLETE      }
-// OBSOLETE      break;
-// OBSOLETE    default:
-// OBSOLETE      {
-// OBSOLETE        complaint (&symfile_complaints, "Bad int type code length x%x",
-// OBSOLETE                   tlen);
-// OBSOLETE      }
-// OBSOLETE    }
-// OBSOLETE        break;
-// OBSOLETE      case TYPE_CODE_FLT:
-// OBSOLETE        switch (tlen)
-// OBSOLETE    {
-// OBSOLETE    case 4:
-// OBSOLETE      ADD_EXTRA ('f');
-// OBSOLETE      break;
-// OBSOLETE    case 8:
-// OBSOLETE      ADD_EXTRA ('d');
-// OBSOLETE      break;
-// OBSOLETE    case 16:
-// OBSOLETE      ADD_EXTRA ('r');
-// OBSOLETE      break;
-// OBSOLETE    default:
-// OBSOLETE      {
-// OBSOLETE        complaint (&symfile_complaints, "Bad float type code length x%x",
-// OBSOLETE                   tlen);
-// OBSOLETE      }
-// OBSOLETE    }
-// OBSOLETE        break;
-// OBSOLETE      case TYPE_CODE_REF:
-// OBSOLETE        ADD_EXTRA ('R');
-// OBSOLETE        /* followed by what it's a ref to */
-// OBSOLETE        break;
-// OBSOLETE      case TYPE_CODE_PTR:
-// OBSOLETE        ADD_EXTRA ('P');
-// OBSOLETE        /* followed by what it's a ptr to */
-// OBSOLETE        break;
-// OBSOLETE      case TYPE_CODE_TYPEDEF:
-// OBSOLETE        {
-// OBSOLETE    complaint (&symfile_complaints,
-// OBSOLETE               "Typedefs in overloaded functions not yet supported");
-// OBSOLETE        }
-// OBSOLETE        /* followed by type bytes & name */
-// OBSOLETE        break;
-// OBSOLETE      case TYPE_CODE_FUNC:
-// OBSOLETE        ADD_EXTRA ('F');
-// OBSOLETE        /* followed by func's arg '_' & ret types */
-// OBSOLETE        break;
-// OBSOLETE      case TYPE_CODE_VOID:
-// OBSOLETE        ADD_EXTRA ('v');
-// OBSOLETE        break;
-// OBSOLETE      case TYPE_CODE_METHOD:
-// OBSOLETE        ADD_EXTRA ('M');
-// OBSOLETE        /* followed by name of class and func's arg '_' & ret types */
-// OBSOLETE        add_name (pextras, tname);
-// OBSOLETE        ADD_EXTRA ('F');            /* then mangle function */
-// OBSOLETE        break;
-// OBSOLETE      case TYPE_CODE_STRUCT:        /* C struct */
-// OBSOLETE      case TYPE_CODE_UNION: /* C union */
-// OBSOLETE      case TYPE_CODE_ENUM:  /* Enumeration type */
-// OBSOLETE        /* followed by name of type */
-// OBSOLETE        add_name (pextras, tname);
-// OBSOLETE        break;
-
-// OBSOLETE        /* errors possible types/not supported */
-// OBSOLETE      case TYPE_CODE_CHAR:
-// OBSOLETE      case TYPE_CODE_ARRAY: /* Array type */
-// OBSOLETE      case TYPE_CODE_MEMBER:        /* Member type */
-// OBSOLETE      case TYPE_CODE_BOOL:
-// OBSOLETE      case TYPE_CODE_COMPLEX:       /* Complex float */
-// OBSOLETE      case TYPE_CODE_UNDEF:
-// OBSOLETE      case TYPE_CODE_SET:   /* Pascal sets */
-// OBSOLETE      case TYPE_CODE_RANGE:
-// OBSOLETE      case TYPE_CODE_STRING:
-// OBSOLETE      case TYPE_CODE_BITSTRING:
-// OBSOLETE      case TYPE_CODE_ERROR:
-// OBSOLETE      default:
-// OBSOLETE        {
-// OBSOLETE    complaint (&symfile_complaints, "Unknown type code x%x", tcode);
-// OBSOLETE        }
-// OBSOLETE      }
-// OBSOLETE    if (TYPE_TARGET_TYPE (t))
-// OBSOLETE      add_mangled_type (pextras, TYPE_TARGET_TYPE (t));
-// OBSOLETE  }
-
-// OBSOLETE  void
-// OBSOLETE  cfront_mangle_name (struct type *type, int i, int j)
-// OBSOLETE  {
-// OBSOLETE    struct fn_field *f;
-// OBSOLETE    char *mangled_name = gdb_mangle_name (type, i, j);
-
-// OBSOLETE    f = TYPE_FN_FIELDLIST1 (type, i);       /* moved from below */
-
-// OBSOLETE    /* kludge to support cfront methods - gdb expects to find "F" for 
-// OBSOLETE       ARM_mangled names, so when we mangle, we have to add it here */
-// OBSOLETE    if (ARM_DEMANGLING)
-// OBSOLETE      {
-// OBSOLETE        int k;
-// OBSOLETE        char *arm_mangled_name;
-// OBSOLETE        struct fn_field *method = &f[j];
-// OBSOLETE        char *field_name = TYPE_FN_FIELDLIST_NAME (type, i);
-// OBSOLETE        char *physname = TYPE_FN_FIELD_PHYSNAME (f, j);
-// OBSOLETE        char *newname = type_name_no_tag (type);
-
-// OBSOLETE        struct type *ftype = TYPE_FN_FIELD_TYPE (f, j);
-// OBSOLETE        int nargs = TYPE_NFIELDS (ftype);           /* number of args */
-// OBSOLETE        struct extra extras, *pextras = &extras;
-// OBSOLETE        INIT_EXTRA
-
-// OBSOLETE    if (TYPE_FN_FIELD_STATIC_P (f, j))      /* j for sublist within this list */
-// OBSOLETE    ADD_EXTRA ('S')
-// OBSOLETE      ADD_EXTRA ('F')
-// OBSOLETE    /* add args here! */
-// OBSOLETE      if (nargs <= 1)       /* no args besides this */
-// OBSOLETE      ADD_EXTRA ('v')
-// OBSOLETE        else
-// OBSOLETE      {
-// OBSOLETE        for (k = 1; k < nargs; k++)
-// OBSOLETE          {
-// OBSOLETE            struct type *t;
-// OBSOLETE            t = TYPE_FIELD_TYPE (ftype, k);
-// OBSOLETE            add_mangled_type (pextras, t);
-// OBSOLETE          }
-// OBSOLETE      }
-// OBSOLETE        ADD_EXTRA ('\0')
-// OBSOLETE    printf ("add_mangled_type: %s\n", extras.str);  /* FIXME */
-// OBSOLETE        xasprintf (&arm_mangled_name, "%s%s", mangled_name, extras.str);
-// OBSOLETE        xfree (mangled_name);
-// OBSOLETE        mangled_name = arm_mangled_name;
-// OBSOLETE      }
-// OBSOLETE  }
-
-// OBSOLETE  #undef ADD_EXTRA
-// OBSOLETE  /* End of new code added to support parsing of Cfront stabs strings */
-#endif /* OBSOLETE CFront */
-
 /* Parse a type expression in the string [P..P+LENGTH).  If an error occurs,
    silently return builtin_type_void. */
 
-struct type *
+static struct type *
 safe_parse_type (char *p, int length)
 {
   struct ui_file *saved_gdb_stderr;
@@ -1875,7 +1683,7 @@ struct type *
 init_type (enum type_code code, int length, int flags, char *name,
           struct objfile *objfile)
 {
-  register struct type *type;
+  struct type *type;
 
   type = alloc_type (objfile);
   TYPE_CODE (type) = code;
@@ -1896,7 +1704,8 @@ init_type (enum type_code code, int length, int flags, char *name,
   if (name && strcmp (name, "char") == 0)
     TYPE_FLAGS (type) |= TYPE_FLAG_NOSIGN;
 
-  if (code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION)
+  if (code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION
+      || code == TYPE_CODE_NAMESPACE)
     {
       INIT_CPLUS_SPECIFIC (type);
     }
@@ -1969,8 +1778,8 @@ append_composite_type_field (struct type *t, char *name, struct type *field)
 struct type *
 lookup_fundamental_type (struct objfile *objfile, int typeid)
 {
-  register struct type **typep;
-  register int nbytes;
+  struct type **typep;
+  int nbytes;
 
   if (typeid < 0 || typeid >= FT_NUM_MEMBERS)
     {
@@ -2064,7 +1873,7 @@ has_vtable (struct type *dclass)
   /* In the HP ANSI C++ runtime model, a class has a vtable only if it
      has virtual functions or virtual bases.  */
 
-  register int i;
+  int i;
 
   if (TYPE_CODE (dclass) != TYPE_CODE_CLASS)
     return 0;
@@ -2107,7 +1916,7 @@ primary_base_class (struct type *dclass)
      is the first directly inherited, non-virtual base class that
      requires a virtual table */
 
-  register int i;
+  int i;
 
   if (TYPE_CODE (dclass) != TYPE_CODE_CLASS)
     return NULL;
@@ -2136,7 +1945,7 @@ static void
 virtual_base_list_aux (struct type *dclass)
 {
   struct vbase *tmp_vbase;
-  register int i;
+  int i;
 
   if (TYPE_CODE (dclass) != TYPE_CODE_CLASS)
     return;
@@ -2193,9 +2002,9 @@ virtual_base_list_aux (struct type *dclass)
 struct type **
 virtual_base_list (struct type *dclass)
 {
-  register struct vbase *tmp_vbase;
-  register struct vbase *tmp_vbase_2;
-  register int i;
+  struct vbase *tmp_vbase;
+  struct vbase *tmp_vbase_2;
+  int i;
   int count;
   struct type **vbase_array;
 
@@ -2230,8 +2039,8 @@ virtual_base_list (struct type *dclass)
 int
 virtual_base_list_length (struct type *dclass)
 {
-  register int i;
-  register struct vbase *tmp_vbase;
+  int i;
+  struct vbase *tmp_vbase;
 
   current_vbase_list = NULL;
   virtual_base_list_aux (dclass);
@@ -2248,8 +2057,8 @@ virtual_base_list_length (struct type *dclass)
 int
 virtual_base_list_length_skip_primaries (struct type *dclass)
 {
-  register int i;
-  register struct vbase *tmp_vbase;
+  int i;
+  struct vbase *tmp_vbase;
   struct type *primary;
 
   primary = TYPE_RUNTIME_PTR (dclass) ? TYPE_PRIMARY_BASE (dclass) : NULL;
@@ -2277,8 +2086,8 @@ virtual_base_list_length_skip_primaries (struct type *dclass)
 int
 virtual_base_index (struct type *base, struct type *dclass)
 {
-  register struct type *vbase;
-  register int i;
+  struct type *vbase;
+  int i;
 
   if ((TYPE_CODE (dclass) != TYPE_CODE_CLASS) ||
       (TYPE_CODE (base) != TYPE_CODE_CLASS))
@@ -2307,8 +2116,8 @@ virtual_base_index (struct type *base, struct type *dclass)
 int
 virtual_base_index_skip_primaries (struct type *base, struct type *dclass)
 {
-  register struct type *vbase;
-  register int i, j;
+  struct type *vbase;
+  int i, j;
   struct type *primary;
 
   if ((TYPE_CODE (dclass) != TYPE_CODE_CLASS) ||
@@ -3144,6 +2953,9 @@ recursive_dump_type (struct type *type, int spaces)
     case TYPE_CODE_TEMPLATE_ARG:
       printf_filtered ("(TYPE_CODE_TEMPLATE_ARG)");
       break;
+    case TYPE_CODE_NAMESPACE:
+      printf_filtered ("(TYPE_CODE_NAMESPACE)");
+      break;
     default:
       printf_filtered ("(UNKNOWN TYPE CODE)");
       break;
@@ -3410,6 +3222,10 @@ build_gdbtypes (void)
     init_type (TYPE_CODE_STRING, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
               0,
               "string", (struct objfile *) NULL);
+  builtin_type_int0 =
+    init_type (TYPE_CODE_INT, 0 / 8,
+              0,
+              "int0_t", (struct objfile *) NULL);
   builtin_type_int8 =
     init_type (TYPE_CODE_INT, 8 / 8,
               0,
This page took 0.030349 seconds and 4 git commands to generate.