diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2017-07-09 08:39:17 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2017-07-10 06:05:13 -0700 |
commit | 712e70de9743a61618001b4c6372a0e3d4fc1d90 (patch) | |
tree | 02ff537109bef1b0c847aad2c6d63ba756dcb479 | |
parent | eb73083e5e825460050f8149f8b2869c4ef662cd (diff) | |
download | glibc-hjl/pr21742.tar.gz |
Remove debug/stack_chk_fail_local.c [BZ #21740]hjl/pr21742
Since
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.
added
strong_alias (__stack_chk_fail, __stack_chk_fail_local)
to debug/stack_chk_fail.c, debug/stack_chk_fail_local.c should be
removed. Since dummy __stack_chk_fail and __stack_chk_fail_local
symbols are used in ld.so, tst-_dl_addr_inside_object should be
linked with $(dummy-stack-chk-fail). Tested on x86-64 with
--enable-stack-protector=all and got
FAIL: elf/tst-env-setuid
FAIL: elf/tst-env-setuid-tunables
FAIL: stdlib/tst-secure-getenv
which are the same as without this patch.
* [BZ #21740]
* debug/Makefile (static-only-routines): Remove
stack_chk_fail_local.
* debug/stack_chk_fail_local.c: Removed.
* elf/Makefile (LDFLAGS-tst-_dl_addr_inside_object): New.
-rw-r--r-- | debug/Makefile | 2 | ||||
-rw-r--r-- | debug/stack_chk_fail_local.c | 46 | ||||
-rw-r--r-- | elf/Makefile | 1 |
3 files changed, 2 insertions, 47 deletions
diff --git a/debug/Makefile b/debug/Makefile index cd4975c35b..136c9a1eae 100644 --- a/debug/Makefile +++ b/debug/Makefile @@ -51,7 +51,7 @@ routines = backtrace backtracesyms backtracesymsfd noophooks \ explicit_bzero_chk \ stack_chk_fail fortify_fail \ $(static-only-routines) -static-only-routines := warning-nop stack_chk_fail_local +static-only-routines := warning-nop # Building the stack-protector failure routines with stack protection # makes no sense. diff --git a/debug/stack_chk_fail_local.c b/debug/stack_chk_fail_local.c deleted file mode 100644 index eb0a759c4b..0000000000 --- a/debug/stack_chk_fail_local.c +++ /dev/null @@ -1,46 +0,0 @@ -/* Copyright (C) 2005-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - In addition to the permissions in the GNU Lesser General Public - License, the Free Software Foundation gives you unlimited - permission to link the compiled version of this file with other - programs, and to distribute those programs without any restriction - coming from the use of this file. (The GNU Lesser General Public - License restrictions do apply in other respects; for example, they - cover modification of the file, and distribution when not linked - into another program.) - - Note that people who make modified versions of this file are not - obligated to grant this special exception for their modified - versions; it is their choice whether to do so. The GNU Lesser - General Public License gives permission to release a modified - version without this exception; this exception also makes it - possible to release a modified version which carries forward this - exception. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <sys/cdefs.h> - -extern void __stack_chk_fail (void) __attribute__ ((noreturn)); - -/* On some architectures, this helps needless PIC pointer setup - that would be needed just for the __stack_chk_fail call. */ - -void __attribute__ ((noreturn)) attribute_hidden -__stack_chk_fail_local (void) -{ - __stack_chk_fail (); -} diff --git a/elf/Makefile b/elf/Makefile index e758a4c960..fb2d855ba3 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -369,6 +369,7 @@ tests-internal += tst-_dl_addr_inside_object tests-pie += tst-_dl_addr_inside_object $(objpfx)tst-_dl_addr_inside_object: $(objpfx)dl-addr-obj.os CFLAGS-tst-_dl_addr_inside_object.c += $(PIE-ccflag) +LDFLAGS-tst-_dl_addr_inside_object = $(dummy-stack-chk-fail) endif # By default tst-linkall-static should try to use crypt routines to test |