diff options
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | elf/dl-load.c | 3 | ||||
-rw-r--r-- | elf/dl-support.c | 3 | ||||
-rw-r--r-- | elf/rtld.c | 4 |
4 files changed, 17 insertions, 3 deletions
@@ -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. |