X86ELFDynamic.cpp revision d8a752331fe7a30ce41835f139aa8a4c675ad07a
1//===- X86ELFDynamic.cpp --------------------------------------------------===//
2//
3//                     The MCLinker Project
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#include <mcld/LD/ELFFileFormat.h>
11#include "X86ELFDynamic.h"
12
13using namespace mcld;
14
15X86ELFDynamic::X86ELFDynamic(const GNULDBackend& pParent)
16  : ELFDynamic(pParent), m_HasGOTPLT(false) {
17}
18
19X86ELFDynamic::~X86ELFDynamic() {
20}
21
22void X86ELFDynamic::reserveTargetEntries(const ELFFileFormat& pFormat) {
23  // reservePLTGOT
24  if (m_HasGOTPLT ? pFormat.hasGOTPLT() : pFormat.hasGOT())
25    reserveOne(llvm::ELF::DT_PLTGOT);
26}
27
28void X86ELFDynamic::applyTargetEntries(const ELFFileFormat& pFormat) {
29  // applyPLTGOT
30  if (m_HasGOTPLT) {
31      if (pFormat.hasGOTPLT())
32	applyOne(llvm::ELF::DT_PLTGOT, pFormat.getGOTPLT().addr());
33  }
34  else if (pFormat.hasGOT())
35    applyOne(llvm::ELF::DT_PLTGOT, pFormat.getGOT().addr());
36}
37