/aosp12/bionic/linker/ |
H A D | linker_phdr.h | 51 ElfW(Addr) load_start() const { return reinterpret_cast<ElfW(Addr)>(load_start_); } in load_start() 53 ElfW(Addr) gap_start() const { return reinterpret_cast<ElfW(Addr)>(gap_start_); } in gap_start() 72 bool CheckPhdr(ElfW(Addr)); 82 ElfW(Ehdr) header_; 86 const ElfW(Phdr)* phdr_table_; 89 const ElfW(Shdr)* shdr_table_; 93 const ElfW(Dyn)* dynamic_; 108 ElfW(Addr) load_bias_; 111 const ElfW(Phdr)* loaded_phdr_; 121 ElfW(Addr)* min_vaddr = nullptr, ElfW(Addr)* max_vaddr = nullptr); [all …]
|
H A D | linker_phdr.cpp | 497 ElfW(Addr) min_vaddr = UINTPTR_MAX; in phdr_table_get_load_size() 498 ElfW(Addr) max_vaddr = 0; in phdr_table_get_load_size() 641 ElfW(Addr) min_vaddr; in ReserveAddressSpace() 795 const ElfW(Phdr)* phdr = phdr_table; in _phdr_table_set_load_prot() local 880 const ElfW(Phdr)* phdr = phdr_table; in _phdr_table_set_gnu_relro_prot() local 956 const ElfW(Phdr)* phdr = phdr_table; in phdr_table_serialize_gnu_relro() local 1019 const ElfW(Phdr)* phdr = phdr_table; in phdr_table_map_gnu_relro() local 1099 const ElfW(Phdr)* phdr = phdr_table; in phdr_table_get_arm_exidx() local 1131 ElfW(Addr) load_bias, ElfW(Dyn)** dynamic, in phdr_table_get_dynamic_section() 1186 const ElfW(Ehdr)* ehdr = reinterpret_cast<const ElfW(Ehdr)*>(elf_addr); in FindPhdr() local [all …]
|
H A D | linker_soinfo.h | 71 ElfW(Addr) call_ifunc_resolver(ElfW(Addr) resolver_addr); 168 ElfW(Addr) base; 175 ElfW(Dyn)* dynamic; 187 ElfW(Sym)* symtab_; 199 ElfW(Rela)* plt_rela_; 202 ElfW(Rela)* rela_; 205 ElfW(Rel)* plt_rel_; 208 ElfW(Rel)* rel_; 238 ElfW(Addr) load_bias; 278 ElfW(Addr) resolve_symbol_address(const ElfW(Sym)* s) const { in resolve_symbol_address() [all …]
|
H A D | linker_main.cpp | 63 static ElfW(Addr) get_elf_exec_load_bias(const ElfW(Ehdr)* elf); 66 ElfW(Addr)* base, ElfW(Addr)* load_bias); 161 ElfW(Ehdr)* ehdr_vdso = reinterpret_cast<ElfW(Ehdr)*>(getauxval(AT_SYSINFO_EHDR)); in add_vdso() 199 const ElfW(Phdr)* phdr; 201 ElfW(Addr) entry_point; 427 ElfW(Ehdr)* elf_hdr = reinterpret_cast<ElfW(Ehdr)*>(si->base); in linker_main() 543 static ElfW(Addr) get_elf_exec_load_bias(const ElfW(Ehdr)* elf) { in get_elf_exec_load_bias() 563 ElfW(Addr)* base, ElfW(Addr)* load_bias) { in get_elf_base_from_phdr() 608 ElfW(Addr)* offset = reinterpret_cast<ElfW(Addr)*>(r->r_offset + load_bias); in call_ifunc_resolvers() 618 ElfW(Addr)* offset = reinterpret_cast<ElfW(Addr)*>(r->r_offset + load_bias); in call_ifunc_resolvers() [all …]
|
H A D | linker_note_gnu_property_test.cpp | 108 bool push(ElfW(Word) pr_type, ElfW(Word) pr_datasz, const T* pr_data) { in push() 115 ElfW(Prop)* prop = reinterpret_cast<ElfW(Prop)*>(§ion[offset()]); in push() 119 step(2 * sizeof(ElfW(Word))); in push() 175 ElfW(NhdrGNUProperty)* note; 198 ElfW(Phdr) phdrs[] = { in TEST() 211 ElfW(Phdr) phdrs[] = { in TEST() 229 ElfW(NhdrGNUProperty) prop = { in TEST() 233 ElfW(Phdr) phdrs[] = { in TEST() 249 ElfW(NhdrGNUProperty) prop = { in TEST() 353 ElfW(Word) pr_data[] = {static_cast<ElfW(Word)>(~GNU_PROPERTY_AARCH64_FEATURE_1_BTI)}; in TEST() [all …]
|
H A D | linker_note_gnu_property.cpp | 42 GnuPropertySection::GnuPropertySection(const ElfW(Phdr)* phdr, size_t phdr_count, in GnuPropertySection() 43 const ElfW(Addr) load_bias, const char* name) { in GnuPropertySection() 53 const ElfW(NhdrGNUProperty)* GnuPropertySection::FindSegment(const ElfW(Phdr)* phdr, in ElfW() function 68 if (phdr[i].p_memsz < sizeof(ElfW(NhdrGNUProperty))) { in ElfW() 97 bool GnuPropertySection::SanityCheck(const ElfW(NhdrGNUProperty)* note_nhdr, in SanityCheck() 123 ElfW(Word) offset = 0; in Parse() 129 if ((note_nhdr->nhdr.n_descsz - offset) < sizeof(ElfW(Prop))) { in Parse() 138 const ElfW(Prop)* property = reinterpret_cast<const ElfW(Prop)*>(¬e_nhdr->n_desc[offset]); in Parse() local 139 const ElfW(Word) property_size = in Parse() local 140 align_up(sizeof(ElfW(Prop)) + property->pr_datasz, sizeof(ElfW(Addr))); in Parse() [all …]
|
H A D | linker_wrapper.cpp | 42 static void get_elf_base_from_phdr(const ElfW(Phdr)* phdr_table, size_t phdr_count, in get_elf_base_from_phdr() 43 ElfW(Addr)* base, ElfW(Addr)* load_bias) { in get_elf_base_from_phdr() 46 *load_bias = reinterpret_cast<ElfW(Addr)>(phdr_table) - phdr_table[i].p_vaddr; in get_elf_base_from_phdr() 47 *base = reinterpret_cast<ElfW(Addr)>(phdr_table) - phdr_table[i].p_offset; in get_elf_base_from_phdr() 57 extern "C" ElfW(Addr) __linker_init(void* raw_args) { in __linker_init() 60 ElfW(Addr) base_addr = 0; in __linker_init() 61 ElfW(Addr) load_bias = 0; in __linker_init() 63 reinterpret_cast<ElfW(Phdr)*>(args.getauxval(AT_PHDR)), args.getauxval(AT_PHNUM), in __linker_init() 66 ElfW(Addr) linker_addr = base_addr + reinterpret_cast<uintptr_t>(&linker_offset); in __linker_init() 67 ElfW(Addr) linker_entry_offset = reinterpret_cast<ElfW(Ehdr)*>(linker_addr)->e_entry; in __linker_init() [all …]
|
H A D | linker_relocate.cpp | 47 static bool is_tls_reloc(ElfW(Word) type) { in is_tls_reloc() 68 ElfW(Sym)* si_symtab = nullptr; 74 ElfW(Word) cache_sym_val = 0; 76 const ElfW(Sym)* cache_sym = nullptr; 84 const char* get_string(ElfW(Word) index) { in get_string() 168 const ElfW(Sym)* sym = nullptr; in process_relocation_impl() local 170 ElfW(Addr) sym_addr = 0; in process_relocation_impl() 228 auto get_addend_rel = [&]() -> ElfW(Addr) { return *static_cast<ElfW(Addr)*>(rel_target); }; in process_relocation_impl() 377 ElfW(Addr) tpoff = 0; in process_relocation_impl() 483 const ElfW(Addr) base = reinterpret_cast<ElfW(Addr)>(rel_target); in process_relocation_impl() local [all …]
|
H A D | linker_soinfo.cpp | 170 ElfW(Versym) verneed = kVersymNotNeeded; in ElfW() 174 const ElfW(Sym)* sym = nullptr; in ElfW() local 283 ElfW(Addr) soinfo::get_verdef_ptr() const { in ElfW() function 364 ElfW(Sym)* s = symtab_ + n; in ElfW() 393 ElfW(Sym)* s = symtab_ + n; in ElfW() 417 static bool symbol_matches_soaddr(const ElfW(Sym)* sym, ElfW(Addr) soaddr) { in symbol_matches_soaddr() 428 ElfW(Addr) soaddr = reinterpret_cast<ElfW(Addr)>(addr) - load_bias; in ElfW() 438 ElfW(Sym)* sym = symtab_ + n; in ElfW() 449 ElfW(Addr) soaddr = reinterpret_cast<ElfW(Addr)>(addr) - load_bias; in ElfW() 454 ElfW(Sym)* sym = symtab_ + i; in ElfW() [all …]
|
H A D | linker_note_gnu_property.h | 79 GnuPropertySection(const ElfW(Phdr)* phdr, size_t phdr_count, const ElfW(Addr) load_bias, 87 const ElfW(NhdrGNUProperty)* FindSegment(const ElfW(Phdr)* phdr, size_t phdr_count, 88 const ElfW(Addr) load_bias, const char* name) const; 89 bool SanityCheck(const ElfW(NhdrGNUProperty)* note_nhdr, const char* name) const; 90 bool Parse(const ElfW(NhdrGNUProperty)* note_nhdr, const char* name);
|
H A D | linker.cpp | 756 const ElfW(Sym)* s = nullptr; in ElfW() local 821 ElfW(Addr) address = reinterpret_cast<ElfW(Addr)>(untag_address(p)); in find_containing_library() 2518 ElfW(Addr) call_ifunc_resolver(ElfW(Addr) resolver_addr) { in call_ifunc_resolver() 2561 const ElfW(Verneed)* verneed = reinterpret_cast<ElfW(Verneed)*>(verneed_ptr + offset); in init_verneed() local 2611 const ElfW(Verdef)* verdef = reinterpret_cast<ElfW(Verdef)*>(verdef_ptr + offset); in for_each_verdef() local 2652 [&](size_t, const ElfW(Verdef)* verdef, const ElfW(Verdaux)* verdaux) { in find_verdef_version_index() 2673 [&](size_t, const ElfW(Verdef)*, const ElfW(Verdaux)*) { in validate_verdef_section() 2680 [&](size_t, const ElfW(Verdef)* verdef, const ElfW(Verdaux)* verdaux) { in init_verdef() 2730 ElfW(Relr)* begin = relr_; in relocate_relr() 2734 ElfW(Addr) base = 0; in relocate_relr() [all …]
|
H A D | linker.h | 62 const version_info* get_version_info(ElfW(Versym) source_symver) const; 66 void add_version_info(size_t source_index, ElfW(Word) elf_hash, 184 ElfW(Versym) find_verdef_version_index(const soinfo* si, const version_info* vi);
|
H A D | linker_relocate.h | 42 static constexpr ElfW(Versym) kVersymHiddenBit = 0x8000; 60 inline bool is_symbol_global_and_defined(const soinfo* si, const ElfW(Sym)* s) { in is_symbol_global_and_defined()
|
/aosp12/bionic/libc/bionic/ |
H A D | libc_init_static.cpp | 91 ElfW(Addr)* offset = reinterpret_cast<ElfW(Addr)*>(r->r_offset); in call_ifunc_resolvers() 92 ElfW(Addr) resolver = r->r_addend; in call_ifunc_resolvers() 112 ElfW(Addr)* offset = reinterpret_cast<ElfW(Addr)*>(r->r_offset); in call_ifunc_resolvers() 113 ElfW(Addr) resolver = *offset; in call_ifunc_resolvers() 120 ElfW(Phdr)* phdr_start = reinterpret_cast<ElfW(Phdr)*>(getauxval(AT_PHDR)); in apply_gnu_relro() 141 ElfW(Phdr)* phdr_start = reinterpret_cast<ElfW(Phdr)*>(getauxval(AT_PHDR)); in layout_static_tls() 209 const ElfW(Phdr)* phdr = &phdr_start[i]; in __get_memtag_note() local 213 ElfW(Addr) p = load_bias + phdr->p_vaddr; in __get_memtag_note() 215 while (p + sizeof(ElfW(Nhdr)) <= note_end) { in __get_memtag_note() 216 const ElfW(Nhdr)* note = reinterpret_cast<const ElfW(Nhdr)*>(p); in __get_memtag_note() local [all …]
|
H A D | vdso.cpp | 85 ElfW(Ehdr)* vdso_ehdr = reinterpret_cast<ElfW(Ehdr)*>(vdso_ehdr_addr); in __libc_init_vdso() 92 ElfW(Shdr)* vdso_shdr = reinterpret_cast<ElfW(Shdr)*>(vdso_ehdr_addr + vdso_ehdr->e_shoff); in __libc_init_vdso() 95 symbol_count = vdso_shdr[i].sh_size / sizeof(ElfW(Sym)); in __libc_init_vdso() 103 ElfW(Addr) vdso_addr = 0; in __libc_init_vdso() 104 ElfW(Dyn)* vdso_dyn = nullptr; in __libc_init_vdso() 105 ElfW(Phdr)* vdso_phdr = reinterpret_cast<ElfW(Phdr)*>(vdso_ehdr_addr + vdso_ehdr->e_phoff); in __libc_init_vdso() 108 vdso_dyn = reinterpret_cast<ElfW(Dyn)*>(vdso_ehdr_addr + vdso_phdr[i].p_offset); in __libc_init_vdso() 119 ElfW(Sym)* symtab = nullptr; in __libc_init_vdso() 120 for (ElfW(Dyn)* d = vdso_dyn; d->d_tag != DT_NULL; ++d) { in __libc_init_vdso() 124 symtab = reinterpret_cast<ElfW(Sym)*>(vdso_addr + d->d_un.d_ptr); in __libc_init_vdso()
|
H A D | dl_iterate_phdr_static.cpp | 43 ElfW(Ehdr)* ehdr = reinterpret_cast<ElfW(Ehdr)*>(&__executable_start); in dl_iterate_phdr() 57 …exe_info.dlpi_phdr = reinterpret_cast<ElfW(Phdr)*>(reinterpret_cast<uintptr_t>(ehdr) + ehdr->e_pho… in dl_iterate_phdr() 82 ElfW(Ehdr)* ehdr_vdso = reinterpret_cast<ElfW(Ehdr)*>(getauxval(AT_SYSINFO_EHDR)); in dl_iterate_phdr() 91 …vdso_info.dlpi_phdr = reinterpret_cast<ElfW(Phdr)*>(reinterpret_cast<char*>(ehdr_vdso) + ehdr_vdso… in dl_iterate_phdr() 99 vdso_info.dlpi_addr = (ElfW(Addr)) ehdr_vdso - vdso_info.dlpi_phdr[i].p_vaddr; in dl_iterate_phdr()
|
H A D | libc_init_dynamic.cpp | 68 extern "C" __attribute__((weak)) void __hwasan_library_loaded(ElfW(Addr) base, 69 const ElfW(Phdr)* phdr, 70 ElfW(Half) phnum); 71 extern "C" __attribute__((weak)) void __hwasan_library_unloaded(ElfW(Addr) base, 72 const ElfW(Phdr)* phdr, 73 ElfW(Half) phnum);
|
H A D | bionic_call_ifunc_resolver.cpp | 39 ElfW(Addr) __bionic_call_ifunc_resolver(ElfW(Addr) resolver_addr) { in __bionic_call_ifunc_resolver() 41 typedef ElfW(Addr) (*ifunc_resolver_t)(uint64_t, __ifunc_arg_t*); in __bionic_call_ifunc_resolver() 52 typedef ElfW(Addr) (*ifunc_resolver_t)(unsigned long); in __bionic_call_ifunc_resolver() 61 typedef ElfW(Addr) (*ifunc_resolver_t)(void); in __bionic_call_ifunc_resolver()
|
/aosp12/bionic/libc/include/ |
H A D | link.h | 40 #define ElfW(type) Elf64_ ## type macro 42 #define ElfW(type) Elf32_ ## type 46 ElfW(Addr) dlpi_addr; 48 const ElfW(Phdr)* dlpi_phdr; 49 ElfW(Half) dlpi_phnum; 71 ElfW(Addr) l_addr; 73 ElfW(Dyn)* l_ld; 82 ElfW(Addr) r_brk; 88 ElfW(Addr) r_ldbase;
|
/aosp12/bionic/tests/ |
H A D | link_test.cpp | 64 for (ElfW(Half) i = 0; i < info->dlpi_phnum; ++i) { in TEST() 65 const ElfW(Phdr)* phdr = reinterpret_cast<const ElfW(Phdr)*>(&info->dlpi_phdr[i]); in TEST() local 67 const ElfW(Ehdr)* ehdr = reinterpret_cast<const ElfW(Ehdr)*>(info->dlpi_addr + in TEST() local 131 const ElfW(Phdr)* table; 136 static ElfW(Addr) find_exe_load_bias(const ProgHdr& phdr) { in find_exe_load_bias() 146 static ElfW(Dyn)* find_dynamic(const ProgHdr& phdr, ElfW(Addr) load_bias) { in ElfW() function 156 static r_debug* find_exe_r_debug(ElfW(Dyn)* dynamic) { in find_exe_r_debug() 157 for (ElfW(Dyn)* d = dynamic; d->d_tag != DT_NULL; ++d) { in find_exe_r_debug() 173 .table = reinterpret_cast<ElfW(Phdr)*>(getauxval(AT_PHDR)), in TEST() 177 ElfW(Addr) exe_load_bias = find_exe_load_bias(exe_phdr); in TEST() [all …]
|
/aosp12/bionic/libc/malloc_debug/ |
H A D | MapData.cpp | 106 ElfW(Ehdr) ehdr; in read_loadbias() 107 if (!get_val<ElfW(Half)>(entry, addr + offsetof(ElfW(Ehdr), e_phnum), &ehdr.e_phnum)) { in read_loadbias() 110 if (!get_val<ElfW(Off)>(entry, addr + offsetof(ElfW(Ehdr), e_phoff), &ehdr.e_phoff)) { in read_loadbias() 115 ElfW(Phdr) phdr; in read_loadbias() 116 if (!get_val<ElfW(Word)>(entry, addr + offsetof(ElfW(Phdr), p_type), &phdr.p_type)) { in read_loadbias() 119 if (!get_val<ElfW(Word)>(entry, addr + offsetof(ElfW(Phdr), p_flags), &phdr.p_flags)) { in read_loadbias() 122 if (!get_val<ElfW(Off)>(entry, addr + offsetof(ElfW(Phdr), p_offset), &phdr.p_offset)) { in read_loadbias() 126 if (!get_val<ElfW(Addr)>(entry, addr + offsetof(ElfW(Phdr), p_vaddr), &phdr.p_vaddr)) { in read_loadbias()
|
/aosp12/system/chre/platform/shared/include/chre/platform/shared/ |
H A D | nanoapp_loader.h | 106 using DynamicHeader = ElfW(Dyn); 107 using ElfAddr = ElfW(Addr); 108 using ElfHeader = ElfW(Ehdr); 109 using ElfRel = ElfW(Rel); // Relocation table entry, 111 using ElfRela = ElfW(Rela); 112 using ElfSym = ElfW(Sym); 113 using ElfWord = ElfW(Word); 114 using ProgramHeader = ElfW(Phdr); 115 using SectionHeader = ElfW(Shdr);
|
/aosp12/bionic/libc/private/ |
H A D | bionic_globals.h | 89 ElfW(auxv_t)* auxv = nullptr; 99 void (*load_hook)(ElfW(Addr) base, const ElfW(Phdr)* phdr, ElfW(Half) phnum) = nullptr; 100 void (*unload_hook)(ElfW(Addr) base, const ElfW(Phdr)* phdr, ElfW(Half) phnum) = nullptr;
|
H A D | KernelArgumentBlock.h | 46 auxv = reinterpret_cast<ElfW(auxv_t)*>(p); in KernelArgumentBlock() 52 for (ElfW(auxv_t)* v = auxv; v->a_type != AT_NULL; ++v) { in getauxval() 63 ElfW(auxv_t)* auxv;
|
H A D | bionic_call_ifunc_resolver.h | 34 __LIBC_HIDDEN__ ElfW(Addr) __bionic_call_ifunc_resolver(ElfW(Addr) resolver_addr);
|