//===- Writer.h -------------------------------------------------*- C++ -*-===// // // The LLVM Linker // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #ifndef LLD_ELF_WRITER_H #define LLD_ELF_WRITER_H #include #include namespace llvm { class StringRef; } namespace lld { namespace elf { template class OutputSectionBase; template class InputSectionBase; template class ObjectFile; template class SymbolTable; template void writeResult(); template void markLive(); template bool isRelroSection(OutputSectionBase *Sec); // This describes a program header entry. // Each contains type, access flags and range of output sections that will be // placed in it. template struct PhdrEntry { PhdrEntry(unsigned Type, unsigned Flags); void add(OutputSectionBase *Sec); typename ELFT::Phdr H = {}; OutputSectionBase *First = nullptr; OutputSectionBase *Last = nullptr; }; template llvm::StringRef getOutputSectionName(InputSectionBase *S); template void reportDiscarded(InputSectionBase *IS); template uint32_t getMipsEFlags(); uint8_t getMipsFpAbiFlag(uint8_t OldFlag, uint8_t NewFlag, llvm::StringRef FileName); } } #endif