Home | History | Annotate | Download | only in linker

Lines Matching refs:Phdr

63 static void get_elf_base_from_phdr(const ElfW(Phdr)* phdr_table, size_t phdr_count,
161 si->phdr = reinterpret_cast<ElfW(Phdr)*>(reinterpret_cast<char*>(ehdr_vdso) + ehdr_vdso->e_phoff);
164 si->size = phdr_table_get_load_size(si->phdr, si->phnum);
178 // soinfo (phdr, phnum, load_bias).
183 phdr_table_get_dynamic_section(info.phdr, info.phnum, info.load_bias, &map.l_ld, nullptr);
191 const ElfW(Phdr)* phdr;
227 result.phdr = reinterpret_cast<const ElfW(Phdr)*>(getauxval(AT_PHDR));
289 result.phdr = elf_reader.loaded_phdr();
363 si->phdr = exe_info.phdr;
365 get_elf_base_from_phdr(si->phdr, si->phnum, &si->base, &si->load_bias);
366 si->size = phdr_table_get_load_size(si->phdr, si->phnum);
530 const ElfW(Phdr)* phdr_table =
531 reinterpret_cast<const ElfW(Phdr)*>(reinterpret_cast<uintptr_t>(elf) + offset);
532 const ElfW(Phdr)* phdr_end = phdr_table + elf->e_phnum;
534 for (const ElfW(Phdr)* phdr = phdr_table; phdr < phdr_end; phdr++) {
535 if (phdr->p_type == PT_LOAD) {
536 return reinterpret_cast<ElfW(Addr)>(elf) + phdr->p_offset - phdr->p_vaddr;
543 * by the kernel. The ELF file's PHDR table must have a PT_PHDR entry.
545 * A VDSO doesn't have a PT_PHDR entry in its PHDR table.
547 static void get_elf_base_from_phdr(const ElfW(Phdr)* phdr_table, size_t phdr_count,
556 async_safe_fatal("Could not find a PHDR: broken executable?");
600 // the phdr to find the linker's base address.
603 reinterpret_cast<ElfW(Phdr)*>(getauxval(AT_PHDR)), getauxval(AT_PHNUM),
608 ElfW(Phdr)* phdr = reinterpret_cast<ElfW(Phdr)*>(linker_addr + elf_hdr->e_phoff);
613 tmp_linker_so.size = phdr_table_get_load_size(phdr, elf_hdr->e_phnum);
616 tmp_linker_so.phdr = phdr;