From: H.J. Lu Date: Fri, 27 Feb 2015 21:56:44 +0000 (-0800) Subject: Compile vismain with -fPIE and link with -pie X-Git-Tag: glibc-2.22~530 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=ef4ad06fe5a615af9550d74b1b6d546b9dc0a64d;p=glibc.git Compile vismain with -fPIE and link with -pie Protocted symbol in shared library can only be accessed from PIE or shared library. Linker in binutils 2.26 enforces it. We must compile vismain with -fPIE and link it with -pie. [BZ #17711] * elf/Makefile (tests): Add vismain only if PIE is enabled. (tests-pie): Add vismain. (CFLAGS-vismain.c): New. * elf/vismain.c: Add comments for PIE requirement. --- diff --git a/ChangeLog b/ChangeLog index 8e6b5f16f0..1ac660957e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2015-02-27 H.J. Lu + + [BZ #17711] + * elf/Makefile (tests): Add vismain only if PIE is enabled. + (tests-pie): Add vismain. + (CFLAGS-vismain.c): New. + * elf/vismain.c: Add comments for PIE requirement. + 2015-02-27 Joseph Myers [BZ #18046] diff --git a/NEWS b/NEWS index 7b83d75b96..1c54ede4a1 100644 --- a/NEWS +++ b/NEWS @@ -10,10 +10,10 @@ Version 2.22 * The following bugs are resolved with this release: 4719, 14841, 13064, 14094, 15319, 15467, 15790, 15969, 16351, 16560, - 16783, 17269, 17523, 17569, 17588, 17792, 17836, 17912, 17916, 17932, - 17944, 17949, 17964, 17965, 17967, 17969, 17978, 17987, 17991, 17996, - 17998, 17999, 18019, 18020, 18029, 18030, 18032, 18038, 18039, 18046, - 18047. + 16783, 17269, 17523, 17569, 17588, 17711, 17792, 17836, 17912, 17916, + 17932, 17944, 17949, 17964, 17965, 17967, 17969, 17978, 17987, 17991, + 17996, 17998, 17999, 18019, 18020, 18029, 18030, 18032, 18038, 18039, + 18046, 18047. * Character encoding and ctype tables were updated to Unicode 7.0.0, using new generator scripts contributed by Pravin Satpute and Mike FABIAN (Red diff --git a/elf/Makefile b/elf/Makefile index f78642ed09..20b1682370 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -130,7 +130,7 @@ endif tests += $(tests-static) ifeq (yes,$(build-shared)) tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \ - constload1 order vismain noload filter unload \ + constload1 order noload filter unload \ reldep reldep2 reldep3 reldep4 nodelete nodelete2 \ nodlopen nodlopen2 neededtest neededtest2 \ neededtest3 neededtest4 unload2 lateglobal initfirst global \ @@ -218,6 +218,9 @@ ifeq (yesyes,$(have-fpie)$(build-shared)) modules-names += tst-piemod1 tests += tst-pie1 tst-pie2 tests-pie += tst-pie1 tst-pie2 +tests += vismain +tests-pie += vismain +CFLAGS-vismain.c = $(PIE-ccflag) endif modules-execstack-yes = tst-execstack-mod extra-test-objs += $(addsuffix .os,$(strip $(modules-names))) diff --git a/elf/vismain.c b/elf/vismain.c index dfcaeebc7f..05b374812c 100644 --- a/elf/vismain.c +++ b/elf/vismain.c @@ -15,6 +15,11 @@ License along with the GNU C Library; if not, see . */ +/* This file must be compiled as PIE to avoid copy relocation when + accessing protected symbols defined in shared libaries since copy + relocation doesn't work with protected symbols and linker in + binutils 2.26 enforces this rule. */ + #include #include #include