------- 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

Reply via email to