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