HexagonGOTPLT.h revision 87f34658dec9097d987d254a990ea7f311bfc95f
1//===- HexagonGOTPLT.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 MCLD_HEXAGON_GOTPLT_H
10#define MCLD_HEXAGON_GOTPLT_H
11#ifdef ENABLE_UNITTEST
12#include <gtest.h>
13#endif
14
15#include <llvm/ADT/DenseMap.h>
16#include "HexagonGOT.h"
17
18namespace mcld {
19
20class HexagonPLT;
21class LDSection;
22
23// Hexagon creates 4 entries for the GOTPLT0 entry
24const unsigned int HexagonGOTPLT0Num = 4;
25
26/** \class HexagonGOTPLT
27 *  \brief Hexagon .got.plt section.
28 */
29class HexagonGOTPLT : public HexagonGOT
30{
31public:
32  HexagonGOTPLT(LDSection &pSection);
33
34  ~HexagonGOTPLT();
35
36  // hasGOT1 - return if this section has any GOT1 entry
37  bool hasGOT1() const;
38
39  void applyGOT0(uint64_t pAddress);
40
41  void applyAllGOTPLT(const HexagonPLT& pPLT);
42};
43
44} // namespace of mcld
45
46#endif
47