------- Comment #2 from wilson at gcc dot gnu dot org 2005-10-19 23:34 ------- This was broken by Richard Henderson's patch that added the convert_cfa_to_loc_list function. The thread for the patch starts here. It was finally installed Sept 7. http://gcc.gnu.org/ml/gcc-patches/2005-08/msg01176.html
The flaw with the patch is that Richard modified dwarf2out.c to use the dwarf unwind info unconditionally. However, it is only available for targets that define DWARF2_UNWIND_INFO. For all other targets, we now get incorrect debug info. IA-64 of course has its own unwind info, IA-64 unwind info, as defined by the IA-64 ABI, and does not need or want to use dwarf unwind info. I haven't yet tried to comprehend Richard's patch. It is a big one. Hence, I do not yet have a suggested fix. I suspect the fix may be as simple as putting a #ifdef DWARF2_UNWIND_INFO test in gen_subprogram_die around the convert_cfa_to_loc_list call, and putting the old code back in the #else case. Worst case, we need to write equivalent code that knows how to convert IA-64 unwind info into a location list. However, given that gdb already knows how to use libunwind, and any other self-respecting IA-64 debugger should also already be using the IA-64 unwind info, it isn't clear to me that we need to do anything in gcc here. We can not make the same assumption about dwarf2 unwind info, as this isn't part of the ABI for most targets, so Richard's patch does make sense there. -- wilson at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2005-10-19 23:34:35 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24444