Skip to content

Commit

Permalink
Compile vismain with -fPIE and link with -pie
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
H.J. Lu committed Feb 27, 2015
1 parent 2ca725c commit ef4ad06
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 5 deletions.
8 changes: 8 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -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]
Expand Down
8 changes: 4 additions & 4 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 4 additions & 1 deletion elf/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
Expand Down Expand Up @@ -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)))
Expand Down
5 changes: 5 additions & 0 deletions elf/vismain.c
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down

0 comments on commit ef4ad06

Please sign in to comment.