Lines Matching refs:ElfW
183 const char* ElfReader::get_string(ElfW(Word) index) const { in get_string()
264 if (header_.e_shentsize != sizeof(ElfW(Shdr))) { in VerifyElfHeader()
268 name_.c_str(), header_.e_shentsize, sizeof(ElfW(Shdr))); in VerifyElfHeader()
272 name_.c_str(), header_.e_shentsize, sizeof(ElfW(Shdr))); in VerifyElfHeader()
290 bool ElfReader::CheckFileRange(ElfW(Addr) offset, size_t size, size_t alignment) { in CheckFileRange()
313 if (phdr_num_ < 1 || phdr_num_ > 65536/sizeof(ElfW(Phdr))) { in ReadProgramHeaders()
319 size_t size = phdr_num_ * sizeof(ElfW(Phdr)); in ReadProgramHeaders()
320 if (!CheckFileRange(header_.e_phoff, size, alignof(ElfW(Phdr)))) { in ReadProgramHeaders()
333 phdr_table_ = static_cast<ElfW(Phdr)*>(phdr_fragment_.data()); in ReadProgramHeaders()
345 size_t size = shdr_num_ * sizeof(ElfW(Shdr)); in ReadSectionHeaders()
346 if (!CheckFileRange(header_.e_shoff, size, alignof(const ElfW(Shdr)))) { in ReadSectionHeaders()
359 shdr_table_ = static_cast<const ElfW(Shdr)*>(shdr_fragment_.data()); in ReadSectionHeaders()
365 const ElfW(Shdr)* dynamic_shdr = nullptr; in ReadDynamicSection() local
382 const ElfW(Phdr)* phdr = &phdr_table_[i]; in ReadDynamicSection() local
430 const ElfW(Shdr)* strtab_shdr = &shdr_table_[dynamic_shdr->sh_link]; in ReadDynamicSection() local
438 if (!CheckFileRange(dynamic_shdr->sh_offset, dynamic_shdr->sh_size, alignof(const ElfW(Dyn)))) { in ReadDynamicSection()
448 dynamic_ = static_cast<const ElfW(Dyn)*>(dynamic_fragment_.data()); in ReadDynamicSection()
476 size_t phdr_table_get_load_size(const ElfW(Phdr)* phdr_table, size_t phdr_count, in phdr_table_get_load_size()
477 ElfW(Addr)* out_min_vaddr, in phdr_table_get_load_size()
478 ElfW(Addr)* out_max_vaddr) { in phdr_table_get_load_size()
479 ElfW(Addr) min_vaddr = UINTPTR_MAX; in phdr_table_get_load_size()
480 ElfW(Addr) max_vaddr = 0; in phdr_table_get_load_size()
484 const ElfW(Phdr)* phdr = &phdr_table[i]; in phdr_table_get_load_size() local
553 ElfW(Addr) min_vaddr; in ReserveAddressSpace()
613 const ElfW(Phdr)* phdr = &phdr_table_[i]; in LoadSegments() local
620 ElfW(Addr) seg_start = phdr->p_vaddr + load_bias_; in LoadSegments()
621 ElfW(Addr) seg_end = seg_start + phdr->p_memsz; in LoadSegments()
623 ElfW(Addr) seg_page_start = PAGE_START(seg_start); in LoadSegments()
624 ElfW(Addr) seg_page_end = PAGE_END(seg_end); in LoadSegments()
626 ElfW(Addr) seg_file_end = seg_start + phdr->p_filesz; in LoadSegments()
629 ElfW(Addr) file_start = phdr->p_offset; in LoadSegments()
630 ElfW(Addr) file_end = file_start + phdr->p_filesz; in LoadSegments()
632 ElfW(Addr) file_page_start = PAGE_START(file_start); in LoadSegments()
633 ElfW(Addr) file_length = file_end - file_page_start; in LoadSegments()
708 static int _phdr_table_set_load_prot(const ElfW(Phdr)* phdr_table, size_t phdr_count, in _phdr_table_set_load_prot()
709 ElfW(Addr) load_bias, int extra_prot_flags) { in _phdr_table_set_load_prot()
710 const ElfW(Phdr)* phdr = phdr_table; in _phdr_table_set_load_prot() local
711 const ElfW(Phdr)* phdr_limit = phdr + phdr_count; in _phdr_table_set_load_prot() local
718 ElfW(Addr) seg_page_start = PAGE_START(phdr->p_vaddr) + load_bias; in _phdr_table_set_load_prot()
719 ElfW(Addr) seg_page_end = PAGE_END(phdr->p_vaddr + phdr->p_memsz) + load_bias; in _phdr_table_set_load_prot()
748 int phdr_table_protect_segments(const ElfW(Phdr)* phdr_table, in phdr_table_protect_segments()
749 size_t phdr_count, ElfW(Addr) load_bias) { in phdr_table_protect_segments()
769 int phdr_table_unprotect_segments(const ElfW(Phdr)* phdr_table, in phdr_table_unprotect_segments()
770 size_t phdr_count, ElfW(Addr) load_bias) { in phdr_table_unprotect_segments()
777 static int _phdr_table_set_gnu_relro_prot(const ElfW(Phdr)* phdr_table, size_t phdr_count, in _phdr_table_set_gnu_relro_prot()
778 ElfW(Addr) load_bias, int prot_flags) { in _phdr_table_set_gnu_relro_prot()
779 const ElfW(Phdr)* phdr = phdr_table; in _phdr_table_set_gnu_relro_prot() local
780 const ElfW(Phdr)* phdr_limit = phdr + phdr_count; in _phdr_table_set_gnu_relro_prot() local
803 ElfW(Addr) seg_page_start = PAGE_START(phdr->p_vaddr) + load_bias; in _phdr_table_set_gnu_relro_prot()
804 ElfW(Addr) seg_page_end = PAGE_END(phdr->p_vaddr + phdr->p_memsz) + load_bias; in _phdr_table_set_gnu_relro_prot()
832 int phdr_table_protect_gnu_relro(const ElfW(Phdr)* phdr_table, in phdr_table_protect_gnu_relro()
833 size_t phdr_count, ElfW(Addr) load_bias) { in phdr_table_protect_gnu_relro()
849 int phdr_table_serialize_gnu_relro(const ElfW(Phdr)* phdr_table, in phdr_table_serialize_gnu_relro()
851 ElfW(Addr) load_bias, in phdr_table_serialize_gnu_relro()
853 const ElfW(Phdr)* phdr = phdr_table; in phdr_table_serialize_gnu_relro() local
854 const ElfW(Phdr)* phdr_limit = phdr + phdr_count; in phdr_table_serialize_gnu_relro() local
862 ElfW(Addr) seg_page_start = PAGE_START(phdr->p_vaddr) + load_bias; in phdr_table_serialize_gnu_relro()
863 ElfW(Addr) seg_page_end = PAGE_END(phdr->p_vaddr + phdr->p_memsz) + load_bias; in phdr_table_serialize_gnu_relro()
896 int phdr_table_map_gnu_relro(const ElfW(Phdr)* phdr_table, in phdr_table_map_gnu_relro()
898 ElfW(Addr) load_bias, in phdr_table_map_gnu_relro()
916 const ElfW(Phdr)* phdr = phdr_table; in phdr_table_map_gnu_relro() local
917 const ElfW(Phdr)* phdr_limit = phdr + phdr_count; in phdr_table_map_gnu_relro() local
924 ElfW(Addr) seg_page_start = PAGE_START(phdr->p_vaddr) + load_bias; in phdr_table_map_gnu_relro()
925 ElfW(Addr) seg_page_end = PAGE_END(phdr->p_vaddr + phdr->p_memsz) + load_bias; in phdr_table_map_gnu_relro()
993 int phdr_table_get_arm_exidx(const ElfW(Phdr)* phdr_table, size_t phdr_count, in phdr_table_get_arm_exidx()
994 ElfW(Addr) load_bias, in phdr_table_get_arm_exidx()
995 ElfW(Addr)** arm_exidx, size_t* arm_exidx_count) { in phdr_table_get_arm_exidx()
996 const ElfW(Phdr)* phdr = phdr_table; in phdr_table_get_arm_exidx() local
997 const ElfW(Phdr)* phdr_limit = phdr + phdr_count; in phdr_table_get_arm_exidx() local
1004 *arm_exidx = reinterpret_cast<ElfW(Addr)*>(load_bias + phdr->p_vaddr); in phdr_table_get_arm_exidx()
1027 void phdr_table_get_dynamic_section(const ElfW(Phdr)* phdr_table, size_t phdr_count, in phdr_table_get_dynamic_section()
1028 ElfW(Addr) load_bias, ElfW(Dyn)** dynamic, in phdr_table_get_dynamic_section()
1029 ElfW(Word)* dynamic_flags) { in phdr_table_get_dynamic_section()
1032 const ElfW(Phdr)& phdr = phdr_table[i]; in phdr_table_get_dynamic_section() local
1034 *dynamic = reinterpret_cast<ElfW(Dyn)*>(load_bias + phdr.p_vaddr); in phdr_table_get_dynamic_section()
1052 const char* phdr_table_get_interpreter_name(const ElfW(Phdr) * phdr_table, size_t phdr_count, in phdr_table_get_interpreter_name()
1053 ElfW(Addr) load_bias) { in phdr_table_get_interpreter_name()
1055 const ElfW(Phdr)& phdr = phdr_table[i]; in phdr_table_get_interpreter_name() local
1067 const ElfW(Phdr)* phdr_limit = phdr_table_ + phdr_num_; in FindPhdr() local
1070 for (const ElfW(Phdr)* phdr = phdr_table_; phdr < phdr_limit; ++phdr) { in FindPhdr() local
1079 for (const ElfW(Phdr)* phdr = phdr_table_; phdr < phdr_limit; ++phdr) { in FindPhdr() local
1082 ElfW(Addr) elf_addr = load_bias_ + phdr->p_vaddr; in FindPhdr()
1083 const ElfW(Ehdr)* ehdr = reinterpret_cast<const ElfW(Ehdr)*>(elf_addr); in FindPhdr() local
1084 ElfW(Addr) offset = ehdr->e_phoff; in FindPhdr()
1085 return CheckPhdr(reinterpret_cast<ElfW(Addr)>(ehdr) + offset); in FindPhdr()
1098 bool ElfReader::CheckPhdr(ElfW(Addr) loaded) { in CheckPhdr()
1099 const ElfW(Phdr)* phdr_limit = phdr_table_ + phdr_num_; in CheckPhdr() local
1100 ElfW(Addr) loaded_end = loaded + (phdr_num_ * sizeof(ElfW(Phdr))); in CheckPhdr()
1101 for (const ElfW(Phdr)* phdr = phdr_table_; phdr < phdr_limit; ++phdr) { in CheckPhdr() local
1105 ElfW(Addr) seg_start = phdr->p_vaddr + load_bias_; in CheckPhdr()
1106 ElfW(Addr) seg_end = phdr->p_filesz + seg_start; in CheckPhdr()
1108 loaded_phdr_ = reinterpret_cast<const ElfW(Phdr)*>(loaded); in CheckPhdr()