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