From: Kevin Buettner <kevinb@redhat.com>
To: "CUTHBERTSON,REVA (HP-Cupertino,ex3)" <reva_cuthbertson@hp.com>,
"'gdb@sources.redhat.com'" <gdb@sources.redhat.com>
Subject: Re: Support for multiple sized pointers in a program
Date: Tue, 01 Apr 2003 23:44:00 -0000 [thread overview]
Message-ID: <1030401234428.ZM27922@localhost.localdomain> (raw)
In-Reply-To: "CUTHBERTSON,REVA (HP-Cupertino,ex3)" <reva_cuthbertson@hp.com> "Support for multiple sized pointers in a program" (Apr 1, 3:37pm)
On Apr 1, 3:37pm, CUTHBERTSON,REVA (HP-Cupertino,ex3) wrote:
> I am porting gdb to a platform which allows both 32-bit and 64-bit pointers
> to coexist in a program. I am running into a problem creating pointer types
> when 2 different sized pointers point to the same target type in the same
> program.
>
> The problem seems to be in make_pointer_type() in gdbtypes.c. The function
> creates a pointer type for the target type if one does not exist, fills in
> the length of the pointer, fills in the flags and returns the pointer type.
> What it also does is save the new pointer type into the "pointer_type" field
> of the target type. The next time I call this function for the same target
> type, it will return the pointer type I just made even if the next pointer
> to the target type is a different size. This will be a problem when you try
> to fetch the value of a pointer, etc.
>
> The problem appears to be the 1-1 mapping between the pointer type and the
> target type. I made a change in make_pointer_type() which disables the
> code that saves the pointer type in the "pointer_type" field of the target
> type. I simply return the pointer type which ultimately gets attached to a
> symbol. With this change, I'm able to print out pointers of different sizes
> even when they point to the same thing. What I don't understand is why
> there is the 1-1 mapping in the first place between a type and a pointer
> type. I see code all over gdb which calls lookup_pointer_type() on a type
> -- such as builtin_type_void and builtin_type_char. What is the purpose
> for looking up the pointer type of a type that is not associated with a
> symbol? I'm concerned that my change will have consequences on code that
> calls lookup_pointer_type() in this way. Is my fix correct or should I be
> doing something a different way?
>
> Any help on this would be greatly appreciated!!!!
Take a look at the "address class" support that I added last year. I
needed it to handle this precise problem. (Grep the gdb sources for
ADDRESS_CLASS.)
Kevin
prev parent reply other threads:[~2003-04-01 23:44 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-04-01 23:37 CUTHBERTSON,REVA (HP-Cupertino,ex3)
2003-04-01 23:44 ` Kevin Buettner [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=1030401234428.ZM27922@localhost.localdomain \
--to=kevinb@redhat.com \
--cc=gdb@sources.redhat.com \
--cc=reva_cuthbertson@hp.com \
/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