From 2b4fca86d786b4a5ed4f88c571eeec7d9ff5e684 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Wed, 19 Jul 2017 08:21:27 -0700 Subject: Don't add stack_chk_fail_local.o to libc.a [BZ #21740] commit 524a8ef2ad76af8ac049293d993a1856b0d888fb Author: Nick Alcock Date: Mon Dec 26 10:08:57 2016 +0100 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. which unconditionally added strong_alias (__stack_chk_fail, __stack_chk_fail_local) defines __stack_chk_fail_local as an alias of __stack_chk_fail in libc.a. There is no need to add stack_chk_fail_local.o to libc.a. We only need to add stack_chk_fail_local.oS to libc_nonshared.a. Tested on x86-64: [hjl@gnu-skl-1 build-x86_64-linux]$ nm libc.a | grep __stack_chk_fail 0000000000000000 T __stack_chk_fail 0000000000000000 T __stack_chk_fail_local [hjl@gnu-skl-1 build-x86_64-linux]$ nm libc_nonshared.a | grep __stack_chk_fail_local 0000000000000000 T __stack_chk_fail_local [hjl@gnu-skl-1 build-x86_64-linux]$ [BZ #21740] * debug/Makefile (elide-routines.o): New. --- ChangeLog | 5 +++++ debug/Makefile | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/ChangeLog b/ChangeLog index 3cf8d4a5c7..b9dc70573b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2017-07-19 H.J. Lu + + [BZ #21740] + * debug/Makefile (elide-routines.o): New. + 2017-07-19 Szabolcs Nagy * sysdeps/unix/sysv/linux/aarch64/dl-procinfo.c: diff --git a/debug/Makefile b/debug/Makefile index ce5fa8801f..504bf875fe 100644 --- a/debug/Makefile +++ b/debug/Makefile @@ -53,6 +53,10 @@ routines = backtrace backtracesyms backtracesymsfd noophooks \ $(static-only-routines) static-only-routines := warning-nop stack_chk_fail_local +# Don't add stack_chk_fail_local.o to libc.a since __stack_chk_fail_local +# is an alias of __stack_chk_fail in stack_chk_fail.o. +elide-routines.o := stack_chk_fail_local + # Building the stack-protector failure routines with stack protection # makes no sense. -- cgit 1.4.1