* c-lang.c (cplus_builtin_types): Remove.
authorUlrich Weigand <uweigand@de.ibm.com>
Sat, 16 Jun 2007 17:23:12 +0000 (17:23 +0000)
committerUlrich Weigand <uweigand@de.ibm.com>
Sat, 16 Jun 2007 17:23:12 +0000 (17:23 +0000)
(enum cplus_primitive_types): New data type.
(cplus_language_arch_info): New function.
(cplus_language_defn): Set la_language_arch_info member.  Do not set
la_builtin_type_vector and string_char_type members.

* f-lang.c (f_builtin_types): Remove.
(enum f_primitive_types): New data type.
(f_language_arch_info): New function.
(f_language_de): Set la_language_arch_info member.  Do not set
la_builtin_type_vector and string_char_type members.

* m2-lang.c (m2_builtin_types): Remove.
(enum m2_primitive_types): New data type.
(m2_language_arch_info): New function.
(m2_language_defn): Set la_language_arch_info member.  Do not set
la_builtin_type_vector and string_char_type members.

* objc-lang.c (objc_builtin_types): Remove.
(objc_language): Set la_language_arch_info member.  Do not set
la_builtin_type_vector and string_char_type members.

* p-lang.c (pascal_builtin_types): Remove.
(enum pascal_primitive_types): New data type.
(pascal_language_arch_info): New function.
(pascal_language_defn): Set la_language_arch_info member.  Do not set
la_builtin_type_vector and string_char_type members.

gdb/ChangeLog
gdb/c-lang.c
gdb/f-lang.c
gdb/m2-lang.c
gdb/objc-lang.c
gdb/p-lang.c

index 8b086d7..922e0bb 100644 (file)
@@ -1,5 +1,36 @@
 2007-06-16  Ulrich Weigand  <uweigand@de.ibm.com>
 
+       * c-lang.c (cplus_builtin_types): Remove.
+       (enum cplus_primitive_types): New data type.
+       (cplus_language_arch_info): New function.
+       (cplus_language_defn): Set la_language_arch_info member.  Do not set
+       la_builtin_type_vector and string_char_type members.
+
+       * f-lang.c (f_builtin_types): Remove.
+       (enum f_primitive_types): New data type.
+       (f_language_arch_info): New function.
+       (f_language_de): Set la_language_arch_info member.  Do not set
+       la_builtin_type_vector and string_char_type members.
+
+       * m2-lang.c (m2_builtin_types): Remove.
+       (enum m2_primitive_types): New data type.
+       (m2_language_arch_info): New function.
+       (m2_language_defn): Set la_language_arch_info member.  Do not set
+       la_builtin_type_vector and string_char_type members.
+
+       * objc-lang.c (objc_builtin_types): Remove.
+       (objc_language): Set la_language_arch_info member.  Do not set
+       la_builtin_type_vector and string_char_type members.
+
+       * p-lang.c (pascal_builtin_types): Remove.
+       (enum pascal_primitive_types): New data type.
+       (pascal_language_arch_info): New function.
+       (pascal_language_defn): Set la_language_arch_info member.  Do not set
+       la_builtin_type_vector and string_char_type members.
+
+
+2007-06-16  Ulrich Weigand  <uweigand@de.ibm.com>
+
        * regcache.c (struct regcache): Add ptid_t member.
        (regcache_xmalloc): Initialize it.
        (regcache_cpy_no_passthrough): Do not refer to current_regcache.
index 32b023d..1d9e0a3 100644 (file)
@@ -573,7 +573,7 @@ c_language_arch_info (struct gdbarch *gdbarch,
   lai->primitive_type_vector [c_primitive_type_long_double] = builtin->builtin_long_double;
   lai->primitive_type_vector [c_primitive_type_complex] = builtin->builtin_complex;
   lai->primitive_type_vector [c_primitive_type_double_complex] = builtin->builtin_double_complex;
-};
+}
 
 const struct language_defn c_language_defn =
 {
@@ -611,34 +611,80 @@ const struct language_defn c_language_defn =
   LANG_MAGIC
 };
 
-struct type **const (cplus_builtin_types[]) =
-{
-  &builtin_type_int,
-  &builtin_type_long,
-  &builtin_type_short,
-  &builtin_type_char,
-  &builtin_type_float,
-  &builtin_type_double,
-  &builtin_type_void,
-  &builtin_type_long_long,
-  &builtin_type_signed_char,
-  &builtin_type_unsigned_char,
-  &builtin_type_unsigned_short,
-  &builtin_type_unsigned_int,
-  &builtin_type_unsigned_long,
-  &builtin_type_unsigned_long_long,
-  &builtin_type_long_double,
-  &builtin_type_complex,
-  &builtin_type_double_complex,
-  &builtin_type_bool,
-  0
+enum cplus_primitive_types {
+  cplus_primitive_type_int,
+  cplus_primitive_type_long,
+  cplus_primitive_type_short,
+  cplus_primitive_type_char,
+  cplus_primitive_type_float,
+  cplus_primitive_type_double,
+  cplus_primitive_type_void,
+  cplus_primitive_type_long_long,
+  cplus_primitive_type_signed_char,
+  cplus_primitive_type_unsigned_char,
+  cplus_primitive_type_unsigned_short,
+  cplus_primitive_type_unsigned_int,
+  cplus_primitive_type_unsigned_long,
+  cplus_primitive_type_unsigned_long_long,
+  cplus_primitive_type_long_double,
+  cplus_primitive_type_complex,
+  cplus_primitive_type_double_complex,
+  cplus_primitive_type_bool,
+  nr_cplus_primitive_types
 };
 
+static void
+cplus_language_arch_info (struct gdbarch *gdbarch,
+                         struct language_arch_info *lai)
+{
+  const struct builtin_type *builtin = builtin_type (gdbarch);
+  lai->string_char_type = builtin->builtin_char;
+  lai->primitive_type_vector
+    = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_cplus_primitive_types + 1,
+                             struct type *);
+  lai->primitive_type_vector [cplus_primitive_type_int]
+    = builtin->builtin_int;
+  lai->primitive_type_vector [cplus_primitive_type_long]
+    = builtin->builtin_long;
+  lai->primitive_type_vector [cplus_primitive_type_short]
+    = builtin->builtin_short;
+  lai->primitive_type_vector [cplus_primitive_type_char]
+    = builtin->builtin_char;
+  lai->primitive_type_vector [cplus_primitive_type_float]
+    = builtin->builtin_float;
+  lai->primitive_type_vector [cplus_primitive_type_double]
+    = builtin->builtin_double;
+  lai->primitive_type_vector [cplus_primitive_type_void]
+    = builtin->builtin_void;
+  lai->primitive_type_vector [cplus_primitive_type_long_long]
+    = builtin->builtin_long_long;
+  lai->primitive_type_vector [cplus_primitive_type_signed_char]
+    = builtin->builtin_signed_char;
+  lai->primitive_type_vector [cplus_primitive_type_unsigned_char]
+    = builtin->builtin_unsigned_char;
+  lai->primitive_type_vector [cplus_primitive_type_unsigned_short]
+    = builtin->builtin_unsigned_short;
+  lai->primitive_type_vector [cplus_primitive_type_unsigned_int]
+    = builtin->builtin_unsigned_int;
+  lai->primitive_type_vector [cplus_primitive_type_unsigned_long]
+    = builtin->builtin_unsigned_long;
+  lai->primitive_type_vector [cplus_primitive_type_unsigned_long_long]
+    = builtin->builtin_unsigned_long_long;
+  lai->primitive_type_vector [cplus_primitive_type_long_double]
+    = builtin->builtin_long_double;
+  lai->primitive_type_vector [cplus_primitive_type_complex]
+    = builtin->builtin_complex;
+  lai->primitive_type_vector [cplus_primitive_type_double_complex]
+    = builtin->builtin_double_complex;
+  lai->primitive_type_vector [cplus_primitive_type_bool]
+    = builtin->builtin_bool;
+}
+
 const struct language_defn cplus_language_defn =
 {
   "c++",                       /* Language name */
   language_cplus,
-  cplus_builtin_types,
+  NULL,
   range_check_off,
   type_check_off,
   case_sensitive_on,
@@ -663,9 +709,9 @@ const struct language_defn cplus_language_defn =
   c_op_print_tab,              /* expression operators for printing */
   1,                           /* c-style arrays */
   0,                           /* String lower bound */
-  &builtin_type_char,          /* Type of string elements */
+  NULL,
   default_word_break_characters,
-  NULL, /* FIXME: la_language_arch_info.  */
+  cplus_language_arch_info,
   default_print_array_index,
   LANG_MAGIC
 };
index e6b0d6f..9f6d0ec 100644 (file)
@@ -434,26 +434,53 @@ static const struct op_print f_op_print_tab[] =
   {NULL, 0, 0, 0}
 };
 \f
-struct type **const (f_builtin_types[]) =
-{
-  &builtin_type_f_character,
-    &builtin_type_f_logical,
-    &builtin_type_f_logical_s1,
-    &builtin_type_f_logical_s2,
-    &builtin_type_f_integer,
-    &builtin_type_f_integer_s2,
-    &builtin_type_f_real,
-    &builtin_type_f_real_s8,
-    &builtin_type_f_real_s16,
-    &builtin_type_f_complex_s8,
-    &builtin_type_f_complex_s16,
-#if 0
-    &builtin_type_f_complex_s32,
-#endif
-    &builtin_type_f_void,
-    0
+enum f_primitive_types {
+  f_primitive_type_character,
+  f_primitive_type_logical,
+  f_primitive_type_logical_s1,
+  f_primitive_type_logical_s2,
+  f_primitive_type_integer,
+  f_primitive_type_integer_s2,
+  f_primitive_type_real,
+  f_primitive_type_real_s8,
+  f_primitive_type_real_s16,
+  f_primitive_type_complex_s8,
+  f_primitive_type_complex_s16,
+  f_primitive_type_void,
+  nr_f_primitive_types
 };
 
+static void
+f_language_arch_info (struct gdbarch *gdbarch,
+                     struct language_arch_info *lai)
+{
+  lai->string_char_type = builtin_type_f_character;
+  lai->primitive_type_vector
+    = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_f_primitive_types + 1,
+                              struct type *);
+
+  lai->primitive_type_vector [f_primitive_type_character]
+    = builtin_type_f_character;
+  lai->primitive_type_vector [f_primitive_type_logical]
+    = builtin_type_f_logical;
+  lai->primitive_type_vector [f_primitive_type_logical_s1]
+    = builtin_type_f_logical_s1;
+  lai->primitive_type_vector [f_primitive_type_logical_s2]
+    = builtin_type_f_logical_s2;
+  lai->primitive_type_vector [f_primitive_type_real]
+    = builtin_type_f_real;
+  lai->primitive_type_vector [f_primitive_type_real_s8]
+    = builtin_type_f_real_s8;
+  lai->primitive_type_vector [f_primitive_type_real_s16]
+    = builtin_type_f_real_s16;
+  lai->primitive_type_vector [f_primitive_type_complex_s8]
+    = builtin_type_f_complex_s8;
+  lai->primitive_type_vector [f_primitive_type_complex_s16]
+    = builtin_type_f_complex_s16;
+  lai->primitive_type_vector [f_primitive_type_void]
+    = builtin_type_f_void;
+}
+
 /* This is declared in c-lang.h but it is silly to import that file for what
    is already just a hack. */
 extern int c_value_print (struct value *, struct ui_file *, int,
@@ -463,7 +490,7 @@ const struct language_defn f_language_defn =
 {
   "fortran",
   language_fortran,
-  f_builtin_types,
+  NULL,
   range_check_on,
   type_check_on,
   case_sensitive_off,
@@ -488,9 +515,9 @@ const struct language_defn f_language_defn =
   f_op_print_tab,              /* expression operators for printing */
   0,                           /* arrays are first-class (not c-style) */
   1,                           /* String lower bound */
-  &builtin_type_f_character,   /* Type of string elements */
+  NULL,
   default_word_break_characters,
-  NULL, /* FIXME: la_language_arch_info.  */
+  f_language_arch_info,
   default_print_array_index,
   LANG_MAGIC
 };
index 11716b3..668106d 100644 (file)
@@ -402,21 +402,41 @@ struct type *builtin_type_m2_card;
 struct type *builtin_type_m2_real;
 struct type *builtin_type_m2_bool;
 
-struct type **const (m2_builtin_types[]) =
-{
-  &builtin_type_m2_char,
-    &builtin_type_m2_int,
-    &builtin_type_m2_card,
-    &builtin_type_m2_real,
-    &builtin_type_m2_bool,
-    0
+enum m2_primitive_types {
+  m2_primitive_type_char,
+  m2_primitive_type_int,
+  m2_primitive_type_card,
+  m2_primitive_type_real,
+  m2_primitive_type_bool,
+  nr_m2_primitive_types
 };
 
+static void
+m2_language_arch_info (struct gdbarch *gdbarch,
+                      struct language_arch_info *lai)
+{
+  lai->string_char_type = builtin_type_m2_char;
+  lai->primitive_type_vector
+    = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_m2_primitive_types + 1,
+                              struct type *);
+
+  lai->primitive_type_vector [m2_primitive_type_char]
+    = builtin_type_m2_char;
+  lai->primitive_type_vector [m2_primitive_type_int]
+    = builtin_type_m2_int;
+  lai->primitive_type_vector [m2_primitive_type_card]
+    = builtin_type_m2_card;
+  lai->primitive_type_vector [m2_primitive_type_real]
+    = builtin_type_m2_real;
+  lai->primitive_type_vector [m2_primitive_type_bool]
+    = builtin_type_m2_bool;
+}
+
 const struct language_defn m2_language_defn =
 {
   "modula-2",
   language_m2,
-  m2_builtin_types,
+  NULL,
   range_check_on,
   type_check_on,
   case_sensitive_on,
@@ -441,9 +461,9 @@ const struct language_defn m2_language_defn =
   m2_op_print_tab,             /* expression operators for printing */
   0,                           /* arrays are first-class (not c-style) */
   0,                           /* String lower bound */
-  &builtin_type_m2_char,       /* Type of string elements */
+  NULL,
   default_word_break_characters,
-  NULL, /* FIXME: la_language_arch_info.  */
+  m2_language_arch_info,
   default_print_array_index,
   LANG_MAGIC
 };
index 2567ed2..99d9fbb 100644 (file)
@@ -638,32 +638,10 @@ static const struct op_print objc_op_print_tab[] =
     {NULL, OP_NULL, PREC_NULL, 0}
 };
 
-struct type ** const (objc_builtin_types[]) = 
-{
-  &builtin_type_int,
-  &builtin_type_long,
-  &builtin_type_short,
-  &builtin_type_char,
-  &builtin_type_float,
-  &builtin_type_double,
-  &builtin_type_void,
-  &builtin_type_long_long,
-  &builtin_type_signed_char,
-  &builtin_type_unsigned_char,
-  &builtin_type_unsigned_short,
-  &builtin_type_unsigned_int,
-  &builtin_type_unsigned_long,
-  &builtin_type_unsigned_long_long,
-  &builtin_type_long_double,
-  &builtin_type_complex,
-  &builtin_type_double_complex,
-  0
-};
-
 const struct language_defn objc_language_defn = {
   "objective-c",               /* Language name */
   language_objc,
-  objc_builtin_types,
+  NULL,
   range_check_off,
   type_check_off,
   case_sensitive_on,
@@ -688,9 +666,9 @@ const struct language_defn objc_language_defn = {
   objc_op_print_tab,           /* Expression operators for printing */
   1,                           /* C-style arrays */
   0,                           /* String lower bound */
-  &builtin_type_char,          /* Type of string elements */
+  NULL,
   default_word_break_characters,
-  NULL, /* FIXME: la_language_arch_info.  */
+  c_language_arch_info,
   default_print_array_index,
   LANG_MAGIC
 };
index aa5545e..11df309 100644 (file)
@@ -428,33 +428,77 @@ const struct op_print pascal_op_print_tab[] =
   {NULL, 0, 0, 0}
 };
 \f
-struct type **const (pascal_builtin_types[]) =
-{
-  &builtin_type_int,
-    &builtin_type_long,
-    &builtin_type_short,
-    &builtin_type_char,
-    &builtin_type_float,
-    &builtin_type_double,
-    &builtin_type_void,
-    &builtin_type_long_long,
-    &builtin_type_signed_char,
-    &builtin_type_unsigned_char,
-    &builtin_type_unsigned_short,
-    &builtin_type_unsigned_int,
-    &builtin_type_unsigned_long,
-    &builtin_type_unsigned_long_long,
-    &builtin_type_long_double,
-    &builtin_type_complex,
-    &builtin_type_double_complex,
-    0
+enum pascal_primitive_types {
+  pascal_primitive_type_int,
+  pascal_primitive_type_long,
+  pascal_primitive_type_short,
+  pascal_primitive_type_char,
+  pascal_primitive_type_float,
+  pascal_primitive_type_double,
+  pascal_primitive_type_void,
+  pascal_primitive_type_long_long,
+  pascal_primitive_type_signed_char,
+  pascal_primitive_type_unsigned_char,
+  pascal_primitive_type_unsigned_short,
+  pascal_primitive_type_unsigned_int,
+  pascal_primitive_type_unsigned_long,
+  pascal_primitive_type_unsigned_long_long,
+  pascal_primitive_type_long_double,
+  pascal_primitive_type_complex,
+  pascal_primitive_type_double_complex,
+  nr_pascal_primitive_types
 };
 
+static void
+pascal_language_arch_info (struct gdbarch *gdbarch,
+                          struct language_arch_info *lai)
+{
+  const struct builtin_type *builtin = builtin_type (gdbarch);
+  lai->string_char_type = builtin->builtin_char;
+  lai->primitive_type_vector
+    = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_pascal_primitive_types + 1,
+                              struct type *);
+  lai->primitive_type_vector [pascal_primitive_type_int]
+    = builtin->builtin_int;
+  lai->primitive_type_vector [pascal_primitive_type_long]
+    = builtin->builtin_long;
+  lai->primitive_type_vector [pascal_primitive_type_short]
+    = builtin->builtin_short;
+  lai->primitive_type_vector [pascal_primitive_type_char]
+    = builtin->builtin_char;
+  lai->primitive_type_vector [pascal_primitive_type_float]
+    = builtin->builtin_float;
+  lai->primitive_type_vector [pascal_primitive_type_double]
+    = builtin->builtin_double;
+  lai->primitive_type_vector [pascal_primitive_type_void]
+    = builtin->builtin_void;
+  lai->primitive_type_vector [pascal_primitive_type_long_long]
+    = builtin->builtin_long_long;
+  lai->primitive_type_vector [pascal_primitive_type_signed_char]
+    = builtin->builtin_signed_char;
+  lai->primitive_type_vector [pascal_primitive_type_unsigned_char]
+    = builtin->builtin_unsigned_char;
+  lai->primitive_type_vector [pascal_primitive_type_unsigned_short]
+    = builtin->builtin_unsigned_short;
+  lai->primitive_type_vector [pascal_primitive_type_unsigned_int]
+    = builtin->builtin_unsigned_int;
+  lai->primitive_type_vector [pascal_primitive_type_unsigned_long]
+    = builtin->builtin_unsigned_long;
+  lai->primitive_type_vector [pascal_primitive_type_unsigned_long_long]
+    = builtin->builtin_unsigned_long_long;
+  lai->primitive_type_vector [pascal_primitive_type_long_double]
+    = builtin->builtin_long_double;
+  lai->primitive_type_vector [pascal_primitive_type_complex]
+    = builtin->builtin_complex;
+  lai->primitive_type_vector [pascal_primitive_type_double_complex]
+    = builtin->builtin_double_complex;
+}
+
 const struct language_defn pascal_language_defn =
 {
   "pascal",                    /* Language name */
   language_pascal,
-  pascal_builtin_types,
+  NULL,
   range_check_on,
   type_check_on,
   case_sensitive_on,
@@ -479,9 +523,9 @@ const struct language_defn pascal_language_defn =
   pascal_op_print_tab,         /* expression operators for printing */
   1,                           /* c-style arrays */
   0,                           /* String lower bound */
-  &builtin_type_char,          /* Type of string elements */
+  NULL,
   default_word_break_characters,
-  NULL, /* FIXME: la_language_arch_info.  */
+  pascal_language_arch_info,
   default_print_array_index,
   LANG_MAGIC
 };