From f8093a9485402584f75b774ddf2ca051fa9b8aad Mon Sep 17 00:00:00 2001 From: Dmitriy Ivanov Date: Tue, 28 Apr 2015 18:09:53 -0700 Subject: [PATCH] Fix LD_PRELOAD for dlopen() We did not set DF_1_GLOBAL flag for LD_PRELOADed libraries which led to the situation when ld_preloads where ignored during on dlopen() Change-Id: I696b3b2506a8ed4c0984ad2c803210a7a4f8e686 --- linker/linker.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/linker/linker.cpp b/linker/linker.cpp index 63e1b174e..2f32c0e3e 100644 --- a/linker/linker.cpp +++ b/linker/linker.cpp @@ -2429,7 +2429,7 @@ bool soinfo::prelink_image() { /* We can't log anything until the linker is relocated */ bool relocating_linker = (flags_ & FLAG_LINKER) != 0; if (!relocating_linker) { - INFO("[ linking %s ]", get_soname()); + INFO("[ linking %s ]", get_realpath()); DEBUG("si->base = %p si->flags = 0x%08x", reinterpret_cast(base), flags_); } @@ -3135,6 +3135,7 @@ static ElfW(Addr) __linker_init_post_relocation(KernelArgumentBlock& args, ElfW( for (const auto& ld_preload_name : g_ld_preload_names) { needed_library_name_list.push_back(ld_preload_name.c_str()); ++needed_libraries_count; + ++ld_preloads_count; } for_each_dt_needed(si, [&](const char* name) {