//===- Chunks.cpp ---------------------------------------------------------===// // // The LLVM Linker // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "Chunks.h" #include "Error.h" using namespace llvm; using namespace llvm::ELF; using namespace lld; using namespace lld::elf2; template SectionChunk::SectionChunk(object::ELFFile *Obj, const Elf_Shdr *Header) : Obj(Obj), Header(Header) { // Initialize SectionName. ErrorOr Name = Obj->getSectionName(Header); error(Name); SectionName = *Name; Align = Header->sh_addralign; } template void SectionChunk::writeTo(uint8_t *Buf) { if (Header->sh_type == SHT_NOBITS) return; // Copy section contents from source object file to output file. ArrayRef Data = *Obj->getSectionContents(Header); memcpy(Buf + FileOff, Data.data(), Data.size()); // FIXME: Relocations } namespace lld { namespace elf2 { template class SectionChunk; template class SectionChunk; template class SectionChunk; template class SectionChunk; } }