Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Joel Brobecker <brobecker@adacore.com>
To: Vladimir Prus <vladimir@codesourcery.com>
Cc: gdb-patches@sourceware.org
Subject: Re: RFA: unbreak typedefed bitfield
Date: Fri, 18 Dec 2009 13:06:00 -0000	[thread overview]
Message-ID: <20091218130612.GD2788@adacore.com> (raw)
In-Reply-To: <200912181541.30891.vladimir@codesourcery.com>

> And here's a trivial patch to fix this problem. I would claim this
> clearly indicates a design bug in GDB type mechanism -- and it bites
> us repeatedly, but I'm not ready to propose a specific way to fix it,
> yet.

I have noticed the same issue repeatedly in the Ada section of the code,
and it's been really annoying to bump into this. As a result, we've seen 
an explosion of check_typedef (or the Ada equivalent ada_check_typedef),
and I also feel that something's not right.  I have a general feeling
that most of the time, the typedef should have never been passed down.
But I haven't spent the time and effort to try to think globally.
I did have some thoughts for the Ada side, where things are a little
more codified (and where every type is also a typedef), but that
requires a revamp of the Ada code, which I'm leaving for later, when
most of AdaCore's code in the FSF tree.

In your case, we are being repeatdly bitten because we still manipulate
a raw struct gdb_type.  If we have an opaque structure, it would
probably be easier to have a more general solution.  Right now,
we access everything directly, so we have to be careful, depending
on the situation.

> --- a/gdb/value.c
> +++ b/gdb/value.c
> @@ -1873,6 +1873,7 @@ value_primitive_field (struct value *arg1, int offset,
> 
>    CHECK_TYPEDEF (arg_type);
>    type = TYPE_FIELD_TYPE (arg_type, fieldno);
> +  check_typedef (type);
> 
>    /* Handle packed fields */

Looks OK to me (you forgot the ChangeLog entry, btw).

-- 
Joel


  reply	other threads:[~2009-12-18 13:06 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-18 12:41 Vladimir Prus
2009-12-18 13:06 ` Joel Brobecker [this message]
2009-12-18 14:17   ` Daniel Jacobowitz
2009-12-18 14:20     ` Vladimir Prus
2009-12-18 14:24       ` Daniel Jacobowitz
2009-12-21  9:51         ` Vladimir Prus
2009-12-21 13:23           ` Joel Brobecker
2009-12-18 19:55   ` Tom Tromey
2009-12-21 10:00     ` Vladimir Prus
2009-12-21 17:08       ` Tom Tromey
2009-12-21 17:15         ` Daniel Jacobowitz
2009-12-21 17:18           ` Vladimir Prus
2009-12-21 17:37             ` Joel Brobecker

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=20091218130612.GD2788@adacore.com \
    --to=brobecker@adacore.com \
    --cc=gdb-patches@sourceware.org \
    --cc=vladimir@codesourcery.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