2003-06-23 Andrew Cagney <cagney@redhat.com>
authorAndrew Cagney <cagney@redhat.com>
Mon, 23 Jun 2003 21:05:40 +0000 (21:05 +0000)
committerAndrew Cagney <cagney@redhat.com>
Mon, 23 Jun 2003 21:05:40 +0000 (21:05 +0000)
* rs6000-tdep.c (rs6000_register_virtual_type): Add explict cases
for 0 "int0" and 4 "int32" sized registers.
* gdbtypes.c (builtin_type_int0): Define.
(build_gdbtypes): Initialize builtin_type_int0.
* gdbtypes.h (builtin_type_int0): Declare.

gdb/ChangeLog
gdb/gdbtypes.c
gdb/gdbtypes.h
gdb/rs6000-tdep.c

index e473ab3..e7d32b2 100644 (file)
@@ -1,3 +1,11 @@
+2003-06-23  Andrew Cagney  <cagney@redhat.com>
+
+       * rs6000-tdep.c (rs6000_register_virtual_type): Add explict cases
+       for 0 "int0" and 4 "int32" sized registers.
+       * gdbtypes.c (builtin_type_int0): Define.
+       (build_gdbtypes): Initialize builtin_type_int0.
+       * gdbtypes.h (builtin_type_int0): Declare.
+
 2003-06-23  Stephane Carrez  <stcarrez@nerim.fr>
 
        * m68hc11-tdep.c (m68hc11_gdbarch_init): Clear gdb_arch_char_signed
index 3889afc..4ce6cc7 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;
@@ -3410,6 +3411,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,
index 847e23a..e7d755a 100644 (file)
@@ -956,7 +956,10 @@ extern struct type *builtin_type_CORE_ADDR;
    (cf MIPS). */
 extern struct type *builtin_type_bfd_vma;
 
-/* Explicit sizes - see C9X <intypes.h> for naming scheme */
+/* Explicit sizes - see C9X <intypes.h> for naming scheme.  The "int0"
+   is for when an architecture needs to describe a register that has
+   no size.  */
+extern struct type *builtin_type_int0;
 extern struct type *builtin_type_int8;
 extern struct type *builtin_type_uint8;
 extern struct type *builtin_type_int16;
index e12a6be..d384d42 100644 (file)
@@ -1894,6 +1894,10 @@ rs6000_register_virtual_type (int n)
       int size = regsize (reg, tdep->wordsize);
       switch (size)
        {
+       case 0:
+         return builtin_type_int0;
+       case 4:
+         return builtin_type_int32;
        case 8:
          if (tdep->ppc_ev0_regnum <= n && n <= tdep->ppc_ev31_regnum)
            return builtin_type_vec64;
@@ -1904,8 +1908,8 @@ rs6000_register_virtual_type (int n)
          return builtin_type_vec128;
          break;
        default:
-         return builtin_type_int32;
-         break;
+         internal_error (__FILE__, __LINE__, "Register %d size %d unknown",
+                         n, size);
        }
     }
 }