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