From 47d95763a35fbc83ac871b10fc59f9eca1ef0a40 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Sun, 9 Jul 2017 08:39:17 -0700 Subject: [PATCH] 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. --- debug/Makefile | 4 ++++ 1 file changed, 4 insertions(+) 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. -- 2.13.3