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()
1157 static bool sectionWithinSegment(const SectionBase &Sec, const Segment &Seg) { in sectionWithinSegment() argument
1173 bool SegmentIsTLS = Seg.Type == PT_TLS; in sectionWithinSegment()
1177 return Seg.VAddr <= Sec.Addr && in sectionWithinSegment()
1178 Seg.VAddr + Seg.MemSize >= Sec.Addr + SecSize; in sectionWithinSegment()
1181 return Seg.Offset <= Sec.OriginalOffset && in sectionWithinSegment()
1182 Seg.Offset + Seg.FileSize >= Sec.OriginalOffset + SecSize; in sectionWithinSegment()
1400 Segment &Seg = Obj.addSegment(Data); in readProgramHeaders() local
1401 Seg.Type = Phdr.p_type; in readProgramHeaders()
1402 Seg.Flags = Phdr.p_flags; in readProgramHeaders()
1403 Seg.OriginalOffset = Phdr.p_offset + EhdrOffset; in readProgramHeaders()
1404 Seg.Offset = Phdr.p_offset + EhdrOffset; in readProgramHeaders()
1405 Seg.VAddr = Phdr.p_vaddr; in readProgramHeaders()
1406 Seg.PAddr = Phdr.p_paddr; in readProgramHeaders()
1407 Seg.FileSize = Phdr.p_filesz; in readProgramHeaders()
1408 Seg.MemSize = Phdr.p_memsz; in readProgramHeaders()
1409 Seg.Align = Phdr.p_align; in readProgramHeaders()
1410 Seg.Index = Index++; in readProgramHeaders()
1412 if (sectionWithinSegment(Sec, Seg)) { in readProgramHeaders()
1413 Seg.addSection(&Sec); in readProgramHeaders()
1414 if (!Sec.ParentSegment || Sec.ParentSegment->Offset > Seg.Offset) in readProgramHeaders()
1415 Sec.ParentSegment = &Seg; in readProgramHeaders()
1999 for (auto &Seg : Obj.segments()) in writePhdrs() local
2000 writePhdr(Seg); in writePhdrs()
2045 for (Segment &Seg : Obj.segments()) { in writeSegmentData()
2046 size_t Size = std::min<size_t>(Seg.FileSize, Seg.getContents().size()); in writeSegmentData()
2047 std::memcpy(Buf->getBufferStart() + Seg.Offset, Seg.getContents().data(), in writeSegmentData()
2240 for (Segment *Seg : Segments) { in layoutSegments()
2245 if (Seg->ParentSegment != nullptr) { in layoutSegments()
2246 Segment *Parent = Seg->ParentSegment; in layoutSegments()
2247 Seg->Offset = in layoutSegments()
2248 Parent->Offset + Seg->OriginalOffset - Parent->OriginalOffset; in layoutSegments()
2250 Seg->Offset = in layoutSegments()
2251 alignTo(Offset, std::max<uint64_t>(Seg->Align, 1), Seg->VAddr); in layoutSegments()
2253 Offset = std::max(Offset, Seg->Offset + Seg->FileSize); in layoutSegments()
2354 for (Segment *Seg : Segments) { in layoutSegmentsForOnlyKeepDebug()
2355 if (Seg->Type == PT_PHDR) in layoutSegmentsForOnlyKeepDebug()
2364 const SectionBase *FirstSec = Seg->firstSection(); in layoutSegmentsForOnlyKeepDebug()
2367 : (Seg->ParentSegment ? Seg->ParentSegment->Offset : 0); in layoutSegmentsForOnlyKeepDebug()
2369 for (const SectionBase *Sec : Seg->Sections) { in layoutSegmentsForOnlyKeepDebug()
2377 if (Seg->Offset < HdrEnd && HdrEnd <= Seg->Offset + Seg->FileSize) { in layoutSegmentsForOnlyKeepDebug()
2378 FileSize += Offset - Seg->Offset; in layoutSegmentsForOnlyKeepDebug()
2379 Offset = Seg->Offset; in layoutSegmentsForOnlyKeepDebug()
2383 Seg->Offset = Offset; in layoutSegmentsForOnlyKeepDebug()
2384 Seg->FileSize = FileSize; in layoutSegmentsForOnlyKeepDebug()