about summary refs log tree commit diff
path: root/signal
diff options
context:
space:
mode:
authorNick Alcock <nick.alcock@oracle.com>2016-12-26 10:09:06 +0100
committerFlorian Weimer <fweimer@redhat.com>2016-12-26 10:11:06 +0100
commit2e6c45c59bcd40f1ae8466cbd32f4d263ff45619 (patch)
treefc558d3f90670cf9028bfd33839dbe75c2d674bb /signal
parent1ad4ba28e9335c288687d1757bce3221c522f576 (diff)
downloadglibc-2e6c45c59bcd40f1ae8466cbd32f4d263ff45619.tar.gz
glibc-2e6c45c59bcd40f1ae8466cbd32f4d263ff45619.tar.xz
glibc-2e6c45c59bcd40f1ae8466cbd32f4d263ff45619.zip
Do not stack-protect sigreturn stubs [BZ #7065]
These are called from the kernel with the stack at a carefully-
chosen location so that the stack frame can be restored: they must not
move the stack pointer lest garbage be restored into the registers.

We explicitly inhibit protection for SPARC and for signal/sigreturn.c:
other arches either define their sigreturn stubs in .S files, or (i386,
x86_64, mips) use macros expanding to top-level asm blocks and explicit
labels in the text section to mock up a "function" without telling the
compiler that one is there at all.
Diffstat (limited to 'signal')
-rw-r--r--signal/Makefile2
1 files changed, 2 insertions, 0 deletions
diff --git a/signal/Makefile b/signal/Makefile
index 9d29ff49f3..ccd6f51619 100644
--- a/signal/Makefile
+++ b/signal/Makefile
@@ -48,3 +48,5 @@ CFLAGS-sigsuspend.c = -fexceptions -fasynchronous-unwind-tables
 CFLAGS-sigtimedwait.c = -fexceptions -fasynchronous-unwind-tables
 CFLAGS-sigwait.c = -fexceptions -fasynchronous-unwind-tables
 CFLAGS-sigwaitinfo.c = -fexceptions -fasynchronous-unwind-tables
+
+CFLAGS-sigreturn.c = $(no-stack-protector)