1 //===- MipsPLT.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_MIPS_MIPSPLT_H_
10 #define TARGET_MIPS_MIPSPLT_H_
11 
12 #include "mcld/Support/MemoryRegion.h"
13 #include "mcld/Target/PLT.h"
14 
15 namespace mcld {
16 
17 class MipsGOTPLT;
18 
19 //===----------------------------------------------------------------------===//
20 // MipsPLT
21 //===----------------------------------------------------------------------===//
22 /** \class MipsPLT
23  *  \brief Mips Procedure Linkage Table
24  */
25 class MipsPLT : public PLT {
26  public:
27   explicit MipsPLT(LDSection& pSection);
28 
29   void finalizeSectionSize();
30 
31   // hasPLT1 - return if this PLT has any PLTA/PLTB entries
32   bool hasPLT1() const;
33 
34   uint64_t emit(MemoryRegion& pRegion);
35 
36   PLTEntryBase* create();
37 
38   void applyAllPLT(MipsGOTPLT& pGOTPLT);
39 };
40 
41 }  // namespace mcld
42 
43 #endif  // TARGET_MIPS_MIPSPLT_H_
44