2006-12-06 Jim Blandy <jimb@codesourcery.com>
authorJim Blandy <jimb@codesourcery.com>
Wed, 6 Dec 2006 20:15:19 +0000 (20:15 +0000)
committerJim Blandy <jimb@codesourcery.com>
Wed, 6 Dec 2006 20:15:19 +0000 (20:15 +0000)
* gdbtypes.c: Revert 2006-12-05 change, and explain why.

gdb/ChangeLog
gdb/gdbtypes.c

index 436b14c..e86622b 100644 (file)
@@ -1,3 +1,7 @@
+2006-12-06  Jim Blandy  <jimb@codesourcery.com>
+
+       * gdbtypes.c: Revert 2006-12-05 change, and explain why.
+
 2006-12-06  Andrew Stubbs  <andrew.stubbs@st.com>
 
        * event-top.c (command_handler): On EOF, print 'quit' and run quit
index 3ce38ff..8a57678 100644 (file)
@@ -3297,6 +3297,10 @@ copy_type_recursive (struct objfile *objfile, struct type *type,
 static void
 build_gdbtypes (void)
 {
+  builtin_type_void =
+    init_type (TYPE_CODE_VOID, 1,
+              0,
+              "void", (struct objfile *) NULL);
   builtin_type_char =
     init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
               (TYPE_FLAG_NOSIGN
@@ -3646,10 +3650,9 @@ _initialize_gdbtypes (void)
 {
   struct cmd_list_element *c;
 
-  builtin_type_void =
-    init_type (TYPE_CODE_VOID, 1,
-              0,
-              "void", (struct objfile *) NULL);
+  /* FIXME: Why don't the following types need to be arch-swapped?
+     See the comment at the top of the calls to
+     DEPRECATED_REGISTER_GDBARCH_SWAP below.  */
   builtin_type_int0 =
     init_type (TYPE_CODE_INT, 0 / 8,
               0,
@@ -3701,7 +3704,14 @@ _initialize_gdbtypes (void)
 
   /* FIXME - For the moment, handle types by swapping them in and out.
      Should be using the per-architecture data-pointer and a large
-     struct. */
+     struct. 
+
+     Note that any type T that we might create a 'T *' type for must
+     be arch-swapped: we cache a type's 'T *' type in the pointer_type
+     field, so if we change architectures but don't swap T, then
+     lookup_pointer_type will start handing out pointer types made for
+     a different architecture.  */
+  DEPRECATED_REGISTER_GDBARCH_SWAP (builtin_type_void);
   DEPRECATED_REGISTER_GDBARCH_SWAP (builtin_type_char);
   DEPRECATED_REGISTER_GDBARCH_SWAP (builtin_type_short);
   DEPRECATED_REGISTER_GDBARCH_SWAP (builtin_type_int);
@@ -3744,7 +3754,8 @@ _initialize_gdbtypes (void)
   deprecated_register_gdbarch_swap (NULL, 0, build_gdbtypes);
 
   /* Note: These types do not need to be swapped - they are target
-     neutral.  */
+     neutral.  FIXME: Are you sure?  See the comment above the calls
+     to DEPRECATED_REGISTER_GDBARCH_SWAP above.  */
   builtin_type_ieee_single_big =
     init_type (TYPE_CODE_FLT, floatformat_ieee_single_big.totalsize / 8,
               0, "builtin_type_ieee_single_big", NULL);