diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2017-12-19 13:53:00 -0800 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2017-12-19 13:53:11 -0800 |
commit | ce16eb52c0987fd94bc13d51ddc787134a7e4b0c (patch) | |
tree | ce315a75ed8c00c4fb0f652ae96e35384aa8fe3e /elf | |
parent | 126adc89d8a32193df075ce665e76ad95ebd0557 (diff) | |
download | glibc-ce16eb52c0987fd94bc13d51ddc787134a7e4b0c.tar.gz |
Replece LDFLAGS-* = $(no-pie-ldflag) with tst-*-no-pie = yes [BZ #22630]
After
commit 9d7a3741c9e59eba87fb3ca6b9f979befce07826
Author: H.J. Lu <hjl.tools@gmail.com>
Date: Fri Dec 15 16:59:33 2017 -0800
Add --enable-static-pie configure option to build static PIE [BZ #19574]
and
commit 00c714df398b63934540d95ce3792596f7a94a6c
Author: H.J. Lu <hjl.tools@gmail.com>
Date: Mon Dec 18 12:24:26 2017 -0800
Pass -no-pie to GCC only if GCC defaults to PIE [BZ #22614]
$(no-pie-ldflag) is no longer effective since no-pie-ldflag is defined
to -no-pie only if GCC defaults to PIE. When --enable-static-pie is
used to configure glibc build and GCC doesn't default to PIE. no-pie-ldflag
is undefined and these tests:
elf/Makefile:LDFLAGS-tst-dlopen-aout = $(no-pie-ldflag)
elf/Makefile:LDFLAGS-tst-prelink = $(no-pie-ldflag)
elf/Makefile:LDFLAGS-tst-main1 = $(no-pie-ldflag)
gmon/Makefile:LDFLAGS-tst-gmon := $(no-pie-ldflag)
may fail to link. This patch replaces "-pie" with
$(if $($(@F)-no-pie),$(no-pie-ldflag),-pie)
and repleces
LDFLAGS-* = $(no-pie-ldflag)
with
tst-*-no-pie = yes
so that tst-dlopen-aout, tst-prelink, tst-main1 and tst-gmon are always
built as non-PIE, with and without --enable-static-pie, regardless if
GCC defaults to PIE or non-PIE.
Tested with build-many-glibcs.py without --enable-static-pie as well as
with --enable-static-pie for x86_64, x32 and i686.
[BZ #22630]
* Makeconfig (link-pie-before-libc): Replace -pie with
$(if $($(@F)-no-pie),$(no-pie-ldflag),-pie).
* elf/Makefile (LDFLAGS-tst-dlopen-aout): Removed.
(tst-dlopen-aout-no-pie): New.
(LDFLAGS-tst-prelink): Removed.
(tst-prelink-no-pie): New.
(LDFLAGS-tst-main1): Removed.
(tst-main1-no-pie): New.
* gmon/Makefile (LDFLAGS-tst-gmon): Removed.
(tst-gmon-no-pie): New.
Diffstat (limited to 'elf')
-rw-r--r-- | elf/Makefile | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/elf/Makefile b/elf/Makefile index 47c3d23ed8..a987614b6f 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -195,7 +195,7 @@ tests-internal += loadtest unload unload2 circleload1 \ tst-ptrguard1 tst-stackguard1 ifeq ($(build-hardcoded-path-in-tests),yes) tests += tst-dlopen-aout -LDFLAGS-tst-dlopen-aout = $(no-pie-ldflag) +tst-dlopen-aout-no-pie = yes endif test-srcs = tst-pathopt selinux-enabled := $(shell cat /selinux/enforce 2> /dev/null) @@ -369,7 +369,7 @@ ifeq ($(have-glob-dat-reloc),yes) tests += tst-prelink # Don't compile tst-prelink.c with PIE for GLOB_DAT relocation. CFLAGS-tst-prelink.c += -fno-pie -LDFLAGS-tst-prelink = $(no-pie-ldflag) +tst-prelink-no-pie = yes ifeq ($(run-built-tests),yes) tests-special += $(objpfx)tst-prelink-cmp.out endif @@ -1433,6 +1433,6 @@ $(objpfx)tst-debug1mod1.so: $(objpfx)testobj1.so $(objpfx)tst-main1: $(objpfx)tst-main1mod.so CRT-tst-main1 := $(csu-objpfx)crt1.o -LDFLAGS-tst-main1 = $(no-pie-ldflag) +tst-main1-no-pie = yes LDLIBS-tst-main1 = $(libsupport) tst-main1mod.so-no-z-defs = yes |