aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2015-02-27 13:56:44 -0800
committerH.J. Lu <hjl.tools@gmail.com>2015-02-27 14:13:28 -0800
commitef4ad06fe5a615af9550d74b1b6d546b9dc0a64d (patch)
treeec538cb7181efe801c012b94bea4d9c257d77a07
parent2ca725c594e0c186d928dc0823be7d8b5976112c (diff)
downloadglibc-ef4ad06fe5a615af9550d74b1b6d546b9dc0a64d.tar
glibc-ef4ad06fe5a615af9550d74b1b6d546b9dc0a64d.tar.gz
glibc-ef4ad06fe5a615af9550d74b1b6d546b9dc0a64d.tar.bz2
glibc-ef4ad06fe5a615af9550d74b1b6d546b9dc0a64d.zip
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.
-rw-r--r--ChangeLog8
-rw-r--r--NEWS8
-rw-r--r--elf/Makefile5
-rw-r--r--elf/vismain.c5
4 files changed, 21 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 8e6b5f16f0..1ac660957e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2015-02-27 H.J. Lu <hongjiu.lu@intel.com>
+
+ [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 <joseph@codesourcery.com>
[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
<http://www.gnu.org/licenses/>. */
+/* 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 <stdio.h>
#include <stdlib.h>
#include <string.h>