//===- X86GOT.h -----------------------------------------------------------===// // // The MCLinker Project // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #ifndef TARGET_X86_X86GOT_H_ #define TARGET_X86_X86GOT_H_ #include "mcld/Target/GOT.h" namespace mcld { class LDSection; class SectionData; /** \class X86_32GOTEntry * \brief GOT Entry with size of 4 bytes */ class X86_32GOTEntry : public GOT::Entry<4> { public: X86_32GOTEntry(uint64_t pContent, SectionData* pParent) : GOT::Entry<4>(pContent, pParent) {} }; /** \class X86_32GOT * \brief X86_32 Global Offset Table. */ class X86_32GOT : public GOT { public: explicit X86_32GOT(LDSection& pSection); ~X86_32GOT(); X86_32GOTEntry* create(); }; /** \class X86_64GOTEntry * \brief GOT Entry with size of 8 bytes */ class X86_64GOTEntry : public GOT::Entry<8> { public: X86_64GOTEntry(uint64_t pContent, SectionData* pParent) : GOT::Entry<8>(pContent, pParent) {} }; /** \class X86_64GOT * \brief X86_64 Global Offset Table. */ class X86_64GOT : public GOT { public: explicit X86_64GOT(LDSection& pSection); ~X86_64GOT(); X86_64GOTEntry* create(); }; } // namespace mcld #endif // TARGET_X86_X86GOT_H_