/bionic/linker/ |
D | linker_soinfo.cpp | 53 SymbolLookupList::SymbolLookupList(soinfo* si) in SymbolLookupList() 67 global_group.for_each([this](soinfo* si) { in SymbolLookupList() 72 local_group.for_each([this](soinfo* si) { in SymbolLookupList() 92 void SymbolLookupList::set_dt_symbolic_lib(soinfo* lib) { in set_dt_symbolic_lib() 120 soinfo** si_found_in, const SymbolLookupList& lookup_list) { in ElfW() 208 soinfo** si_found_in, const SymbolLookupList& lookup_list) { in ElfW() 214 soinfo::soinfo(android_namespace_t* ns, const char* realpath, in soinfo() function in soinfo 236 soinfo::~soinfo() { in ~soinfo() 240 void soinfo::set_dt_runpath(const char* path) { in set_dt_runpath() 262 const ElfW(Versym)* soinfo::get_versym(size_t n) const { in ElfW() [all …]
|
D | linker_main.h | 52 soinfo* soinfo_alloc(android_namespace_t* ns, const char* name, 57 soinfo* start_with, 60 soinfo* soinfos[], 61 std::vector<soinfo*>* ld_preloads, 69 void solist_add_soinfo(soinfo* si); 70 bool solist_remove_soinfo(soinfo* si); 71 soinfo* solist_get_head(); 72 soinfo* solist_get_somain(); 73 soinfo* solist_get_vdso();
|
D | linker_cfi.h | 64 bool AddLibrary(soinfo* si); 72 bool MaybeInit(soinfo *new_si, soinfo *solist); 79 bool NotifyLibDl(soinfo *solist, uintptr_t p); 92 bool AfterLoad(soinfo* si, soinfo *solist); 95 void BeforeUnload(soinfo* si); 98 bool InitialLinkDone(soinfo *solist);
|
D | linker.h | 60 bool init(const soinfo* si_from); 64 bool init_verneed(const soinfo* si_from); 65 bool init_verdef(const soinfo* si_from); 67 const char* ver_name, const soinfo* target_si); 74 soinfo* get_libdl_info(const soinfo& linker_si); 76 soinfo* find_containing_library(const void* p); 178 ElfW(Versym) find_verdef_version_index(const soinfo* si, const version_info* vi); 179 bool validate_verdef_section(const soinfo* si);
|
D | linker_cfi.cpp | 134 static soinfo* find_libdl(soinfo* solist) { in find_libdl() 135 for (soinfo* si = solist; si != nullptr; si = si->next) { in find_libdl() 144 static uintptr_t soinfo_find_symbol(soinfo* si, const char* s) { in soinfo_find_symbol() 152 uintptr_t soinfo_find_cfi_check(soinfo* si) { in soinfo_find_cfi_check() 163 bool CFIShadowWriter::AddLibrary(soinfo* si) { in AddLibrary() 196 bool CFIShadowWriter::NotifyLibDl(soinfo* solist, uintptr_t p) { in NotifyLibDl() 197 soinfo* libdl = find_libdl(solist); in NotifyLibDl() 212 bool CFIShadowWriter::MaybeInit(soinfo* new_si, soinfo* solist) { in MaybeInit() 220 for (soinfo* si = solist; si != nullptr; si = si->next) { in MaybeInit() 239 for (soinfo* si = solist; si != nullptr; si = si->next) { in MaybeInit() [all …]
|
D | linker.cpp | 84 static LinkerTypeAllocator<soinfo> g_soinfo_allocator; 85 static LinkerTypeAllocator<LinkedListEntry<soinfo>> g_soinfo_links_allocator; 191 static bool is_greylisted(android_namespace_t* ns, const char* name, const soinfo* needed_by) { in is_greylisted() 239 static void notify_gdb_of_load(soinfo* info) { in notify_gdb_of_load() 258 static void notify_gdb_of_unload(soinfo* info) { in notify_gdb_of_unload() 262 LinkedListEntry<soinfo>* SoinfoListAllocator::alloc() { in alloc() 266 void SoinfoListAllocator::free(LinkedListEntry<soinfo>* entry) { in free() 278 soinfo* soinfo_alloc(android_namespace_t* ns, const char* name, in soinfo_alloc() 287 soinfo* si = new (g_soinfo_allocator.alloc()) soinfo(ns, name, file_stat, in soinfo_alloc() 299 static void soinfo_free(soinfo* si) { in soinfo_free() [all …]
|
D | linker_soinfo.h | 91 soinfo* si_ = nullptr; 105 explicit SymbolLookupList(soinfo* si); 107 void set_dt_symbolic_lib(soinfo* symbolic_lib); 142 const soinfo* target_si; 157 struct soinfo { struct 182 soinfo* next; argument 246 soinfo(android_namespace_t* ns, const char* name, const struct stat* file_stat, argument 248 ~soinfo(); 254 bool link_image(const SymbolLookupList& lookup_list, soinfo* local_group_root, 258 void add_child(soinfo* child); [all …]
|
D | linker_common_types.h | 42 struct soinfo; 46 static LinkedListEntry<soinfo>* alloc(); 47 static void free(LinkedListEntry<soinfo>* entry); 64 typedef LinkedList<soinfo, SoinfoListAllocator> soinfo_list_t;
|
D | linker_namespaces.cpp | 73 bool android_namespace_t::is_accessible(soinfo* s) { in is_accessible() 74 auto is_accessible_ftor = [this] (soinfo* si, bool allow_secondary) { in is_accessible() 116 return !s->get_parents().visit([&](soinfo* si) { in is_accessible() 130 soinfo_list().for_each([&](soinfo* si) { in get_global_group() 150 soinfo_list().for_each([&](soinfo* si) { in get_shared_group()
|
D | linker_main.cpp | 67 static void set_bss_vma_name(soinfo* si); 74 static soinfo* solist; 75 static soinfo* sonext; 76 static soinfo* somain; // main process, always the one after libdl_info 77 static soinfo* solinker; 78 static soinfo* vdso; // vdso if present 80 void solist_add_soinfo(soinfo* si) { in solist_add_soinfo() 85 bool solist_remove_soinfo(soinfo* si) { in solist_remove_soinfo() 86 soinfo *prev = nullptr, *trav; in solist_remove_soinfo() 111 soinfo* solist_get_head() { in solist_get_head() [all …]
|
D | linker_tls.h | 36 struct soinfo; 41 void register_soinfo_tls(soinfo* si); 42 void unregister_soinfo_tls(soinfo* si);
|
D | linker_tls.cpp | 58 static void register_tls_module(soinfo* si, size_t static_offset) { in register_tls_module() 85 static void unregister_tls_module(soinfo* si) { in unregister_tls_module() 110 soinfo* somain = solist_get_somain(); in linker_setup_exe_static_tls() 133 void register_soinfo_tls(soinfo* si) { in register_soinfo_tls() 146 void unregister_soinfo_tls(soinfo* si) { in unregister_soinfo_tls()
|
D | linker_namespaces.h | 139 void add_soinfo(soinfo* si) { in add_soinfo() 149 void remove_soinfo(soinfo* si) { in remove_soinfo() 150 soinfo_list_.remove_if([&](soinfo* candidate) { in remove_soinfo() 164 bool is_accessible(soinfo* si);
|
D | linker_globals.h | 80 struct soinfo; 85 extern std::unordered_map<uintptr_t, soinfo*> g_soinfo_handles_map;
|
D | dlfcn.cpp | 305 static uint8_t __libdl_info_buf[sizeof(soinfo)] __attribute__((aligned(8))); 306 static soinfo* __libdl_info = nullptr; 309 soinfo* get_libdl_info(const soinfo& linker_si) { in get_libdl_info() 313 __libdl_info = new (__libdl_info_buf) soinfo(&g_default_namespace, nullptr, nullptr, 0, 0); in get_libdl_info()
|
D | linker_relocate.cpp | 65 soinfo* si = nullptr; 77 soinfo* cache_si = nullptr; 96 soinfo** found_in, const ElfW(Sym)** sym) { in lookup_symbol() 107 soinfo* local_found_in = nullptr; in lookup_symbol() 167 soinfo* found_in = nullptr; in process_relocation_impl() 573 bool soinfo::relocate(const SymbolLookupList& lookup_list) { in relocate()
|
D | linker_globals.cpp | 41 std::unordered_map<uintptr_t, soinfo*> g_soinfo_handles_map;
|
D | linker_relocate.h | 60 inline bool is_symbol_global_and_defined(const soinfo* si, const ElfW(Sym)* s) { in is_symbol_global_and_defined()
|