This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: GDB does not show variables in inlined function
> > > > with inlining:
> > > >
> > > > .uleb128 0x2c # (DIE (0x2a5a) DW_TAG_variable)
> > > > .long 0x2af2 # DW_AT_abstract_origin
> > > > ^^^^^^
> > > > .byte 0x1 # DW_AT_location
> > > > .byte 0x56 # DW_OP_reg6
> > > > ...
> > > > .long 0x2d # DW_AT_type
> > > > .uleb128 0x24 # (DIE (0x2af2) DW_TAG_variable)
> > > > ^^^^^^
> > > > .long .LASF850 # DW_AT_name: "incoming"
> > > > .byte 0x1 # DW_AT_decl_file
> > > > .value 0x3f32 # DW_AT_decl_line
> > > > .long 0x2d # DW_AT_type
> > > >
> > > > The location seems not to be generated for the real variable record
> > > > (2nd part after ...) with inlining.
> > > >
> > > > Should GCC generate the location for the second part (after ...) too,
> > > > should GDB be able to link the descriptions through the marked number
> > > > or something else?
> > >
> > > It's the former DIE (0x2a5a) which is in scope. It has the name
> > > "incoming" through the abstract origin chain. So this is probably a
> > > GDB issue.
> > >
> > > Up until recently that DW_AT_location in the concrete DIE was missing,
> > > I believe. You might want to try this (incredibly lame, untested) GDB
> > > patch. Let me know if it does something useful.
> >
> > Wow, that was fast!
> > Yes, it works with your patch :-)
>
> Um... Josef, what GCC are you using? I didn't check tree-ssa, but
> neither 3.3 nor HEAD produces those DW_AT_location entries, which is a
> serious (and filed in bugzilla, IIRC?) bug.
I used HEAD (maybe few days old) and compiled var-tracking.c from hammer-3_3-branch.
I used "-g -O2 -dA" (-funit-at-a-time is default at -O2)
Josef