1f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines//===- HexagonGOTPLT.h ----------------------------------------------------===// 2f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines// 3f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines// The MCLinker Project 4f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines// 5f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines// This file is distributed under the University of Illinois Open Source 6f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines// License. See LICENSE.TXT for details. 7f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines// 8f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines//===----------------------------------------------------------------------===// 937b74a387bb3993387029859c2d9d051c41c724eStephen Hines#ifndef TARGET_HEXAGON_HEXAGONGOTPLT_H_ 1037b74a387bb3993387029859c2d9d051c41c724eStephen Hines#define TARGET_HEXAGON_HEXAGONGOTPLT_H_ 11f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines 12f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines#include "HexagonGOT.h" 1337b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include <llvm/ADT/DenseMap.h> 14f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines 15f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hinesnamespace mcld { 16f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines 17f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hinesclass HexagonPLT; 18f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hinesclass LDSection; 19f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines 20f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines// Hexagon creates 4 entries for the GOTPLT0 entry 21f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hinesconst unsigned int HexagonGOTPLT0Num = 4; 22f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines 23f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines/** \class HexagonGOTPLT 24f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines * \brief Hexagon .got.plt section. 25f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines */ 2637b74a387bb3993387029859c2d9d051c41c724eStephen Hinesclass HexagonGOTPLT : public HexagonGOT { 2737b74a387bb3993387029859c2d9d051c41c724eStephen Hines public: 2837b74a387bb3993387029859c2d9d051c41c724eStephen Hines explicit HexagonGOTPLT(LDSection& pSection); 29f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines 30f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines ~HexagonGOTPLT(); 31f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines 32f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines // hasGOT1 - return if this section has any GOT1 entry 33f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines bool hasGOT1() const; 34f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines 35f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines void applyGOT0(uint64_t pAddress); 36f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines 37f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines void applyAllGOTPLT(const HexagonPLT& pPLT); 38f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines}; 39f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines 4037b74a387bb3993387029859c2d9d051c41c724eStephen Hines} // namespace mcld 41f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines 4237b74a387bb3993387029859c2d9d051c41c724eStephen Hines#endif // TARGET_HEXAGON_HEXAGONGOTPLT_H_ 43