This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC 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]

[Bug debug/53927] wrong value for DW_AT_static_link


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53927

--- Comment #6 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2013-01-31 22:34:02 UTC ---
> The idea is you can determine which instance by computing the static link,
> then unwind the stack and look for the corresponding CFA.
> The test case here is supposed to confound simplistic approaches to this
> by having multiple instances of 'nestee' on the stack.

Yes, but you can do something useful even with this value of DW_AT_static_link,
albeit not exactly what DWARF means.  In the GDB released by AdaCore, we do use
this value of DW_AT_static_link to deal with up-level references; you can ask
Joel for the details.

> Note also that if the nested function doesn't refer to any variables from
> the outer scope, then GCC seems not to emit DW_AT_static_link at all.
> I guess this is an optimization; but it is a little unfortunate since
> it makes debugging less obvious.

Indeed, that's why in AdaCore's version of the compiler, we always generate
DW_AT_static_link at -O0, and we even force the static chain onto the stack in
this case (as there are no location lists at -O0).


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