Don't add stack_chk_fail_local.o to libc.a [BZ #21740]
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 19 Jul 2017 15:21:27 +0000 (08:21 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 19 Jul 2017 15:21:46 +0000 (08:21 -0700)
commit 524a8ef2ad76af8ac049293d993a1856b0d888fb
Author: Nick Alcock <nick.alcock@oracle.com>
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
debug/Makefile

index 3cf8d4a..b9dc705 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2017-07-19  H.J. Lu  <hongjiu.lu@intel.com>
+
+       [BZ #21740]
+       * debug/Makefile (elide-routines.o): New.
+
 2017-07-19  Szabolcs Nagy  <szabolcs.nagy@arm.com>
 
        * sysdeps/unix/sysv/linux/aarch64/dl-procinfo.c:
index ce5fa88..504bf87 100644 (file)
@@ -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.