1 //===- X86GOTPLT.h --------------------------------------------------------===// 2 // 3 // The MCLinker Project 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 #ifndef TARGET_X86_X86GOTPLT_H 10 #define TARGET_X86_X86GOTPLT_H 11 12 #include <llvm/ADT/DenseMap.h> 13 14 #include "X86GOT.h" 15 16 namespace mcld { 17 18 class X86PLT; 19 class LDSection; 20 21 const unsigned int X86GOTPLT0Num = 3; 22 23 /** \class X86_32GOTPLT 24 * \brief X86_32 .got.plt section. 25 */ 26 class X86_32GOTPLT : public X86_32GOT 27 { 28 public: 29 X86_32GOTPLT(LDSection &pSection); 30 31 ~X86_32GOTPLT(); 32 33 // hasGOT1 - return if this section has any GOT1 entry 34 bool hasGOT1() const; 35 36 void applyGOT0(uint64_t pAddress); 37 38 void applyAllGOTPLT(const X86PLT& pPLT); 39 }; 40 41 /** \class X86_64GOTPLT 42 * \brief X86_64 .got.plt section. 43 */ 44 class X86_64GOTPLT : public X86_64GOT 45 { 46 public: 47 X86_64GOTPLT(LDSection &pSection); 48 49 ~X86_64GOTPLT(); 50 51 // hasGOT1 - return if this section has any GOT1 entry 52 bool hasGOT1() const; 53 54 void applyGOT0(uint64_t pAddress); 55 56 void applyAllGOTPLT(const X86PLT& pPLT); 57 }; 58 59 } // namespace of mcld 60 61 #endif 62 63