about summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@gmail.com>2010-10-26 13:01:46 -0400
committerAndreas Schwab <schwab@redhat.com>2010-12-01 15:35:16 +0100
commit63ed86a37f94af5599d93813cc22be7be23f016a (patch)
treefaceae073c7409f1aca3079cf3a0f195a147a995
parente939403de10e923627043a795051b63ad46e5168 (diff)
downloadglibc-63ed86a37f94af5599d93813cc22be7be23f016a.tar.gz
glibc-63ed86a37f94af5599d93813cc22be7be23f016a.tar.xz
glibc-63ed86a37f94af5599d93813cc22be7be23f016a.zip
Fix assertion in ld.so, introduced by delayed adding to global list.
(cherry picked from commit fa41c84d73be804639ecb2250f0b793b1a6f765e)
-rw-r--r--ChangeLog5
-rw-r--r--elf/rtld.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index b097f0bc38..2d07ad1b4f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2010-10-26  Ulrich Drepper  <drepper@gmail.com>
+
+	* elf/rtld.c (dl_main): Move assertion after the point where rtld map
+	is added to the list.
+
 2010-10-24  Ulrich Drepper  <drepper@redhat.com>
 
 	[BZ #12140]
diff --git a/elf/rtld.c b/elf/rtld.c
index 48536c740e..b451ab54f2 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -1108,7 +1108,6 @@ of this helper program; chances are you did not intend to run this program.\n\
       main_map = _dl_new_object ((char *) "", "", lt_executable, NULL,
 				 __RTLD_OPENEXEC, LM_ID_BASE);
       assert (main_map != NULL);
-      assert (main_map == GL(dl_ns)[LM_ID_BASE]._ns_loaded);
       main_map->l_phdr = phdr;
       main_map->l_phnum = phnum;
       main_map->l_entry = *user_entry;
@@ -1116,6 +1115,7 @@ of this helper program; chances are you did not intend to run this program.\n\
       /* Even though the link map is not yet fully initialized we can add
 	 it to the map list since there are no possible users running yet.  */
       _dl_add_to_namespace_list (main_map, LM_ID_BASE);
+      assert (main_map == GL(dl_ns)[LM_ID_BASE]._ns_loaded);
 
       /* At this point we are in a bit of trouble.  We would have to
 	 fill in the values for l_dev and l_ino.  But in general we