Unify arch_character_type and init_character_type
authorTom Tromey <tom@tromey.com>
Mon, 13 Mar 2023 16:57:56 +0000 (10:57 -0600)
committerTom Tromey <tom@tromey.com>
Sat, 18 Mar 2023 17:12:37 +0000 (11:12 -0600)
This unifies arch_character_type and init_character_type by using a
type allocator.

Reviewed-By: Simon Marchi <simon.marchi@efficios.com>
gdb/ada-lang.c
gdb/ctfread.c
gdb/d-lang.c
gdb/dwarf2/read.c
gdb/gdbtypes.c
gdb/gdbtypes.h
gdb/go-lang.c
gdb/m2-lang.c
gdb/rust-lang.c
gdb/stabsread.c

index a3ceb3ae838156aa93e478b97061920dd9002e4a..07995f3d47b7ca1830de4cf49d24b024394bd886 100644 (file)
@@ -13563,12 +13563,12 @@ public:
                            0, "long_integer"));
     add (init_integer_type (alloc, gdbarch_short_bit (gdbarch),
                            0, "short_integer"));
-    struct type *char_type = arch_character_type (gdbarch, TARGET_CHAR_BIT,
+    struct type *char_type = init_character_type (alloc, TARGET_CHAR_BIT,
                                                  1, "character");
     lai->set_string_char_type (char_type);
     add (char_type);
-    add (arch_character_type (gdbarch, 16, 1, "wide_character"));
-    add (arch_character_type (gdbarch, 32, 1, "wide_wide_character"));
+    add (init_character_type (alloc, 16, 1, "wide_character"));
+    add (init_character_type (alloc, 32, 1, "wide_wide_character"));
     add (arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
                          "float", gdbarch_float_format (gdbarch)));
     add (arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
index 879fdeb74d650b2a1e57193d1b6b7d1fdb7683c4..3940a4f8c6715bcb561ef5baa3b5eae21aec37b8 100644 (file)
@@ -566,7 +566,7 @@ read_base_type (struct ctf_context *ccp, ctf_id_t tid)
       ischar = cet.cte_format & CTF_INT_CHAR;
       isbool = cet.cte_format & CTF_INT_BOOL;
       if (ischar)
-       type = init_character_type (of, TARGET_CHAR_BIT, !issigned, name);
+       type = init_character_type (alloc, TARGET_CHAR_BIT, !issigned, name);
       else if (isbool)
        type = init_boolean_type (of, gdbarch_int_bit (gdbarch),
                                  !issigned, name);
index af9a81d1b1b9fd66683f76c858b47a05ff3f6fb5..8e5262d170aa8390ac01eb1df89cb8cc01035618 100644 (file)
@@ -262,11 +262,11 @@ build_d_types (struct gdbarch *gdbarch)
 
   /* Character types.  */
   builtin_d_type->builtin_char
-    = arch_character_type (gdbarch, 8, 1, "char");
+    = init_character_type (alloc, 8, 1, "char");
   builtin_d_type->builtin_wchar
-    = arch_character_type (gdbarch, 16, 1, "wchar");
+    = init_character_type (alloc, 16, 1, "wchar");
   builtin_d_type->builtin_dchar
-    = arch_character_type (gdbarch, 32, 1, "dchar");
+    = init_character_type (alloc, 32, 1, "dchar");
 
   return builtin_d_type;
 }
index d676f003cf57e7311edd37ac1685ebc61a98556f..a7871a3f5e4bf3f5e542be39496cb5673de1ecbb 100644 (file)
@@ -15264,7 +15264,7 @@ read_base_type (struct die_info *die, struct dwarf2_cu *cu)
        if (cu->lang () == language_fortran
            && name
            && startswith (name, "character("))
-         type = init_character_type (objfile, bits, 1, name);
+         type = init_character_type (alloc, bits, 1, name);
        else
          type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
        break;
@@ -15273,7 +15273,7 @@ read_base_type (struct die_info *die, struct dwarf2_cu *cu)
            || cu->lang () == language_m2
            || cu->lang () == language_pascal
            || cu->lang () == language_fortran)
-         type = init_character_type (objfile, bits, 0, name);
+         type = init_character_type (alloc, bits, 0, name);
        else
          type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
        break;
@@ -15283,13 +15283,13 @@ read_base_type (struct die_info *die, struct dwarf2_cu *cu)
            || cu->lang () == language_pascal
            || cu->lang () == language_fortran
            || cu->lang () == language_rust)
-         type = init_character_type (objfile, bits, 1, name);
+         type = init_character_type (alloc, bits, 1, name);
        else
          type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
        break;
       case DW_ATE_UTF:
        {
-         type = init_character_type (objfile, bits, 1, name);
+         type = init_character_type (alloc, bits, 1, name);
          return set_die_type (die, type, cu);
        }
        break;
index f5ddc869ebfc1f730280b9fb541da32339e7ee82..49f88ce60262c20ccf70a7984b0c7aa0de545f0d 100644 (file)
@@ -3417,17 +3417,15 @@ init_integer_type (type_allocator &alloc,
   return t;
 }
 
-/* Allocate a TYPE_CODE_CHAR type structure associated with OBJFILE.
-   BIT is the type size in bits.  If UNSIGNED_P is non-zero, set
-   the type's TYPE_UNSIGNED flag.  NAME is the type name.  */
+/* See gdbtypes.h.  */
 
 struct type *
-init_character_type (struct objfile *objfile,
+init_character_type (type_allocator &alloc,
                     int bit, int unsigned_p, const char *name)
 {
   struct type *t;
 
-  t = type_allocator (objfile).new_type (TYPE_CODE_CHAR, bit, name);
+  t = alloc.new_type (TYPE_CODE_CHAR, bit, name);
   if (unsigned_p)
     t->set_is_unsigned (true);
 
@@ -5750,23 +5748,6 @@ copy_type (const struct type *type)
 \f
 /* Helper functions to initialize architecture-specific types.  */
 
-/* Allocate a TYPE_CODE_CHAR type structure associated with GDBARCH.
-   BIT is the type size in bits.  If UNSIGNED_P is non-zero, set
-   the type's TYPE_UNSIGNED flag.  NAME is the type name.  */
-
-struct type *
-arch_character_type (struct gdbarch *gdbarch,
-                    int bit, int unsigned_p, const char *name)
-{
-  struct type *t;
-
-  t = type_allocator (gdbarch).new_type (TYPE_CODE_CHAR, bit, name);
-  if (unsigned_p)
-    t->set_is_unsigned (true);
-
-  return t;
-}
-
 /* Allocate a TYPE_CODE_BOOL type structure associated with GDBARCH.
    BIT is the type size in bits.  If UNSIGNED_P is non-zero, set
    the type's TYPE_UNSIGNED flag.  NAME is the type name.  */
@@ -6135,9 +6116,9 @@ create_gdbtypes_data (struct gdbarch *gdbarch)
 
   /* "True" character types.  */
   builtin_type->builtin_true_char
-    = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "true character");
+    = init_character_type (alloc, TARGET_CHAR_BIT, 0, "true character");
   builtin_type->builtin_true_unsigned_char
-    = arch_character_type (gdbarch, TARGET_CHAR_BIT, 1, "true character");
+    = init_character_type (alloc, TARGET_CHAR_BIT, 1, "true character");
 
   /* Fixed-size integer types.  */
   builtin_type->builtin_int0
index c1afbc04a08920d6111070af2b9a4ba7e357a9ef..20a547703e13b425adf4698f8406953e39448b00 100644 (file)
@@ -2300,8 +2300,13 @@ private:
 
 extern struct type *init_integer_type (type_allocator &alloc, int bit,
                                       int unsigned_p, const char *name);
-extern struct type *init_character_type (struct objfile *, int, int,
-                                        const char *);
+
+/* Allocate a TYPE_CODE_CHAR type structure using ALLOC.  BIT is the
+   type size in bits.  If UNSIGNED_P is non-zero, set the type's
+   TYPE_UNSIGNED flag.  NAME is the type name.  */
+
+extern struct type *init_character_type (type_allocator &alloc, int bit,
+                                        int unsigned_p, const char *name);
 extern struct type *init_boolean_type (struct objfile *, int, int,
                                       const char *);
 extern struct type *init_float_type (struct objfile *, int, const char *,
@@ -2316,8 +2321,6 @@ extern struct type *init_fixed_point_type (struct objfile *, int, int,
                                           const char *);
 
 /* Helper functions to construct architecture-owned types.  */
-extern struct type *arch_character_type (struct gdbarch *, int, int,
-                                        const char *);
 extern struct type *arch_boolean_type (struct gdbarch *, int, int,
                                       const char *);
 extern struct type *arch_float_type (struct gdbarch *, int, const char *,
index 8cdd6b124c421925ad84bb99e6d68c6fd5164e93..6d0d43530f871ebf290d9cd8566867c9cddec335 100644 (file)
@@ -486,7 +486,7 @@ build_go_types (struct gdbarch *gdbarch)
   type_allocator alloc (gdbarch);
   builtin_go_type->builtin_void = builtin_type (gdbarch)->builtin_void;
   builtin_go_type->builtin_char
-    = arch_character_type (gdbarch, 8, 1, "char");
+    = init_character_type (alloc, 8, 1, "char");
   builtin_go_type->builtin_bool
     = arch_boolean_type (gdbarch, 8, 0, "bool");
   builtin_go_type->builtin_int
index 218867d408e79747cba2e4b799bdb2ca6dd82f7b..d2fa1a463641a2a16a9f911518bb7a71f38c5923 100644 (file)
@@ -292,7 +292,7 @@ build_m2_types (struct gdbarch *gdbarch)
     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch), "REAL",
                       gdbarch_float_format (gdbarch));
   builtin_m2_type->builtin_char
-    = arch_character_type (gdbarch, TARGET_CHAR_BIT, 1, "CHAR");
+    = init_character_type (alloc, TARGET_CHAR_BIT, 1, "CHAR");
   builtin_m2_type->builtin_bool
     = arch_boolean_type (gdbarch, gdbarch_int_bit (gdbarch), 1, "BOOLEAN");
 
index 608799cc66213bc04316fe2efa63785b389014a1..be0a7100f56c6dbebd9bad39309c518808d81b7c 100644 (file)
@@ -1597,7 +1597,7 @@ rust_language::language_arch_info (struct gdbarch *gdbarch,
   type_allocator alloc (gdbarch);
   struct type *bool_type
     = add (arch_boolean_type (gdbarch, 8, 1, "bool"));
-  add (arch_character_type (gdbarch, 32, 1, "char"));
+  add (init_character_type (alloc, 32, 1, "char"));
   add (init_integer_type (alloc, 8, 0, "i8"));
   struct type *u8_type
     = add (init_integer_type (alloc, 8, 1, "u8"));
index 6270f48bebb051853f0129ecf39ef63aa3a4c626..4c7b88f30cd39c5747927c725b626f4dda2fc611 100644 (file)
@@ -2158,7 +2158,7 @@ rs6000_builtin_type (int typenum, struct objfile *objfile)
       rettype = alloc.new_type (TYPE_CODE_ERROR, 0, "stringptr");
       break;
     case 20:
-      rettype = init_character_type (objfile, 8, 1, "character");
+      rettype = init_character_type (alloc, 8, 1, "character");
       break;
     case 21:
       rettype = init_boolean_type (objfile, 8, 1, "logical*1");
@@ -2192,7 +2192,7 @@ rs6000_builtin_type (int typenum, struct objfile *objfile)
       rettype = init_integer_type (alloc, 32, 0, "integer*4");
       break;
     case 30:
-      rettype = init_character_type (objfile, 16, 0, "wchar");
+      rettype = init_character_type (alloc, 16, 0, "wchar");
       break;
     case 31:
       rettype = init_integer_type (alloc, 64, 0, "long long");