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 1137b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/LD/ELFFileFormat.h" 126f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines 1337b74a387bb3993387029859c2d9d051c41c724eStephen Hinesnamespace mcld { 146f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines 156f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen HinesHexagonELFDynamic::HexagonELFDynamic(const GNULDBackend& pParent, 166f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines const LinkerConfig& pConfig) 1737b74a387bb3993387029859c2d9d051c41c724eStephen Hines : ELFDynamic(pParent, pConfig) { 186f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines} 196f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines 2037b74a387bb3993387029859c2d9d051c41c724eStephen HinesHexagonELFDynamic::~HexagonELFDynamic() { 216f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines} 226f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines 2337b74a387bb3993387029859c2d9d051c41c724eStephen Hinesvoid HexagonELFDynamic::reserveTargetEntries(const ELFFileFormat& pFormat) { 246f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines // reservePLTGOT 256f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines if (pFormat.hasGOTPLT()) 266f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines reserveOne(llvm::ELF::DT_PLTGOT); 276f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines} 286f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines 2937b74a387bb3993387029859c2d9d051c41c724eStephen Hinesvoid HexagonELFDynamic::applyTargetEntries(const ELFFileFormat& pFormat) { 306f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines // applyPLTGOT 316f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines if (pFormat.hasGOTPLT()) 32551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines applyOne(llvm::ELF::DT_PLTGOT, pFormat.getGOTPLT().addr()); 336f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines} 346f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines 3537b74a387bb3993387029859c2d9d051c41c724eStephen Hines} // namespace mcld 36