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//===----------------------------------------------------------------------===// 9551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines#ifndef TARGET_X86_X86GOTPLT_H 10551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines#define TARGET_X86_X86GOTPLT_H 115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 12cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#include <llvm/ADT/DenseMap.h> 13cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao 146f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines#include "X86GOT.h" 155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaonamespace mcld { 1722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao 1822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaoclass X86PLT; 195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoclass LDSection; 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 */ 266f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hinesclass X86_32GOTPLT : public X86_32GOT 27d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao{ 28d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liaopublic: 296f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines X86_32GOTPLT(LDSection &pSection); 306f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines 316f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines ~X86_32GOTPLT(); 326f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines 336f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines // hasGOT1 - return if this section has any GOT1 entry 346f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines bool hasGOT1() const; 356f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines 366f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines void applyGOT0(uint64_t pAddress); 376f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines 386f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines void applyAllGOTPLT(const X86PLT& pPLT); 39d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao}; 40d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao 416f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines/** \class X86_64GOTPLT 426f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines * \brief X86_64 .got.plt section. 435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao */ 446f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hinesclass X86_64GOTPLT : public X86_64GOT 455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaopublic: 476f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines X86_64GOTPLT(LDSection &pSection); 485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 496f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines ~X86_64GOTPLT(); 50d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao 5122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao // hasGOT1 - return if this section has any GOT1 entry 5222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao bool hasGOT1() const; 535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 54affc150dc44fab1911775a49636d0ce85333b634Zonr Chang void applyGOT0(uint64_t pAddress); 555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 5622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao void applyAllGOTPLT(const X86PLT& pPLT); 575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}; 585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} // namespace of mcld 605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#endif 62affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 63