Lines Matching defs:Phdr
428 static bool checkOffsets(const typename ELFT::Phdr &Phdr,
438 AddressRange SegmentAddressRange(Phdr.p_offset,
439 Phdr.p_offset + Phdr.p_filesz);
450 static bool checkVMA(const typename ELFT::Phdr &Phdr,
456 AddressRange SegmentAddressRange(Phdr.p_vaddr, Phdr.p_vaddr + Phdr.p_memsz);
470 auto handleSection = [&](const ELFT::Phdr &Phdr, SectionRef SecRef) {
478 bool ImageContains = checkOffsets<ELFT>(Phdr, *Sec, ImageOverlap);
479 bool VMAContains = checkVMA<ELFT>(Phdr, *Sec, VMAOverlap);
501 for (const ELFT::Phdr &Phdr : cantFail(Obj.program_headers()))
502 if (Phdr.p_type == ELF::PT_GNU_RELRO)
504 handleSection(Phdr, SecRef);
523 for (const ELF64LE::Phdr &Phdr : PHs) {
524 switch (Phdr.p_type) {
527 static_cast<uint64_t>(Phdr.p_vaddr));
529 Phdr.p_vaddr + Phdr.p_memsz);
531 Phdr.p_offset + Phdr.p_filesz);
533 BC->SegmentMapInfo[Phdr.p_vaddr] = SegmentInfo{
534 Phdr.p_vaddr, Phdr.p_memsz, Phdr.p_offset,
535 Phdr.p_filesz, Phdr.p_align, ((Phdr.p_flags & ELF::PF_X) != 0)};
537 Phdr.p_vaddr >= BinaryContext::KernelStartX86_64)
4098 ELF64LE::Phdr NewPhdr = createNewTextPhdr();
4120 for (const ELF64LE::Phdr &Phdr : cantFail(Obj.program_headers())) {
4121 ELF64LE::Phdr NewPhdr = Phdr;
4122 switch (Phdr.p_type) {
5397 for (const Elf_Phdr &Phdr : cantFail(Obj.program_headers())) {
5398 if (Phdr.p_type == ELF::PT_DYNAMIC) {
5399 DynamicOffset = Phdr.p_offset;
5400 DynamicPhdr = &Phdr;
5401 assert(Phdr.p_memsz == Phdr.p_filesz && "dynamic sizes should match");
5483 for (const Elf_Phdr &Phdr : cantFail(Obj.program_headers())) {
5484 if (Phdr.p_type == ELF::PT_DYNAMIC) {
5485 DynamicPhdr = &Phdr;