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~