1 From bc5fb0374c3ce6eca92f44d13a55b066e707c4a0 Mon Sep 17 00:00:00 2001
2 From: Andreas Schwab <schwab@redhat.com>
3 Date: Wed, 15 Sep 2010 07:20:57 -0700
4 Subject: [PATCH] Don't try to free rpath strings allocated during startup
7 ChangeLog | 10 ++++++++++
9 elf/dl-support.c | 3 +++
11 4 files changed, 17 insertions(+), 3 deletions(-)
13 2010-09-13 Andreas Schwab <schwab@redhat.com>
14 Ulrich Drepper <drepper@redhat.com>
16 * elf/rtld.c (dl_main): Set GLRO(dl_init_all_dirs) just before
18 * elf/dl-support.c (_dl_non_dynamic_init): And here after the
20 * elf/dl-load.c (_dl_init_paths). Don't set GLRO(dl_init_all_dirs)
23 diff --git a/elf/dl-load.c b/elf/dl-load.c
24 index 0adddf5..a7162eb 100644
27 @@ -787,9 +787,6 @@ _dl_init_paths (const char *llp)
30 env_path_list.dirs = (void *) -1;
32 - /* Remember the last search directory added at startup. */
33 - GLRO(dl_init_all_dirs) = GL(dl_all_dirs);
37 diff --git a/elf/dl-support.c b/elf/dl-support.c
38 index f94d2c4..5897b32 100644
39 --- a/elf/dl-support.c
40 +++ b/elf/dl-support.c
41 @@ -264,6 +264,9 @@ _dl_non_dynamic_init (void)
43 _dl_init_paths (getenv ("LD_LIBRARY_PATH"));
45 + /* Remember the last search directory added at startup. */
46 + _dl_init_all_dirs = GL(dl_all_dirs);
48 _dl_lazy = *(getenv ("LD_BIND_NOW") ?: "") == '\0';
50 _dl_bind_not = *(getenv ("LD_BIND_NOT") ?: "") != '\0';
51 diff --git a/elf/rtld.c b/elf/rtld.c
52 index 90f3ff1..5ecc4fe 100644
55 @@ -2291,6 +2291,10 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
59 + /* Remember the last search directory added at startup, now that
60 + malloc will no longer be the one from dl-minimal.c. */
61 + GLRO(dl_init_all_dirs) = GL(dl_all_dirs);
63 if (! prelinked && rtld_multiple_ref)
65 /* There was an explicit ref to the dynamic linker as a shared lib.