aboutsummaryrefslogtreecommitdiff
path: root/debug
diff options
context:
space:
mode:
authorNick Alcock <nick.alcock@oracle.com>2016-12-26 10:08:57 +0100
committerFlorian Weimer <fweimer@redhat.com>2016-12-26 10:11:05 +0100
commit524a8ef2ad76af8ac049293d993a1856b0d888fb (patch)
treeff9d41f1c2c7c1a2361e3f46a8376a23b96faf17 /debug
parent66a704c43cfec810fea67a6959f2d1c94f4d594f (diff)
downloadglibc-524a8ef2ad76af8ac049293d993a1856b0d888fb.zip
glibc-524a8ef2ad76af8ac049293d993a1856b0d888fb.tar.gz
glibc-524a8ef2ad76af8ac049293d993a1856b0d888fb.tar.bz2
PLT avoidance for __stack_chk_fail [BZ #7065]
Add a hidden __stack_chk_fail_local alias to libc.so, and make sure that on targets which use __stack_chk_fail, this does not introduce a local PLT reference into libc.so.
Diffstat (limited to 'debug')
-rw-r--r--debug/Makefile6
-rw-r--r--debug/stack_chk_fail.c2
2 files changed, 8 insertions, 0 deletions
diff --git a/debug/Makefile b/debug/Makefile
index 84d3f92..ed7c397 100644
--- a/debug/Makefile
+++ b/debug/Makefile
@@ -53,6 +53,12 @@ routines = backtrace backtracesyms backtracesymsfd noophooks \
$(static-only-routines)
static-only-routines := warning-nop stack_chk_fail_local
+# Building the stack-protector failure routines with stack protection
+# makes no sense.
+
+CFLAGS-stack_chk_fail.c = $(no-stack-protector)
+CFLAGS-stack_chk_fail_local.c = $(no-stack-protector)
+
CFLAGS-backtrace.c = -fno-omit-frame-pointer
CFLAGS-sprintf_chk.c = $(libio-mtsafe)
CFLAGS-snprintf_chk.c = $(libio-mtsafe)
diff --git a/debug/stack_chk_fail.c b/debug/stack_chk_fail.c
index 4d0796f..5db0886 100644
--- a/debug/stack_chk_fail.c
+++ b/debug/stack_chk_fail.c
@@ -27,3 +27,5 @@ __stack_chk_fail (void)
{
__fortify_fail ("stack smashing detected");
}
+
+strong_alias (__stack_chk_fail, __stack_chk_fail_local)