Lines Matching refs:Seg

37 template <class ELFT> void ELFWriter<ELFT>::writePhdr(const Segment &Seg) {  in writePhdr()  argument
39 Obj.ProgramHdrSegment.Offset + Seg.Index * sizeof(Elf_Phdr); in writePhdr()
41 Phdr.p_type = Seg.Type; in writePhdr()
42 Phdr.p_flags = Seg.Flags; in writePhdr()
43 Phdr.p_offset = Seg.Offset; in writePhdr()
44 Phdr.p_vaddr = Seg.VAddr; in writePhdr()
45 Phdr.p_paddr = Seg.PAddr; in writePhdr()
46 Phdr.p_filesz = Seg.FileSize; in writePhdr()
47 Phdr.p_memsz = Seg.MemSize; in writePhdr()
48 Phdr.p_align = Seg.Align; in writePhdr()
328 Segment *Seg = Sec->ParentSegment; in sectionPhysicalAddr() local
329 if (Seg && Seg->Type != ELF::PT_LOAD) in sectionPhysicalAddr()
330 Seg = nullptr; in sectionPhysicalAddr()
331 return Seg ? Seg->PAddr + Sec->OriginalOffset - Seg->OriginalOffset in sectionPhysicalAddr()
1205 static bool sectionWithinSegment(const SectionBase &Sec, const Segment &Seg) { in sectionWithinSegment() argument
1221 bool SegmentIsTLS = Seg.Type == PT_TLS; in sectionWithinSegment()
1225 return Seg.VAddr <= Sec.Addr && in sectionWithinSegment()
1226 Seg.VAddr + Seg.MemSize >= Sec.Addr + SecSize; in sectionWithinSegment()
1229 return Seg.Offset <= Sec.OriginalOffset && in sectionWithinSegment()
1230 Seg.Offset + Seg.FileSize >= Sec.OriginalOffset + SecSize; in sectionWithinSegment()
1437 Segment &Seg = Obj.addSegment(Data); in readProgramHeaders() local
1438 Seg.Type = Phdr.p_type; in readProgramHeaders()
1439 Seg.Flags = Phdr.p_flags; in readProgramHeaders()
1440 Seg.OriginalOffset = Phdr.p_offset + EhdrOffset; in readProgramHeaders()
1441 Seg.Offset = Phdr.p_offset + EhdrOffset; in readProgramHeaders()
1442 Seg.VAddr = Phdr.p_vaddr; in readProgramHeaders()
1443 Seg.PAddr = Phdr.p_paddr; in readProgramHeaders()
1444 Seg.FileSize = Phdr.p_filesz; in readProgramHeaders()
1445 Seg.MemSize = Phdr.p_memsz; in readProgramHeaders()
1446 Seg.Align = Phdr.p_align; in readProgramHeaders()
1447 Seg.Index = Index++; in readProgramHeaders()
1449 if (sectionWithinSegment(Sec, Seg)) { in readProgramHeaders()
1450 Seg.addSection(&Sec); in readProgramHeaders()
1451 if (!Sec.ParentSegment || Sec.ParentSegment->Offset > Seg.Offset) in readProgramHeaders()
1452 Sec.ParentSegment = &Seg; in readProgramHeaders()
2044 for (auto &Seg : Obj.segments()) in writePhdrs() local
2045 writePhdr(Seg); in writePhdrs()
2090 for (Segment &Seg : Obj.segments()) { in writeSegmentData()
2091 size_t Size = std::min<size_t>(Seg.FileSize, Seg.getContents().size()); in writeSegmentData()
2092 std::memcpy(Buf->getBufferStart() + Seg.Offset, Seg.getContents().data(), in writeSegmentData()
2233 for (Segment *Seg : Segments) { in layoutSegments()
2238 if (Seg->ParentSegment != nullptr) { in layoutSegments()
2239 Segment *Parent = Seg->ParentSegment; in layoutSegments()
2240 Seg->Offset = in layoutSegments()
2241 Parent->Offset + Seg->OriginalOffset - Parent->OriginalOffset; in layoutSegments()
2243 Seg->Offset = in layoutSegments()
2244 alignTo(Offset, std::max<uint64_t>(Seg->Align, 1), Seg->VAddr); in layoutSegments()
2246 Offset = std::max(Offset, Seg->Offset + Seg->FileSize); in layoutSegments()
2326 for (Segment *Seg : Segments) { in layoutSegmentsForOnlyKeepDebug()
2327 if (Seg->Type == PT_PHDR) in layoutSegmentsForOnlyKeepDebug()
2336 const SectionBase *FirstSec = Seg->firstSection(); in layoutSegmentsForOnlyKeepDebug()
2339 : (Seg->ParentSegment ? Seg->ParentSegment->Offset : 0); in layoutSegmentsForOnlyKeepDebug()
2341 for (const SectionBase *Sec : Seg->Sections) { in layoutSegmentsForOnlyKeepDebug()
2349 if (Seg->Offset < HdrEnd && HdrEnd <= Seg->Offset + Seg->FileSize) { in layoutSegmentsForOnlyKeepDebug()
2350 FileSize += Offset - Seg->Offset; in layoutSegmentsForOnlyKeepDebug()
2351 Offset = Seg->Offset; in layoutSegmentsForOnlyKeepDebug()
2355 Seg->Offset = Offset; in layoutSegmentsForOnlyKeepDebug()
2356 Seg->FileSize = FileSize; in layoutSegmentsForOnlyKeepDebug()