From: Andrew STUBBS <andrew.stubbs@st.com>
To: Jim Blandy <jimb@red-bean.com>
Cc: gdb-patches@sources.redhat.com
Subject: Re: [PATCH] keeping convenience variables (take 2)
Date: Tue, 22 Nov 2005 19:27:00 -0000 [thread overview]
Message-ID: <43835114.5060401@st.com> (raw)
In-Reply-To: <8f2776cb0511212138g2adef40cr1632365c00e3bebc@mail.gmail.com>
Jim Blandy wrote:
> I may be missing something, be patient:
>
> If I understand the original motivation for this, you don't actually
> need to keep around any values that aren't using the builtin types.
> Or at least, that could be using the built-in types; it wasn't clear
> whether they actually did.
Yes, most likely they are all builtin types, but when I first did the
work (in 5.3) I found that it could not be assumed that the builtin
types would stay in the same place. I do not remember under what
circumstances I observed this. So I fixed it and the result was that we
got 'textual compatibility' of all other types for free. Now it does
appear that builtin types can be safely left alone - there have been
many changes to the code in this area.
> I'm uncomfortable with this whole "print type name and then re-parse
> later" approach. I think it's a real kludge. And the fact that it
> doesn't seem really necessary for the problem that originally
> motivated the change is a red flag, it seems to me.
You may be right - I probably don't _need_ it. However, it does work -
it provides this 'textual compatibility' very effectively. A better way
to print the type name might be nice though.
Your point about it not being necessary might be a good reason not to do
something in the first place, but it is not, in itself, a good reason to
disregard something that has _already_ been done (mostly anyway). This
is especially true when what has been done is 'nice to have'.
> I can certainly see that it's useful to keep the convenience variables
> around across symfile selections and endianness switches; I just think
> we should find a better way to handle the types than this.
Well, we could recursively copy the entire type list for type and
enclosing_type. This would certainly be enough to print the value and to
use it in some expressions. I can imagine that there might be some
issues because these types would exist outside of the normal type table
and/or might clash with types in that table.
However, this would require intimate knowledge of the value and type
structures and everything they reference. Also, it would be impossible
to change the value, even though the existing contents could be read,
because parse_expression() wouldn't see the types.
It would need a flag in the internalvar to say it would need freeing if
the value changes to something else.
It might then be possible to match a copied type up against new types at
some point (still with all the problems of context etc.), but this does
not seem pretty - not least because a lot of pointer types are generated
on the fly (something parse_expression does for us in my technique).
If anybody has any other suggestions or insight on these matters then
that will be welcome.
> If the convenience variables you set up in your script, holding
> addresses and such, don't refer to the builtin types, why don't they?
> Could they? I understand that changing architectures or
> architectural variants affects the builtin types, but it seems more
> feasible to track those changes than to try to track objfile-based
> types as they disappear and reappear.
Another question is 'why wouldn't they?'
I make no attempt the track changes across architectural variants (other
than endian) or indeed from one architecture to another. Doing that
would require actual comparison of the before and after types and a type
conversion of some kind.
It seems much harder to me than just extracting type information (in
whatever form) and keeping it or reinstating it later. Perhaps I
misunderstand your point.
If I understand you, I think your problem is that the conversion process
is a) incomplete with respect to non-C languages; b) prone to mistakes
with commonly used type-names; and c) different to how it was before.
I think the first two can be fixed by means of a better name capturing
technique (GDB can print this to screen, but is there a way to capture
it in a string?) and by comparing more than just the name (size of base
type, number of fields, perhaps some kind of checksum???).
Andrew Stubbs
next prev parent reply other threads:[~2005-11-22 17:14 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-11-21 22:05 Andrew STUBBS
2005-11-22 4:58 ` Eli Zaretskii
2005-11-22 8:43 ` Jim Blandy
2005-11-22 19:27 ` Andrew STUBBS [this message]
2005-12-10 4:46 ` [RFC] Alternate approach to keeping convenience variables Daniel Jacobowitz
2005-12-10 5:07 ` Jim Blandy
2005-12-10 8:24 ` Daniel Jacobowitz
2005-12-10 22:20 ` Jim Blandy
2005-12-11 18:12 ` Eli Zaretskii
2005-12-11 19:17 ` Eli Zaretskii
2006-01-23 22:29 ` Jim Blandy
2006-01-24 11:44 ` Andrew STUBBS
2006-01-24 18:41 ` Jim Blandy
2006-01-24 18:43 ` Daniel Jacobowitz
2006-01-24 19:16 ` Jim Blandy
2006-01-24 19:24 ` Daniel Jacobowitz
2006-01-25 0:13 ` Jim Blandy
2006-01-24 19:45 ` Andrew STUBBS
2006-01-04 12:17 ` Andrew STUBBS
2006-01-04 17:00 ` Jim Blandy
2006-01-04 17:48 ` Andrew STUBBS
2006-01-04 18:37 ` Jim Blandy
2006-01-22 21:04 ` Daniel Jacobowitz
2006-01-22 21:31 ` Daniel Jacobowitz
2006-01-23 22:46 ` Jim Blandy
2006-01-27 17:53 ` Eli Zaretskii
2006-01-27 18:12 ` Jim Blandy
2006-01-27 18:29 ` Eli Zaretskii
2006-01-27 18:41 ` Joel Brobecker
2006-02-01 23:14 ` Daniel Jacobowitz
2006-02-02 4:18 ` Eli Zaretskii
2006-02-06 22:14 ` Daniel Jacobowitz
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=43835114.5060401@st.com \
--to=andrew.stubbs@st.com \
--cc=gdb-patches@sources.redhat.com \
--cc=jimb@red-bean.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