Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Jim Blandy <jimb@codesourcery.com>
To: gdb-patches@sourceware.org
Subject: Re: Now I know why we used to swap builtin_type_void.
Date: Wed, 06 Dec 2006 20:15:00 -0000	[thread overview]
Message-ID: <m3y7pkpyov.fsf@codesourcery.com> (raw)
In-Reply-To: <20061206195227.GA9228@nevyn.them.org> (Daniel Jacobowitz's message of "Wed, 6 Dec 2006 14:52:27 -0500")


Daniel Jacobowitz <drow@false.org> writes:
> (top-gdb) p *builtin_type_void_data_ptr
> $24 = {pointer_type = 0x0, reference_type = 0x0, chain = 0x7b50d0,
>   instance_flags = 0, length = 8, main_type = 0x7b5100}
> (top-gdb) p current_gdbarch.ptr_bit
> $25 = 32
>
> Because we didn't swap out "void", we followed the cached pointer link
> in builtin_type_void when we tried to create a pointer to void.  My
> initial default gdbarch was 64-bit, because I built a 64-bit GDB
> binary.  So the cached pointer type is 64-bit.
>
> This is a mess.  I think we may need to revert the builtin_type_void
> patch unless you have a better idea.

I've committed the following:

gdb/ChangeLog:
2006-12-06  Jim Blandy  <jimb@codesourcery.com>

	* gdbtypes.c: Revert 2006-12-05 change, and explain why.

Index: gdb/gdbtypes.c
===================================================================
RCS file: /cvs/src/src/gdb/gdbtypes.c,v
retrieving revision 1.107
diff -u -r1.107 gdbtypes.c
--- gdb/gdbtypes.c	6 Dec 2006 00:57:04 -0000	1.107
+++ gdb/gdbtypes.c	6 Dec 2006 20:14:57 -0000
@@ -3297,6 +3297,10 @@
 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 @@
 {
   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 @@
 
   /* 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 @@
   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);


      parent reply	other threads:[~2006-12-06 20:15 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-12-06 19:52 Daniel Jacobowitz
2006-12-06 20:04 ` Jim Blandy
2006-12-06 20:07   ` Daniel Jacobowitz
2006-12-06 20:15 ` Jim Blandy [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m3y7pkpyov.fsf@codesourcery.com \
    --to=jimb@codesourcery.com \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox