This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Help with cfi markup for MIPS16 hard-float stubs
- From: Richard Henderson <rth at redhat dot com>
- To: gcc at gcc dot gnu dot org, rdsandiford at googlemail dot com
- Date: Wed, 15 Feb 2012 13:00:15 -0800
- Subject: Re: Help with cfi markup for MIPS16 hard-float stubs
- References: <878vk327rw.fsf@talisman.home>
On 02/15/2012 11:53 AM, Richard Sandiford wrote:
> We then trip:
>
> /* Don't let us unwind past the handler context. */
> gcc_assert (!match_handler);
>
> in _Unwind_RaiseException_Phase2. What's the right thing to do here?
>
Ug. The Right Thing is to fix the unwinder so that it identifies
frames by pc+cfa, like gdb does, rather than by cfa alone. The
assumption has been that a function without a frame can't perform
a call, and can only by unwound to via signals.
As a workaround for 4.7, you can try this hack:
.cfi_startproc simple
.cfi_def_cfa 29, -1 # fake cfa one byte below sp
.cfi_register 29, 29 # "save" sp in itself so we don't use the fake cfa
move $18,$31
.cfi_register 31, 18
...
r~