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
(cherry picked from commit f8093a9485)
			
			
This commit is contained in:
		@@ -2444,7 +2444,7 @@ bool soinfo::prelink_image() {
 | 
				
			|||||||
  /* We can't log anything until the linker is relocated */
 | 
					  /* We can't log anything until the linker is relocated */
 | 
				
			||||||
  bool relocating_linker = (flags_ & FLAG_LINKER) != 0;
 | 
					  bool relocating_linker = (flags_ & FLAG_LINKER) != 0;
 | 
				
			||||||
  if (!relocating_linker) {
 | 
					  if (!relocating_linker) {
 | 
				
			||||||
    INFO("[ linking %s ]", get_soname());
 | 
					    INFO("[ linking %s ]", get_realpath());
 | 
				
			||||||
    DEBUG("si->base = %p si->flags = 0x%08x", reinterpret_cast<void*>(base), flags_);
 | 
					    DEBUG("si->base = %p si->flags = 0x%08x", reinterpret_cast<void*>(base), flags_);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -3150,6 +3150,7 @@ static ElfW(Addr) __linker_init_post_relocation(KernelArgumentBlock& args, ElfW(
 | 
				
			|||||||
  for (const auto& ld_preload_name : g_ld_preload_names) {
 | 
					  for (const auto& ld_preload_name : g_ld_preload_names) {
 | 
				
			||||||
    needed_library_name_list.push_back(ld_preload_name.c_str());
 | 
					    needed_library_name_list.push_back(ld_preload_name.c_str());
 | 
				
			||||||
    ++needed_libraries_count;
 | 
					    ++needed_libraries_count;
 | 
				
			||||||
 | 
					    ++ld_preloads_count;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for_each_dt_needed(si, [&](const char* name) {
 | 
					  for_each_dt_needed(si, [&](const char* name) {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user