[RFA patch] PR18749: epilogue not tracked in dwarf2 unwind-info
Alan Modra
amodra@bigpond.net.au
Wed Jun 14 02:56:00 GMT 2006
On Mon, Jun 12, 2006 at 10:07:40PM +0200, Michael Matz wrote:
> I'm trying to fix PR18749, which is about the fact that dwarf2out.c
> doesn't look at epilogues at all, which makes the CFA be wrong during the
> epilogue, as no adjustments there (like pops, or additions to the stack
> pointer) are tracked.
You need to have some compelling reason to emit the unwind info, because
doing so will bloat .eh_frame dramatically (*). gcc doesn't support
asynchronous exceptions, shouldn't generate trapping instructions in
epilogues, and shouldn't allow trapping instructions from the body to
migrate into the epilogue.
*) You may have multiple copies of the epilogue. You may have code from
the function body being placed after the function return. It's not just
a matter of tracking the cfa adjustment in the epilogue; A proper eh
description for unwinding through asynchronous exceptions needs to know
that saved regs are no longer valid on the stack.
--
Alan Modra
IBM OzLabs - Linux Technology Centre
More information about the Gcc-patches
mailing list