diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2017-07-19 08:21:27 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2017-07-19 08:21:46 -0700 |
commit | 2b4fca86d786b4a5ed4f88c571eeec7d9ff5e684 (patch) | |
tree | d7881fd054c761a895934fd5a3ab8ff03262af56 /debug | |
parent | 82e06600505cc26810d263a964d9eca6f3cdfe91 (diff) | |
download | glibc-2b4fca86d786b4a5ed4f88c571eeec7d9ff5e684.tar.gz |
Don't add stack_chk_fail_local.o to libc.a [BZ #21740]
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.
Diffstat (limited to 'debug')
-rw-r--r-- | debug/Makefile | 4 |
1 files changed, 4 insertions, 0 deletions
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. |