* gdbtypes.h (builtin_type_void): Remove.
authorUlrich Weigand <uweigand@de.ibm.com>
Thu, 2 Jul 2009 12:42:36 +0000 (12:42 +0000)
committerUlrich Weigand <uweigand@de.ibm.com>
Thu, 2 Jul 2009 12:42:36 +0000 (12:42 +0000)
* gdbtypes.c (builtin_type_void): Remove.
(_initialize_gdbtypes): Do not initialize it.

(safe_parse_type): Add GDBARCH argument.  Use it to construct
void return type.
(check_stub_method): Update call.

* infcall.c (call_function_by_hand): Use platform-specific type
instead of builtin_type_void.
* valops.c (value_cast): Use input void type instead of
builtin_type_void.

gdb/ChangeLog
gdb/gdbtypes.c
gdb/gdbtypes.h
gdb/infcall.c
gdb/valops.c

index f7daf3afb198dc4d8107eaaa810d6ba076d4f41a..b616d5a47c351c3067716d27939e3746b55d22ed 100644 (file)
@@ -1,3 +1,18 @@
+2009-07-02  Ulrich Weigand  <uweigand@de.ibm.com>
+
+       * gdbtypes.h (builtin_type_void): Remove.
+       * gdbtypes.c (builtin_type_void): Remove.
+       (_initialize_gdbtypes): Do not initialize it.
+
+       (safe_parse_type): Add GDBARCH argument.  Use it to construct
+       void return type.
+       (check_stub_method): Update call.
+
+       * infcall.c (call_function_by_hand): Use platform-specific type
+       instead of builtin_type_void.
+       * valops.c (value_cast): Use input void type instead of
+       builtin_type_void.
+
 2009-07-02  Ulrich Weigand  <uweigand@de.ibm.com>
 
        * ada-lang.c (assign_component): Use platform-specific integer type
index f9c04f1f35a7f1f7861633f2d02b9adf0861e1a1..7a44716b5f7c4f3671ea7a21f7460ad44c82707a 100644 (file)
@@ -108,9 +108,6 @@ struct type *builtin_type_arm_ext;
 struct type *builtin_type_ia64_spill;
 struct type *builtin_type_ia64_quad;
 
-/* Platform-neutral void type.  */
-struct type *builtin_type_void;
-
 /* Platform-neutral character types.  */
 struct type *builtin_type_true_char;
 struct type *builtin_type_true_unsigned_char;
@@ -1525,10 +1522,10 @@ check_typedef (struct type *type)
 }
 
 /* Parse a type expression in the string [P..P+LENGTH).  If an error
-   occurs, silently return builtin_type_void.  */
+   occurs, silently return a void type.  */
 
 static struct type *
-safe_parse_type (char *p, int length)
+safe_parse_type (struct gdbarch *gdbarch, char *p, int length)
 {
   struct ui_file *saved_gdb_stderr;
   struct type *type;
@@ -1539,7 +1536,7 @@ safe_parse_type (char *p, int length)
 
   /* Call parse_and_eval_type() without fear of longjmp()s.  */
   if (!gdb_parse_and_eval_type (p, length, &type))
-    type = builtin_type_void;
+    type = builtin_type (gdbarch)->builtin_void;
 
   /* Stop suppressing error messages.  */
   ui_file_delete (gdb_stderr);
@@ -1561,6 +1558,7 @@ safe_parse_type (char *p, int length)
 static void
 check_stub_method (struct type *type, int method_id, int signature_id)
 {
+  struct gdbarch *gdbarch = current_gdbarch;
   struct fn_field *f;
   char *mangled_name = gdb_mangle_name (type, method_id, signature_id);
   char *demangled_name = cplus_demangle (mangled_name,
@@ -1634,7 +1632,7 @@ check_stub_method (struct type *type, int method_id, int signature_id)
                  && strncmp (argtypetext, "void", p - argtypetext) != 0)
                {
                  argtypes[argcount].type =
-                   safe_parse_type (argtypetext, p - argtypetext);
+                   safe_parse_type (gdbarch, argtypetext, p - argtypetext);
                  argcount += 1;
                }
              argtypetext = p + 1;
@@ -3432,10 +3430,6 @@ _initialize_gdbtypes (void)
   builtin_type_ia64_quad =
     build_flt (-1, "builtin_type_ia64_quad", floatformats_ia64_quad);
 
-  builtin_type_void =
-    init_type (TYPE_CODE_VOID, 1,
-              0,
-              "void", (struct objfile *) NULL);
   builtin_type_true_char =
     init_type (TYPE_CODE_CHAR, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
               0,
index 78a1229139492176f5ff57a0c0514bbfd8967b85..f2f339dc51028630f1dc93d7ff4d3d15ca195356 100644 (file)
@@ -1085,10 +1085,6 @@ extern struct type *builtin_type_arm_ext;
 extern struct type *builtin_type_ia64_spill;
 extern struct type *builtin_type_ia64_quad;
 
-/* Platform-neutral void type.  Never attempt to construct a pointer
-   or reference type to this, because those cannot be platform-neutral.
-   You must use builtin_type (...)->builtin_void in those cases.  */
-extern struct type *builtin_type_void;
 
 /* Platform-neutral character types.
    We use these for the '/c' print format, because c_char is just a
index e364f01da6864220a1fa6c2b4271a1d266e161fc..85ccb825d6e3bb22a6b957d22871a955c57b854a 100644 (file)
@@ -562,7 +562,7 @@ call_function_by_hand (struct value *function, int nargs, struct value **args)
 
       /* Tell the target specific argument pushing routine not to
         expect a value.  */
-      target_values_type = builtin_type_void;
+      target_values_type = builtin_type (gdbarch)->builtin_void;
     }
   else
     {
index 1f71a143c517288440e9ea9bdac26be84179aa12..5066367e57046dd72c48e3503bd44a3461b854f4 100644 (file)
@@ -511,7 +511,7 @@ value_cast (struct type *type, struct value *arg2)
     return value_at_lazy (type, value_address (arg2));
   else if (code1 == TYPE_CODE_VOID)
     {
-      return value_zero (builtin_type_void, not_lval);
+      return value_zero (type, not_lval);
     }
   else
     {