15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===- X86GOTPLT.h --------------------------------------------------------===// 25460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 35460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// The MCLinker Project 45460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 55460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// This file is distributed under the University of Illinois Open Source 65460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// License. See LICENSE.TXT for details. 75460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 85460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===----------------------------------------------------------------------===// 937b74a387bb3993387029859c2d9d051c41c724eStephen Hines#ifndef TARGET_X86_X86GOTPLT_H_ 1037b74a387bb3993387029859c2d9d051c41c724eStephen Hines#define TARGET_X86_X86GOTPLT_H_ 11cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao 126f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines#include "X86GOT.h" 135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1437b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include <llvm/ADT/DenseMap.h> 1537b74a387bb3993387029859c2d9d051c41c724eStephen Hines 1622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaonamespace mcld { 1722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao 185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoclass LDSection; 1937b74a387bb3993387029859c2d9d051c41c724eStephen Hinesclass X86PLT; 205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 21cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liaoconst unsigned int X86GOTPLT0Num = 3; 22cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao 236f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines/** \class X86_32GOTPLT 246f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines * \brief X86_32 .got.plt section. 256f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines */ 2637b74a387bb3993387029859c2d9d051c41c724eStephen Hinesclass X86_32GOTPLT : public X86_32GOT { 2737b74a387bb3993387029859c2d9d051c41c724eStephen Hines public: 2837b74a387bb3993387029859c2d9d051c41c724eStephen Hines explicit X86_32GOTPLT(LDSection& pSection); 296f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines 306f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines ~X86_32GOTPLT(); 316f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines 326f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines // hasGOT1 - return if this section has any GOT1 entry 336f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines bool hasGOT1() const; 346f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines 356f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines void applyGOT0(uint64_t pAddress); 366f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines 376f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines void applyAllGOTPLT(const X86PLT& pPLT); 38d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao}; 39d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao 406f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines/** \class X86_64GOTPLT 416f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines * \brief X86_64 .got.plt section. 425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao */ 4337b74a387bb3993387029859c2d9d051c41c724eStephen Hinesclass X86_64GOTPLT : public X86_64GOT { 4437b74a387bb3993387029859c2d9d051c41c724eStephen Hines public: 4537b74a387bb3993387029859c2d9d051c41c724eStephen Hines explicit X86_64GOTPLT(LDSection& pSection); 465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 476f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines ~X86_64GOTPLT(); 48d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao 4922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao // hasGOT1 - return if this section has any GOT1 entry 5022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao bool hasGOT1() const; 515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 52affc150dc44fab1911775a49636d0ce85333b634Zonr Chang void applyGOT0(uint64_t pAddress); 535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao void applyAllGOTPLT(const X86PLT& pPLT); 555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}; 565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5737b74a387bb3993387029859c2d9d051c41c724eStephen Hines} // namespace mcld 58affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 5937b74a387bb3993387029859c2d9d051c41c724eStephen Hines#endif // TARGET_X86_X86GOTPLT_H_ 60