From: Andreas Schwab Date: Wed, 15 Sep 2010 14:20:57 +0000 (-0700) Subject: Don't try to free rpath strings allocated during startup X-Git-Tag: glibc-2.13~114 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bc5fb0374c3ce6eca92f44d13a55b066e707c4a0;p=thirdparty%2Fglibc.git Don't try to free rpath strings allocated during startup --- diff --git a/ChangeLog b/ChangeLog index b9974053a73..269bede7fc6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2010-09-13 Andreas Schwab + Ulrich Drepper + + * 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 * 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 0adddf5aaa2..a7162eb77de 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 f94d2c4c6e0..5897b32e8c3 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 90f3ff126eb..5ecc4fe711c 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.