--- glibc-2.13/ChangeLog.orig 2011-04-08 05:49:27.201205590 -0300 +++ glibc-2.13/ChangeLog 2011-04-08 05:50:13.815394267 -0300 @@ -0,0 +1,5 @@ +2010-09-28 Andreas Schwab + + * elf/rtld.c (dl_main): Move setting of GLRO(dl_init_all_dirs) + before performing relro protection. + --- glibc-2.13/elf/rtld.c.orig 2011-04-08 05:47:56.573838933 -0300 +++ glibc-2.13/elf/rtld.c 2011-04-08 05:48:53.401068817 -0300 @@ -2187,6 +2187,10 @@ ERROR: ld.so: object '%s' cannot be load we need it in the memory handling later. */ GLRO(dl_initial_searchlist) = *GL(dl_ns)[LM_ID_BASE]._ns_main_searchlist; + /* 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) { if (main_map->l_info [ADDRIDX (DT_GNU_CONFLICT)] != NULL) @@ -2306,10 +2310,6 @@ ERROR: ld.so: object '%s' cannot be load 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.