//===- lib/ReaderWriter/PECOFF/LinkerGeneratedSymbolFile.cpp --------------===// // // The LLVM Linker // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "Atoms.h" #include "lld/ReaderWriter/PECOFFLinkingContext.h" #include "lld/ReaderWriter/Simple.h" namespace lld { namespace pecoff { // A virtual file containing absolute symbol __ImageBase. __ImageBase (or // ___ImageBase on x86) is a linker-generated symbol whose address is the same // as the image base address. class LinkerGeneratedSymbolFile : public SimpleFile { public: LinkerGeneratedSymbolFile(const PECOFFLinkingContext &ctx) : SimpleFile(""), _imageBaseAtom(*this, ctx.decorateSymbol("__ImageBase"), Atom::scopeGlobal, ctx.getBaseAddress()) { addAtom(_imageBaseAtom); }; private: COFFAbsoluteAtom _imageBaseAtom; }; } // end namespace pecoff } // end namespace lld