Lines Matching refs:Seg

39 template <class ELFT> void ELFWriter<ELFT>::writePhdr(const Segment &Seg) {  in writePhdr()  argument
41 Obj.ProgramHdrSegment.Offset + Seg.Index * sizeof(Elf_Phdr); in writePhdr()
43 Phdr.p_type = Seg.Type; in writePhdr()
44 Phdr.p_flags = Seg.Flags; in writePhdr()
45 Phdr.p_offset = Seg.Offset; in writePhdr()
46 Phdr.p_vaddr = Seg.VAddr; in writePhdr()
47 Phdr.p_paddr = Seg.PAddr; in writePhdr()
48 Phdr.p_filesz = Seg.FileSize; in writePhdr()
49 Phdr.p_memsz = Seg.MemSize; in writePhdr()
50 Phdr.p_align = Seg.Align; in writePhdr()
347 Segment *Seg = Sec->ParentSegment; in sectionPhysicalAddr() local
348 if (Seg && Seg->Type != ELF::PT_LOAD) in sectionPhysicalAddr()
349 Seg = nullptr; in sectionPhysicalAddr()
350 return Seg ? Seg->PAddr + Sec->OriginalOffset - Seg->OriginalOffset in sectionPhysicalAddr()
1219 static bool sectionWithinSegment(const SectionBase &Sec, const Segment &Seg) { in sectionWithinSegment() argument
1235 bool SegmentIsTLS = Seg.Type == PT_TLS; in sectionWithinSegment()
1239 return Seg.VAddr <= Sec.Addr && in sectionWithinSegment()
1240 Seg.VAddr + Seg.MemSize >= Sec.Addr + SecSize; in sectionWithinSegment()
1243 return Seg.Offset <= Sec.OriginalOffset && in sectionWithinSegment()
1244 Seg.Offset + Seg.FileSize >= Sec.OriginalOffset + SecSize; in sectionWithinSegment()
1468 Segment &Seg = Obj.addSegment(Data); in readProgramHeaders() local
1469 Seg.Type = Phdr.p_type; in readProgramHeaders()
1470 Seg.Flags = Phdr.p_flags; in readProgramHeaders()
1471 Seg.OriginalOffset = Phdr.p_offset + EhdrOffset; in readProgramHeaders()
1472 Seg.Offset = Phdr.p_offset + EhdrOffset; in readProgramHeaders()
1473 Seg.VAddr = Phdr.p_vaddr; in readProgramHeaders()
1474 Seg.PAddr = Phdr.p_paddr; in readProgramHeaders()
1475 Seg.FileSize = Phdr.p_filesz; in readProgramHeaders()
1476 Seg.MemSize = Phdr.p_memsz; in readProgramHeaders()
1477 Seg.Align = Phdr.p_align; in readProgramHeaders()
1478 Seg.Index = Index++; in readProgramHeaders()
1480 if (sectionWithinSegment(Sec, Seg)) { in readProgramHeaders()
1481 Seg.addSection(&Sec); in readProgramHeaders()
1482 if (!Sec.ParentSegment || Sec.ParentSegment->Offset > Seg.Offset) in readProgramHeaders()
1483 Sec.ParentSegment = &Seg; in readProgramHeaders()
2080 for (auto &Seg : Obj.segments()) in writePhdrs() local
2081 writePhdr(Seg); in writePhdrs()
2126 for (Segment &Seg : Obj.segments()) { in writeSegmentData()
2127 size_t Size = std::min<size_t>(Seg.FileSize, Seg.getContents().size()); in writeSegmentData()
2128 std::memcpy(Buf->getBufferStart() + Seg.Offset, Seg.getContents().data(), in writeSegmentData()
2330 for (Segment *Seg : Segments) { in layoutSegments()
2335 if (Seg->ParentSegment != nullptr) { in layoutSegments()
2336 Segment *Parent = Seg->ParentSegment; in layoutSegments()
2337 Seg->Offset = in layoutSegments()
2338 Parent->Offset + Seg->OriginalOffset - Parent->OriginalOffset; in layoutSegments()
2340 Seg->Offset = in layoutSegments()
2341 alignTo(Offset, std::max<uint64_t>(Seg->Align, 1), Seg->VAddr); in layoutSegments()
2343 Offset = std::max(Offset, Seg->Offset + Seg->FileSize); in layoutSegments()
2444 for (Segment *Seg : Segments) { in layoutSegmentsForOnlyKeepDebug()
2445 if (Seg->Type == PT_PHDR) in layoutSegmentsForOnlyKeepDebug()
2454 const SectionBase *FirstSec = Seg->firstSection(); in layoutSegmentsForOnlyKeepDebug()
2457 : (Seg->ParentSegment ? Seg->ParentSegment->Offset : 0); in layoutSegmentsForOnlyKeepDebug()
2459 for (const SectionBase *Sec : Seg->Sections) { in layoutSegmentsForOnlyKeepDebug()
2467 if (Seg->Offset < HdrEnd && HdrEnd <= Seg->Offset + Seg->FileSize) { in layoutSegmentsForOnlyKeepDebug()
2468 FileSize += Offset - Seg->Offset; in layoutSegmentsForOnlyKeepDebug()
2469 Offset = Seg->Offset; in layoutSegmentsForOnlyKeepDebug()
2473 Seg->Offset = Offset; in layoutSegmentsForOnlyKeepDebug()
2474 Seg->FileSize = FileSize; in layoutSegmentsForOnlyKeepDebug()