//===- ARMELFDynamic.cpp --------------------------------------------------===//
//
//                     The MCLinker Project
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#include <mcld/LD/ELFFileFormat.h>
#include "ARMELFDynamic.h"

using namespace mcld;

ARMELFDynamic::ARMELFDynamic(const GNULDBackend& pParent)
  : ELFDynamic(pParent)
{
}

ARMELFDynamic::~ARMELFDynamic()
{
}

void ARMELFDynamic::reserveTargetEntries(const ELFFileFormat& pFormat)
{
  // reservePLTGOT
  if (pFormat.hasGOT())
    reserveOne(llvm::ELF::DT_PLTGOT);
}

void ARMELFDynamic::applyTargetEntries(const ELFFileFormat& pFormat)
{
  // applyPLTGOT
  if (pFormat.hasGOT())
    applyOne(llvm::ELF::DT_PLTGOT, pFormat.getGOT().addr());
}

