Home | History | Annotate | Download | only in llvm-readobj

Lines Matching refs:Phdr

93   using Elf_Phdr = typename ELFT::Phdr;                                        \
410 bool checkTLSSections(const Elf_Phdr &Phdr, const Elf_Shdr &Sec);
411 bool checkoffsets(const Elf_Phdr &Phdr, const Elf_Shdr &Sec);
412 bool checkVMA(const Elf_Phdr &Phdr, const Elf_Shdr &Sec);
413 Phdr, const Elf_Shdr &Sec);
1381 for (const Elf_Phdr &Phdr : unwrapOrError(Obj->program_headers())) {
1382 if (Phdr.p_type == ELF::PT_DYNAMIC) {
1383 DynamicTable = createDRIFrom(&Phdr, sizeof(Elf_Dyn));
1386 if (Phdr.p_type != ELF::PT_LOAD || Phdr.p_filesz == 0)
1388 LoadSegments.push_back(&Phdr);
1451 [](uint64_t VAddr, const Elf_Phdr_Impl<ELFT> *Phdr) {
1452 return VAddr < Phdr->p_vaddr;
1457 const Elf_Phdr &Phdr = **I;
1458 uint64_t Delta = VAddr - Phdr.p_vaddr;
1459 if (Delta >= Phdr.p_filesz)
1461 return Obj->base() + Phdr.p_offset + Delta;
3186 bool GNUStyle<ELFT>::checkTLSSections(const Elf_Phdr &Phdr,
3189 ((Phdr.p_type == ELF::PT_TLS) || (Phdr.p_type == ELF::PT_LOAD) ||
3190 (Phdr.p_type == ELF::PT_GNU_RELRO))) ||
3191 (!(Sec.sh_flags & ELF::SHF_TLS) && Phdr.p_type != ELF::PT_TLS));
3197 bool GNUStyle<ELFT>::checkoffsets(const Elf_Phdr &Phdr, const Elf_Shdr &Sec) {
3204 (IsSpecial && Phdr.p_type != ELF::PT_TLS) ? 0 : Sec.sh_size;
3205 if (Sec.sh_offset >= Phdr.p_offset)
3206 return ((Sec.sh_offset + SectionSize <= Phdr.p_filesz + Phdr.p_offset)
3208 (Sec.sh_offset + 1 <= Phdr.p_offset + Phdr.p_filesz));
3215 bool GNUStyle<ELFT>::checkVMA(const Elf_Phdr &Phdr, const Elf_Shdr &Sec) {
3222 (IsSpecial && Phdr.p_type != ELF::PT_TLS) ? 0 : Sec.sh_size;
3223 if (Sec.sh_addr >= Phdr.p_vaddr)
3224 return ((Sec.sh_addr + SectionSize <= Phdr.p_vaddr + Phdr.p_memsz) &&
3225 (Sec.sh_addr + 1 <= Phdr.p_vaddr + Phdr.p_memsz));
3231 bool GNUStyle<ELFT>::checkPTDynamic(const Elf_Phdr &Phdr, const Elf_Shdr &Sec) {
3232 if (Phdr.p_type != ELF::PT_DYNAMIC || Sec.sh_size != 0 || Phdr.p_memsz == 0)
3234 // Is section within the phdr both based on offset and VMA ?
3236 (Sec.sh_offset > Phdr.p_offset &&
3237 Sec.sh_offset < Phdr.p_offset + Phdr.p_filesz)) &&
3239 (Sec.sh_addr > Phdr.p_vaddr && Sec.sh_addr < Phdr.p_memsz));
3264 for (const auto &Phdr : unwrapOrError(Obj->program_headers())) {
3265 Type = getElfPtType(Header->e_machine, Phdr.p_type);
3266 Offset = to_string(format_hex(Phdr.p_offset, 8));
3267 VMA = to_string(format_hex(Phdr.p_vaddr, Width));
3268 LMA = to_string(format_hex(Phdr.p_paddr, Width));
3269 FileSz = to_string(format_hex(Phdr.p_filesz, SizeWidth));
3270 MemSz = to_string(format_hex(Phdr.p_memsz, SizeWidth));
3271 Flag = printPhdrFlags(Phdr.p_flags);
3272 Align = to_string(format_hex(Phdr.p_align, 1));
3283 if (Phdr.p_type == ELF::PT_INTERP) {
3285 OS << reinterpret_cast<const char *>(Obj->base()) + Phdr.p_offset << "]";
3291 for (const Elf_Phdr &Phdr : unwrapOrError(Obj->program_headers())) {
3301 Phdr.p_type != ELF::PT_TLS;
3302 if (!TbssInNonTLS && checkTLSSections(Phdr, Sec) &&
3303 checkoffsets(Phdr, Sec) && checkVMA(Phdr, Sec) &&
3304 checkPTDynamic(Phdr, Sec) && (Sec.sh_type != ELF::SHT_NULL))
4332 for (const Elf_Phdr &Phdr : unwrapOrError(Obj->program_headers())) {
4335 getElfSegmentType(Obj->getHeader()->e_machine, Phdr.p_type),
4336 Phdr.p_type);
4337 W.printHex("Offset", Phdr.p_offset);
4338 W.printHex("VirtualAddress", Phdr.p_vaddr);
4339 W.printHex("PhysicalAddress", Phdr.p_paddr);
4340 W.printNumber("FileSize", Phdr.p_filesz);
4341 W.printNumber("MemSize", Phdr.p_memsz);
4342 W.printFlags("Flags", Phdr.p_flags, makeArrayRef(ElfSegmentFlags));
4343 W.printNumber("Alignment", Phdr.p_align);