This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: MI: fix base members in references


On Thursday 07 December 2006 07:57, Nick Roberts wrote:
> Nick Roberts writes:
>  > More generally variable objects still don't seem to work (even with
>  > Vladimir's yet to be committed patch) for references to pointers.
>  > 
>  > Assuming that the test program below makes sense, a variable object for n1
>  > has a value which includes the address and reports the value has changed
>  > (as it used to do for pure references)
> 
> Sorry  thats actually rubbish (I was using an old GDB), but for
> 
>   struct S { int i; int j; };
> 
>   S *s;
>   S *&s1 = s;
> 
> -var-create - * s
> ^done,name="var1",numchild="1",type="S *"
> (gdb)
> -var-create - * s1
> ^done,name="var2",numchild="0",type="S *&"
> 
> so the pointer is dereferenced by GDB but the reference to the pointer is
> not.  I think that they should work in the same way but I'm not sure.

Guess what happens? The code path that computes the number of children -- namely
c_number_of_children -- does not seem to handle references.

So even while the underlying value is passed via coerce_ref, the reported number of children
is always 0, so you  can't get any children. Ick!  

On the other hand, that's no something that I've broke -- I did not even touch c_number_of_children
or anything related. I guess we need to first commit the primary references patch and then
fix c_number_of_children. Not that I find references to pointers very common thing, but better
be correct.

- Volodya










> 
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]