about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@redhat.com>2010-09-15 07:20:57 -0700
committerUlrich Drepper <drepper@redhat.com>2010-09-15 07:20:57 -0700
commitbc5fb0374c3ce6eca92f44d13a55b066e707c4a0 (patch)
treeee07a8ffc9fbd9b51873dbd01da87da7b78a1b70
parente66e7419a6f58200eec6941b14e2dcff9875cc6c (diff)
downloadglibc-bc5fb0374c3ce6eca92f44d13a55b066e707c4a0.tar.gz
glibc-bc5fb0374c3ce6eca92f44d13a55b066e707c4a0.tar.xz
glibc-bc5fb0374c3ce6eca92f44d13a55b066e707c4a0.zip
Don't try to free rpath strings allocated during startup
-rw-r--r--ChangeLog10
-rw-r--r--elf/dl-load.c3
-rw-r--r--elf/dl-support.c3
-rw-r--r--elf/rtld.c4
4 files changed, 17 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index b9974053a7..269bede7fc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2010-09-13  Andreas Schwab  <schwab@redhat.com>
+	    Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/rtld.c (dl_main): Set GLRO(dl_init_all_dirs) just before
+	re-relocationg ld.so.
+	* elf/dl-support.c (_dl_non_dynamic_init): And here after the
+	_dl_init_paths call.
+	* elf/dl-load.c (_dl_init_paths).  Don't set GLRO(dl_init_all_dirs)
+	here anymore.
+
 2010-09-14  Ulrich Drepper  <drepper@redhat.com>
 
 	* resolv/res_init.c (__res_vinit): Count the default server we added.
diff --git a/elf/dl-load.c b/elf/dl-load.c
index 0adddf5aaa..a7162eb77d 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -787,9 +787,6 @@ _dl_init_paths (const char *llp)
     }
   else
     env_path_list.dirs = (void *) -1;
-
-  /* Remember the last search directory added at startup.  */
-  GLRO(dl_init_all_dirs) = GL(dl_all_dirs);
 }
 
 
diff --git a/elf/dl-support.c b/elf/dl-support.c
index f94d2c4c6e..5897b32e8c 100644
--- a/elf/dl-support.c
+++ b/elf/dl-support.c
@@ -264,6 +264,9 @@ _dl_non_dynamic_init (void)
      objects.  */
   _dl_init_paths (getenv ("LD_LIBRARY_PATH"));
 
+  /* Remember the last search directory added at startup.  */
+  _dl_init_all_dirs = GL(dl_all_dirs);
+
   _dl_lazy = *(getenv ("LD_BIND_NOW") ?: "") == '\0';
 
   _dl_bind_not = *(getenv ("LD_BIND_NOT") ?: "") != '\0';
diff --git a/elf/rtld.c b/elf/rtld.c
index 90f3ff126e..5ecc4fe711 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -2291,6 +2291,10 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
 			  lossage);
     }
 
+  /* Remember the last search directory added at startup, now that
+     malloc will no longer be the one from dl-minimal.c.  */
+  GLRO(dl_init_all_dirs) = GL(dl_all_dirs);
+
   if (! prelinked && rtld_multiple_ref)
     {
       /* There was an explicit ref to the dynamic linker as a shared lib.