Re: Variable objects: references formatting

Nick Roberts
2006-05-04T06:21:50Z

> > Version 1.59 has been in the repository for over a month, so how come this
> > patch is against 1.58?
>
> I've at least 2 other changes to that file, and corresponding patches were
> neither applied nor rejected, AFAICT. I'd rather not update the file yet.

And I would think people on this mailing list would rather not work out
the patch relative to current CVS in order to apply. I know it worked in
this case (after a shift) but it wouldn't in general.

> > > diff -u -r1.58 varobj.c
> > > @@ -2055,8 +2219,14 @@
> >
> > I'm not used to unified diffs, but as insertion appears to be done at the
> > same place why is it not something like:
> >
> > @@ -2055,8 +2055,14 @@
>
> I'm sorry, I don't understand that question. This hunk was cut from a larger
> diff, maybe that explains something?

Similarly, in general, the patch presumably won't apply properly.

> > Most importantly, however, the preamble is about -data-evaluate-expression
> > but AFAICS this doesn't call c_value_of_variable.
>
> Sure it does. KDevelop uses -data-evaluate-expression to fetch values, and
> with this patch the value of "reference to structure" is rendered as "...",
> just like I'd want.

I could say "Oh know it doesn't!" but, since this is not a pantomime, could
you please give me a simple example of where it does call c_value_of_variable.
My loose reasoning is that the variable in "c_value_of_variable" refers to
variable object and -data-evaluate-expression doesn't use one. What argument
do you give it?

> > I have tested the output of -data-evaluate-expression on pointers to
> > typedeffed structures and found that with the latter I get a {}-enclosed
> > list of members with gcc 3.2 and {...} with gcc 4.1. More generally, I
> > have found that gcc 4.1 treats typedefs differently, which leads to errors
> > with variable objects.
>
> How *pointers* to typedeffed structures are relevant to this patch? Now, maybe
> we need to call 'check_typedef' in one more place -- after stripping
> reference, to make sure typedefs to structures are also rendered as "...".
>
> Is that what you're saying? And what errors do you see with gcc 4.1?

No, I just didn't appreciate the difference between pointers and references in
GDB. The discrepancy I "found" was due to me mistyping. However I do see a
problem with gcc 4.1 and variable objects where GDB keeps telling me:

Child of parent whose type does not allow children

when it didn't when my program was compiled with gcc 3.2.

--
Nick http://www.inet.net.nz/~nickrob