Compile vismain with -fPIE and link with -pie
authorH.J. Lu <hjl.tools@gmail.com>
Fri, 27 Feb 2015 21:56:44 +0000 (13:56 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Fri, 27 Feb 2015 22:13:28 +0000 (14:13 -0800)
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.

ChangeLog
NEWS
elf/Makefile
elf/vismain.c

index 8e6b5f1..1ac6609 100644 (file)
--- 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 7b83d75..1c54ede 100644 (file)
--- 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
index f78642e..20b1682 100644 (file)
@@ -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)))
index dfcaeeb..05b3748 100644 (file)
    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>