[Bug target/83368] alloca after setjmp breaks PIC base reg
jrtc27 at jrtc27 dot com
gcc-bugzilla@gcc.gnu.org
Mon Dec 18 23:57:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83368
James Clarke <jrtc27 at jrtc27 dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|RESOLVED |REOPENED
Resolution|INVALID |---
--- Comment #3 from James Clarke <jrtc27 at jrtc27 dot com> ---
(In reply to Eric Botcazou from comment #2)
> It's a glibc bug, setjmp doesn't preserve %l7.
I filed [1], but having gone away and thought about this, I don't think it is.
SPARC Compliance Definition 2.4.1 specifically calls this out (page 47 or 3P-11
in my PDF), with:
"There are some routines, like setjmp(), sigsetjmp(), and vfork(), that require
the caller assume the registers %l0 through %l7, and %i0 through %i5 are
volatile across the call."
Therefore, I am of the view that this should be reopened as a bug in GCC. GCC
already spills local variables live across a setjmp to the stack (as it can't
use input or local registers due to the above note); it should be doing the
same for %l7.
[1] https://sourceware.org/bugzilla/show_bug.cgi?id=22604
More information about the Gcc-bugs
mailing list