This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.19-147-g798212a


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  798212a01311491d5e14fcda687460b75f8ca286 (commit)
      from  abe6d90cc8c1c212dab7cde4468f9ed895d6ba86 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=798212a01311491d5e14fcda687460b75f8ca286

commit 798212a01311491d5e14fcda687460b75f8ca286
Author: Paul Pluzhnikov <ppluzhnikov@google.com>
Date:   Wed Mar 12 15:58:39 2014 -0700

    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.

diff --git a/ChangeLog b/ChangeLog
index defe406..0549034 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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]
diff --git a/NEWS b/NEWS
index 446ce94..e8e7f80 100644
--- a/NEWS
+++ b/NEWS
@@ -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.
diff --git a/elf/Makefile b/elf/Makefile
index e31ab92..2db3c98 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -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
 
diff --git a/elf/dl-load.c b/elf/dl-load.c
index 6501ff2..8ebc128 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -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;
 
diff --git a/elf/rtld.c b/elf/rtld.c
index 7f1413a..63e92d3 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -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);
 

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog     |   12 ++++++++++++
 NEWS          |    6 +++---
 elf/Makefile  |    5 +++--
 elf/dl-load.c |    4 ++--
 elf/rtld.c    |    5 +++--
 5 files changed, 23 insertions(+), 9 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]