2014-03-12 Paul Pluzhnikov <ppluzhnikov@google.com>

[BZ #16381]

	* elf/Makefile (tests): Add tst-pie2.
        (tests-pie): Add tst-pie2.
	* elf/tst-pie2.c: New file.
	* elf/dl-load.c (_dl_map_object_from_fd): Assert correct l_type
	for ET_EXEC.
	* elf/rtld.c (map_doit): Load executable as lt_executable.
	(dl_main): Likewise.
This commit is contained in:
Paul Pluzhnikov 2014-03-12 15:58:39 -07:00
parent abe6d90cc8
commit 798212a013
5 changed files with 23 additions and 9 deletions

View File

@ -1,3 +1,15 @@
2014-03-12 Paul Pluzhnikov <ppluzhnikov@google.com>
[BZ #16381]
* elf/Makefile (tests): Add tst-pie2.
(tests-pie): Add tst-pie2.
* elf/tst-pie2.c: New file.
* elf/dl-load.c (_dl_map_object_from_fd): Assert correct l_type
for ET_EXEC.
* elf/rtld.c (map_doit): Load executable as lt_executable.
(dl_main): Likewise.
2014-03-12 Joseph Myers <joseph@codesourcery.com>
[BZ #16642]

6
NEWS
View File

@ -43,9 +43,9 @@ Version 2.19
16055, 16071, 16072, 16074, 16077, 16078, 16103, 16112, 16143, 16144,
16146, 16150, 16151, 16153, 16167, 16169, 16172, 16195, 16214, 16245,
16271, 16274, 16283, 16289, 16293, 16314, 16316, 16330, 16337, 16338,
16356, 16365, 16366, 16369, 16372, 16375, 16379, 16384, 16385, 16386,
16387, 16390, 16394, 16398, 16400, 16407, 16408, 16414, 16430, 16431,
16453, 16474, 16506, 16510, 16529
16356, 16365, 16366, 16369, 16372, 16375, 16379, 16381, 16384, 16385,
16386, 16387, 16390, 16394, 16398, 16400, 16407, 16408, 16414, 16430,
16431, 16453, 16474, 16506, 16510, 16529
* Slovenian translations for glibc messages have been contributed by the
Translation Project's Slovenian team of translators.

View File

@ -215,8 +215,8 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \
tst-array5dep tst-null-argv-lib
ifeq (yesyes,$(have-fpie)$(build-shared))
modules-names += tst-piemod1
tests += tst-pie1
tests-pie += tst-pie1
tests += tst-pie1 tst-pie2
tests-pie += tst-pie1 tst-pie2
endif
modules-execstack-yes = tst-execstack-mod
extra-test-objs += $(addsuffix .os,$(strip $(modules-names)))
@ -901,6 +901,7 @@ $(objpfx)tst-array5-static-cmp.out: tst-array5-static.exp \
$(evaluate-test)
CFLAGS-tst-pie1.c += $(pie-ccflag)
CFLAGS-tst-pie2.c += $(pie-ccflag)
$(objpfx)tst-pie1: $(objpfx)tst-piemod1.so

View File

@ -1534,8 +1534,8 @@ cannot enable executable stack as shared object requires");
/* Signal that we closed the file. */
fd = -1;
if (l->l_type == lt_library && type == ET_EXEC)
l->l_type = lt_executable;
/* If this is ET_EXEC, we should have loaded it as lt_executable. */
assert (type != ET_EXEC || l->l_type == lt_executable);
l->l_entry += l->l_addr;

View File

@ -623,7 +623,8 @@ static void
map_doit (void *a)
{
struct map_args *args = (struct map_args *) a;
args->map = _dl_map_object (args->loader, args->str, lt_library, 0,
int type = (args->mode == __RTLD_OPENEXEC) ? lt_executable : lt_library;
args->map = _dl_map_object (args->loader, args->str, type, 0,
args->mode, LM_ID_BASE);
}
@ -1075,7 +1076,7 @@ of this helper program; chances are you did not intend to run this program.\n\
else
{
HP_TIMING_NOW (start);
_dl_map_object (NULL, rtld_progname, lt_library, 0,
_dl_map_object (NULL, rtld_progname, lt_executable, 0,
__RTLD_OPENEXEC, LM_ID_BASE);
HP_TIMING_NOW (stop);