about summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@gmail.com>2010-10-26 13:01:46 -0400
committerUlrich Drepper <drepper@gmail.com>2010-10-26 13:01:46 -0400
commitfa41c84d73be804639ecb2250f0b793b1a6f765e (patch)
tree0c0588180ff61e29e2a2168ab9f0191804051cee
parentc54ff5c67ea2b2a1235e066da27ffec48a40c566 (diff)
downloadglibc-fa41c84d73be804639ecb2250f0b793b1a6f765e.tar.gz
glibc-fa41c84d73be804639ecb2250f0b793b1a6f765e.tar.xz
glibc-fa41c84d73be804639ecb2250f0b793b1a6f765e.zip
Fix assertion in ld.so, introduced by delayed adding to global list.
-rw-r--r--ChangeLog5
-rw-r--r--elf/rtld.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index d867f13a86..58ec05e0cd 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-20  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
 	    Ulrich Drepper  <drepper@gmail.com>
 
diff --git a/elf/rtld.c b/elf/rtld.c
index 23b3462490..d53730fe30 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