Lines Matching refs:soinfo

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()
327 si->~soinfo(); in soinfo_free()
392 if (soinfo* si = find_containing_library(reinterpret_cast<void*>(pc))) { in do_dl_unwind_find_exidx()
406 for (soinfo* si = solist_get_head(); si != nullptr; si = si->next) { in do_dl_iterate_phdr()
506 static LoadTask* create(const char* _Nonnull name, soinfo* _Nullable needed_by, in create()
508 std::unordered_map<const soinfo*, ElfReader>* _Nonnull readers_map) { in create() argument
517 soinfo* get_needed_by() const { in get_needed_by()
521 soinfo* get_soinfo() const { in get_soinfo()
525 void set_soinfo(soinfo* si) { in set_soinfo()
585 std::unordered_map<const soinfo*, ElfReader>* get_readers_map() { in get_readers_map()
614 soinfo* needed_by, in LoadTask()
616 std::unordered_map<const soinfo*, ElfReader>* readers_map) in LoadTask() argument
628 soinfo* needed_by_;
629 soinfo* si_;
634 std::unordered_map<const soinfo*, ElfReader>* elf_readers_map_;
648 typedef linked_list_t<soinfo> SoinfoLinkedList;
668 static bool walk_dependencies_tree(soinfo* root_soinfo, F action) { in walk_dependencies_tree()
674 soinfo* si; in walk_dependencies_tree()
689 si->get_children().for_each([&](soinfo* child) { in walk_dependencies_tree()
700 soinfo* root, in ElfW()
701 soinfo* skip_until, in ElfW()
702 soinfo** found, in ElfW()
708 walk_dependencies_tree(root, [&](soinfo* current_soinfo) { in ElfW()
738 soinfo** found, in ElfW()
739 soinfo* caller, in ElfW()
758 soinfo* si = *it; in ElfW()
775 soinfo* local_group_root = caller->get_local_group_root(); in ElfW()
795 static const ElfW(Sym)* dlsym_handle_lookup(soinfo* si, in ElfW()
796 soinfo** found, in ElfW()
818 soinfo* find_containing_library(const void* p) { in find_containing_library()
822 for (soinfo* si = solist_get_head(); si != nullptr; si = si->next) { in find_containing_library()
1009 const char* name, soinfo *needed_by, in open_library()
1078 soinfo** candidate) { in find_loaded_library_by_inode()
1084 auto predicate = [&](soinfo* si) { in find_loaded_library_by_inode()
1095 soinfo* si = linked_ns->soinfo_list().find_if(predicate); in find_loaded_library_by_inode()
1108 bool search_linked_namespaces, soinfo** candidate) { in find_loaded_library_by_realpath()
1109 auto predicate = [&](soinfo* si) { return strcmp(realpath, si->get_realpath()) == 0; }; in find_loaded_library_by_realpath()
1116 soinfo* si = linked_ns->soinfo_list().find_if(predicate); in find_loaded_library_by_realpath()
1165 soinfo* si = nullptr; in load_library()
1194 const soinfo* needed_by = task->is_dt_needed() ? task->get_needed_by() : nullptr; in load_library()
1198 const soinfo* needed_or_dlopened_by = task->get_needed_by(); in load_library()
1233 soinfo* si = soinfo_alloc(ns, realpath.c_str(), &file_stat, file_offset, rtld_flags); in load_library()
1284 soinfo* needed_by = task->get_needed_by(); in load_library()
1340 soinfo** candidate) { in find_loaded_library_by_soname()
1341 return !ns->soinfo_list().visit([&](soinfo* si) { in find_loaded_library_by_soname()
1356 soinfo** candidate) { in find_loaded_library_by_soname()
1388 soinfo* candidate; in find_library_in_linked_namespace()
1428 soinfo* candidate; in find_library_internal()
1494 static void soinfo_unload(soinfo* si);
1514 soinfo* start_with, in find_libraries()
1517 soinfo* soinfos[], in find_libraries()
1518 std::vector<soinfo*>* ld_preloads, in find_libraries()
1525 std::unordered_map<const soinfo*, ElfReader> readers_map; in find_libraries()
1541 size_t soinfos_size = sizeof(soinfo*)*library_names_count; in find_libraries()
1542 soinfos = reinterpret_cast<soinfo**>(alloca(soinfos_size)); in find_libraries()
1561 soinfo* needed_by = task->get_needed_by(); in find_libraries()
1582 soinfo* si = task->get_soinfo(); in find_libraries()
1602 soinfo* si = task->get_soinfo(); in find_libraries()
1646 soinfo* si = task->get_soinfo(); in find_libraries()
1668 soinfo* si = task->get_soinfo(); in find_libraries()
1691 std::vector<soinfo*> local_group_roots; in find_libraries()
1700 soinfo* si = task->get_soinfo(); in find_libraries()
1701 soinfo* needed_by = task->get_needed_by(); in find_libraries()
1734 [&] (soinfo* si) { in find_libraries()
1745 soinfo* local_group_root = local_group.front(); in find_libraries()
1747 bool linked = local_group.visit([&](soinfo* si) { in find_libraries()
1785 soinfo* si = task->get_soinfo(); in find_libraries()
1790 soinfo* si = task->get_soinfo(); in find_libraries()
1791 soinfo* needed_by = task->get_needed_by(); in find_libraries()
1803 static soinfo* find_library(android_namespace_t* ns, in find_library()
1806 soinfo* needed_by) { in find_library()
1807 soinfo* si = nullptr; in find_library()
1832 static void soinfo_unload_impl(soinfo* root) { in soinfo_unload_impl()
1850 soinfo* si = nullptr; in soinfo_unload_impl()
1860 soinfo* child = nullptr; in soinfo_unload_impl()
1880 local_unload_list.for_each([](soinfo* si) { in soinfo_unload_impl()
1921 static void soinfo_unload(soinfo* unload_si) { in soinfo_unload()
1929 soinfo* root = is_linked ? unload_si->get_local_group_root() : unload_si; in soinfo_unload()
1961 soinfo* si = find_containing_library(dso_handle); in increment_dso_handle_reference_counter()
1984 soinfo* si = find_containing_library(dso_handle); in decrement_dso_handle_reference_counter()
2005 static android_namespace_t* get_caller_namespace(soinfo* caller) { in get_caller_namespace()
2071 soinfo* const caller = find_containing_library(caller_addr); in do_dlopen()
2150 soinfo* si = nullptr; in do_dlopen()
2163 soinfo* si = find_library(ns, translated_name, flags, extinfo, caller); in do_dlopen()
2184 soinfo* si = find_containing_library(addr); in do_dladdr()
2205 static soinfo* soinfo_from_handle(void* handle) { in soinfo_from_handle()
2215 return static_cast<soinfo*>(handle); in soinfo_from_handle()
2231 soinfo* found = nullptr; in do_dlsym()
2233 soinfo* caller = find_containing_library(caller_addr); in do_dlsym()
2235 soinfo* si = nullptr; in do_dlsym()
2314 soinfo* si = soinfo_from_handle(handle); in do_dlclose()
2410 soinfo* caller_soinfo = find_containing_library(caller_addr); in create_namespace()
2543 const soinfo* target_si) { in add_version_info()
2553 bool VersionTracker::init_verneed(const soinfo* si_from) { in init_verneed()
2574 soinfo* target_si = si_from->get_children().find_if([&](const soinfo* si) { in init_verneed()
2600 static bool for_each_verdef(const soinfo* si, F functor) { in for_each_verdef()
2647 ElfW(Versym) find_verdef_version_index(const soinfo* si, const version_info* vi) { in find_verdef_version_index()
2674 bool validate_verdef_section(const soinfo* si) { in validate_verdef_section()
2681 bool VersionTracker::init_verdef(const soinfo* si_from) { in init_verdef()
2691 bool VersionTracker::init(const soinfo* si_from) { in init()
2703 bool soinfo::lookup_version_info(const VersionTracker& version_tracker, ElfW(Word) sym, in lookup_version_info()
2724 void soinfo::apply_relr_reloc(ElfW(Addr) offset) { in apply_relr_reloc()
2732 bool soinfo::relocate_relr() { in relocate_relr()
2771 bool soinfo::prelink_image() { in prelink_image()
3230 bool soinfo::link_image(const SymbolLookupList& lookup_list, soinfo* local_group_root, in link_image()
3320 bool soinfo::protect_relro() { in protect_relro()
3441 soinfo* somain = solist_get_somain(); in init_default_namespaces()
3529 soinfo* ld_android_so = solist_get_head(); in init_default_namespaces()
3532 soinfo* vdso = solist_get_vdso(); in init_default_namespaces()