Differential Revision: https://reviews.llvm.org/D59126
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355892
91177308-0d34-0410-b5e6-
96231b3b80d8
template <class ELFT> void ELFBuilder<ELFT>::readProgramHeaders() {
uint32_t Index = 0;
for (const auto &Phdr : unwrapOrError(ElfFile.program_headers())) {
- ArrayRef<uint8_t> Data{ElfFile.base() + Phdr.p_offset,
- (size_t)Phdr.p_filesz};
- Segment &Seg = Obj.addSegment(Data);
+ Segment &Seg = Obj.addSegment();
Seg.Type = Phdr.p_type;
Seg.Flags = Phdr.p_flags;
Seg.OriginalOffset = Phdr.p_offset;
uint32_t Index;
uint64_t OriginalOffset;
Segment *ParentSegment = nullptr;
- ArrayRef<uint8_t> Contents;
-
- explicit Segment(ArrayRef<uint8_t> Data) : Contents(Data) {}
- Segment() {}
const SectionBase *firstSection() const {
if (!Sections.empty())
Ptr->Index = Sections.size();
return *Ptr;
}
- Segment &addSegment(ArrayRef<uint8_t> Data) {
- Segments.emplace_back(llvm::make_unique<Segment>(Data));
+ Segment &addSegment() {
+ Segments.emplace_back(llvm::make_unique<Segment>());
return *Segments.back();
}
};