about summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-03-08 22:56:54 +0000
committerUlrich Drepper <drepper@redhat.com>1998-03-08 22:56:54 +0000
commit97a51d8a0cc6508464305efdd372a630fdcfb7e6 (patch)
treee0ba53da43ac63c88664c5ef3c7511569a09b4b9
parentd916515874fcd82d76ddace10b64d7ec9d523ce7 (diff)
downloadglibc-97a51d8a0cc6508464305efdd372a630fdcfb7e6.tar.gz
glibc-97a51d8a0cc6508464305efdd372a630fdcfb7e6.tar.xz
glibc-97a51d8a0cc6508464305efdd372a630fdcfb7e6.zip
Update.
1998-03-08 22:55  Ulrich Drepper  <drepper@cygnus.com>

	* elf/rtld.c (dl_main): Delay initialization of path structure if
	the dynamically linker is invoked implicitly until we read the
	dynamic section.
-rw-r--r--ChangeLog6
-rw-r--r--elf/rtld.c10
2 files changed, 13 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 93337e1a25..ad0b113e31 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+1998-03-08 22:55  Ulrich Drepper  <drepper@cygnus.com>
+
+	* elf/rtld.c (dl_main): Delay initialization of path structure if
+	the dynamically linker is invoked implicitly until we read the
+	dynamic section.
+
 1998-03-08  Ulrich Drepper  <drepper@cygnus.com>
 
 	* sysdeps/unix/sysv/linux/chown.c: Add versioning stuff.
diff --git a/elf/rtld.c b/elf/rtld.c
index c80fe2740e..304d07a5ba 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -400,9 +400,8 @@ of this helper program; chances are you did not intend to run this program.\n",
       main_map->l_entry = *user_entry;
       main_map->l_opencount = 1;
 
-      /* Initialize the data structures for the search paths for shared
-	 objects.  */
-      _dl_init_paths (NULL);
+      /* We delay initializing the path structure until we got the dynamic
+	 information for the program.  */
     }
 
   /* Scan the program header table for the dynamic section.  */
@@ -470,6 +469,11 @@ of this helper program; chances are you did not intend to run this program.\n",
     /* Set up our cache of pointers into the hash table.  */
     _dl_setup_hash (main_map);
 
+  if (*user_entry != (ElfW(Addr)) &ENTRY_POINT)
+    /* Initialize the data structures for the search paths for shared
+       objects.  */
+    _dl_init_paths (NULL);
+
   /* Put the link_map for ourselves on the chain so it can be found by
      name.  Note that at this point the global chain of link maps contains
      exactly one element, which is pointed to by main_map.  */