HexagonELFDynamic.cpp revision 6f75755c9204b1d8817ae5a65a2f7e5af0ec3f70
16f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines//===- HexagonELFDynamic.cpp ----------------------------------------------===// 26f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines// 36f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines// The MCLinker Project 46f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines// 56f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines// This file is distributed under the University of Illinois Open Source 66f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines// License. See LICENSE.TXT for details. 76f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines// 86f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines//===----------------------------------------------------------------------===// 96f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines#include "HexagonELFDynamic.h" 106f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines 116f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines#include <mcld/LD/ELFFileFormat.h> 126f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines 136f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hinesusing namespace mcld; 146f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines 156f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen HinesHexagonELFDynamic::HexagonELFDynamic(const GNULDBackend& pParent, 166f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines const LinkerConfig& pConfig) 176f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines : ELFDynamic(pParent, pConfig) { 186f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines} 196f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines 206f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen HinesHexagonELFDynamic::~HexagonELFDynamic() 216f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines{ 226f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines} 236f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines 246f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hinesvoid HexagonELFDynamic::reserveTargetEntries(const ELFFileFormat& pFormat) 256f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines{ 266f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines // reservePLTGOT 276f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines if (pFormat.hasGOTPLT()) 286f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines reserveOne(llvm::ELF::DT_PLTGOT); 296f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines} 306f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines 316f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hinesvoid HexagonELFDynamic::applyTargetEntries(const ELFFileFormat& pFormat) 326f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines{ 336f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines // applyPLTGOT 346f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines if (pFormat.hasGOTPLT()) 356f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines applyOne(llvm::ELF::DT_PLTGOT, pFormat.getGOTPLT().addr()); 366f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines} 376f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines 38