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()
1193 static bool sectionWithinSegment(const SectionBase &Sec, const Segment &Seg) { in sectionWithinSegment() argument
1209 bool SegmentIsTLS = Seg.Type == PT_TLS; in sectionWithinSegment()
1213 return Seg.VAddr <= Sec.Addr && in sectionWithinSegment()
1214 Seg.VAddr + Seg.MemSize >= Sec.Addr + SecSize; in sectionWithinSegment()
1217 return Seg.Offset <= Sec.OriginalOffset && in sectionWithinSegment()
1218 Seg.Offset + Seg.FileSize >= Sec.OriginalOffset + SecSize; in sectionWithinSegment()
1436 Segment &Seg = Obj.addSegment(Data); in readProgramHeaders() local
1437 Seg.Type = Phdr.p_type; in readProgramHeaders()
1438 Seg.Flags = Phdr.p_flags; in readProgramHeaders()
1439 Seg.OriginalOffset = Phdr.p_offset + EhdrOffset; in readProgramHeaders()
1440 Seg.Offset = Phdr.p_offset + EhdrOffset; in readProgramHeaders()
1441 Seg.VAddr = Phdr.p_vaddr; in readProgramHeaders()
1442 Seg.PAddr = Phdr.p_paddr; in readProgramHeaders()
1443 Seg.FileSize = Phdr.p_filesz; in readProgramHeaders()
1444 Seg.MemSize = Phdr.p_memsz; in readProgramHeaders()
1445 Seg.Align = Phdr.p_align; in readProgramHeaders()
1446 Seg.Index = Index++; in readProgramHeaders()
1448 if (sectionWithinSegment(Sec, Seg)) { in readProgramHeaders()
1449 Seg.addSection(&Sec); in readProgramHeaders()
1450 if (!Sec.ParentSegment || Sec.ParentSegment->Offset > Seg.Offset) in readProgramHeaders()
1451 Sec.ParentSegment = &Seg; in readProgramHeaders()
2041 for (auto &Seg : Obj.segments()) in writePhdrs() local
2042 writePhdr(Seg); in writePhdrs()
2087 for (Segment &Seg : Obj.segments()) { in writeSegmentData()
2088 size_t Size = std::min<size_t>(Seg.FileSize, Seg.getContents().size()); in writeSegmentData()
2089 std::memcpy(Buf->getBufferStart() + Seg.Offset, Seg.getContents().data(), in writeSegmentData()
2282 for (Segment *Seg : Segments) { in layoutSegments()
2287 if (Seg->ParentSegment != nullptr) { in layoutSegments()
2288 Segment *Parent = Seg->ParentSegment; in layoutSegments()
2289 Seg->Offset = in layoutSegments()
2290 Parent->Offset + Seg->OriginalOffset - Parent->OriginalOffset; in layoutSegments()
2292 Seg->Offset = in layoutSegments()
2293 alignTo(Offset, std::max<uint64_t>(Seg->Align, 1), Seg->VAddr); in layoutSegments()
2295 Offset = std::max(Offset, Seg->Offset + Seg->FileSize); in layoutSegments()
2396 for (Segment *Seg : Segments) { in layoutSegmentsForOnlyKeepDebug()
2397 if (Seg->Type == PT_PHDR) in layoutSegmentsForOnlyKeepDebug()
2406 const SectionBase *FirstSec = Seg->firstSection(); in layoutSegmentsForOnlyKeepDebug()
2409 : (Seg->ParentSegment ? Seg->ParentSegment->Offset : 0); in layoutSegmentsForOnlyKeepDebug()
2411 for (const SectionBase *Sec : Seg->Sections) { in layoutSegmentsForOnlyKeepDebug()
2419 if (Seg->Offset < HdrEnd && HdrEnd <= Seg->Offset + Seg->FileSize) { in layoutSegmentsForOnlyKeepDebug()
2420 FileSize += Offset - Seg->Offset; in layoutSegmentsForOnlyKeepDebug()
2421 Offset = Seg->Offset; in layoutSegmentsForOnlyKeepDebug()
2425 Seg->Offset = Offset; in layoutSegmentsForOnlyKeepDebug()
2426 Seg->FileSize = FileSize; in layoutSegmentsForOnlyKeepDebug()