Re: Handling of structure dereferencing

Daniel Jacobowitz
2002-02-05T18:17:03Z

On Tue, Feb 05, 2002 at 12:30:41PM -0500, Daniel Berlin wrote:
> On Thu, 3 Jan 2002, Andrew Cagney wrote:
>
> > > On Thu, Dec 06, 2001 at 09:47:50PM +0200, Eli Zaretskii wrote:
> > >
> > >> > Date: Thu, 6 Dec 2001 12:07:39 -0500
> > >> > From: Daniel Jacobowitz <drow@mvista.com>
> > >> >
> > >> > Right now, and historically, gdb has accepted things like:
> > >> > struct foo {char a} *b, **c, ***d;
> > >> >
> > >> > (gdb) print b.a
> > >> > (gdb) print d->a
> >
> >
> > b->a and b.a are probably commonly used - don't some languages even
> > accept both forms? As for ``d.a'', I don't have an opinion - hmm, now
> > that I know about it I might just start using it :-(
> >
> I switch them all the time.
> For pointers, i usually start by printing [0] of it, then [0].some
> member[0], etc.
> I almost never use ->.
> Why should I have to care whether the object is really a pointer or not to
> be able to print a member?
> I only care about printing the member, or else i wouldn't have asked for
> it.
>
> Is there some good reason to not allow either to work?
> IE is allowing it breaking something else, or preventing something else
> from being implemented?
> If not, why make it *harder* for users to do what they want?
>
> I don't want to have to remember whether in the expression "a.x.d.b.c",
> whether b is a poiner or not. I only care about seeing c.
>
> If this is changed, it would, at least for me (and i imagine a large
> number
> of others) make gdb a lot harder to use.

OK, this issue is closed then. People seem to use it as a feature. I
may look in to allowing it -only- from the prompt though.

It's just a messiness issue; in functions that deal with values
internally, it is unclear what they should do if they get a pointer,
and when they can expect a pointer, etc.

Some day I'll have the free time to bash on value handling and I'll
look on moving the behavior up to the frontend.

--
Daniel Jacobowitz Carnegie Mellon University
MontaVista Software Debian GNU/Linux Developer