[lld] r250330 - ELF2: Move Target concrete classes from .h to .cpp.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 14 14:30:32 PDT 2015


Author: ruiu
Date: Wed Oct 14 16:30:32 2015
New Revision: 250330

URL: http://llvm.org/viewvc/llvm-project?rev=250330&view=rev
Log:
ELF2: Move Target concrete classes from .h to .cpp.

Modified:
    lld/trunk/ELF/Target.cpp
    lld/trunk/ELF/Target.h

Modified: lld/trunk/ELF/Target.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Target.cpp?rev=250330&r1=250329&r2=250330&view=diff
==============================================================================
--- lld/trunk/ELF/Target.cpp (original)
+++ lld/trunk/ELF/Target.cpp Wed Oct 14 16:30:32 2015
@@ -32,6 +32,92 @@ namespace elf2 {
 
 std::unique_ptr<TargetInfo> Target;
 
+static void add32le(uint8_t *L, int32_t V) { write32le(L, read32le(L) + V); }
+static void add32be(uint8_t *L, int32_t V) { write32be(L, read32be(L) + V); }
+static void or32le(uint8_t *L, int32_t V) { write32le(L, read32le(L) | V); }
+
+template <bool IsLE> static void add32(uint8_t *L, int32_t V);
+template <> void add32<true>(uint8_t *L, int32_t V) { add32le(L, V); }
+template <> void add32<false>(uint8_t *L, int32_t V) { add32be(L, V); }
+
+namespace {
+class X86TargetInfo final : public TargetInfo {
+public:
+  X86TargetInfo();
+  void writePltEntry(uint8_t *Buf, uint64_t GotEntryAddr,
+                     uint64_t PltEntryAddr) const override;
+  bool relocNeedsGot(uint32_t Type, const SymbolBody &S) const override;
+  bool relocPointsToGot(uint32_t Type) const override;
+  bool relocNeedsPlt(uint32_t Type, const SymbolBody &S) const override;
+  void relocateOne(uint8_t *Buf, uint8_t *BufEnd, const void *RelP,
+                   uint32_t Type, uint64_t BaseAddr,
+                   uint64_t SymVA) const override;
+};
+
+class X86_64TargetInfo final : public TargetInfo {
+public:
+  X86_64TargetInfo();
+  unsigned getPLTRefReloc(unsigned Type) const override;
+  void writePltEntry(uint8_t *Buf, uint64_t GotEntryAddr,
+                     uint64_t PltEntryAddr) const override;
+  bool relocNeedsGot(uint32_t Type, const SymbolBody &S) const override;
+  bool relocNeedsPlt(uint32_t Type, const SymbolBody &S) const override;
+  void relocateOne(uint8_t *Buf, uint8_t *BufEnd, const void *RelP,
+                   uint32_t Type, uint64_t BaseAddr,
+                   uint64_t SymVA) const override;
+  bool isRelRelative(uint32_t Type) const override;
+};
+
+class PPC64TargetInfo final : public TargetInfo {
+public:
+  PPC64TargetInfo();
+  void writePltEntry(uint8_t *Buf, uint64_t GotEntryAddr,
+                     uint64_t PltEntryAddr) const override;
+  bool relocNeedsGot(uint32_t Type, const SymbolBody &S) const override;
+  bool relocNeedsPlt(uint32_t Type, const SymbolBody &S) const override;
+  void relocateOne(uint8_t *Buf, uint8_t *BufEnd, const void *RelP,
+                   uint32_t Type, uint64_t BaseAddr,
+                   uint64_t SymVA) const override;
+  bool isRelRelative(uint32_t Type) const override;
+};
+
+class PPCTargetInfo final : public TargetInfo {
+public:
+  PPCTargetInfo();
+  void writePltEntry(uint8_t *Buf, uint64_t GotEntryAddr,
+                     uint64_t PltEntryAddr) const override;
+  bool relocNeedsGot(uint32_t Type, const SymbolBody &S) const override;
+  bool relocNeedsPlt(uint32_t Type, const SymbolBody &S) const override;
+  void relocateOne(uint8_t *Buf, uint8_t *BufEnd, const void *RelP,
+                   uint32_t Type, uint64_t BaseAddr,
+                   uint64_t SymVA) const override;
+};
+
+class AArch64TargetInfo final : public TargetInfo {
+public:
+  AArch64TargetInfo();
+  void writePltEntry(uint8_t *Buf, uint64_t GotEntryAddr,
+                     uint64_t PltEntryAddr) const override;
+  bool relocNeedsGot(uint32_t Type, const SymbolBody &S) const override;
+  bool relocNeedsPlt(uint32_t Type, const SymbolBody &S) const override;
+  void relocateOne(uint8_t *Buf, uint8_t *BufEnd, const void *RelP,
+                   uint32_t Type, uint64_t BaseAddr,
+                   uint64_t SymVA) const override;
+};
+
+template <class ELFT> class MipsTargetInfo final : public TargetInfo {
+public:
+  MipsTargetInfo();
+  void writePltEntry(uint8_t *Buf, uint64_t GotEntryAddr,
+                     uint64_t PltEntryAddr) const override;
+  bool relocNeedsGot(uint32_t Type, const SymbolBody &S) const override;
+  bool relocNeedsPlt(uint32_t Type, const SymbolBody &S) const override;
+  void relocateOne(uint8_t *Buf, uint8_t *BufEnd, const void *RelP,
+                   uint32_t Type, uint64_t BaseAddr,
+                   uint64_t SymVA) const override;
+};
+} // anonymous namespace
+
 TargetInfo *createTarget() {
   switch (Config->EMachine) {
   case EM_386:
@@ -92,14 +178,6 @@ bool X86TargetInfo::relocNeedsPlt(uint32
   return Type == R_386_PLT32 || (Type == R_386_PC32 && S.isShared());
 }
 
-static void add32le(uint8_t *L, int32_t V) { write32le(L, read32le(L) + V); }
-static void add32be(uint8_t *L, int32_t V) { write32be(L, read32be(L) + V); }
-static void or32le(uint8_t *L, int32_t V) { write32le(L, read32le(L) | V); }
-
-template <bool IsLE> static void add32(uint8_t *L, int32_t V);
-template <> void add32<true>(uint8_t *L, int32_t V) { add32le(L, V); }
-template <> void add32<false>(uint8_t *L, int32_t V) { add32be(L, V); }
-
 void X86TargetInfo::relocateOne(uint8_t *Buf, uint8_t *BufEnd, const void *RelP,
                                 uint32_t Type, uint64_t BaseAddr,
                                 uint64_t SymVA) const {

Modified: lld/trunk/ELF/Target.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Target.h?rev=250330&r1=250329&r2=250330&view=diff
==============================================================================
--- lld/trunk/ELF/Target.h (original)
+++ lld/trunk/ELF/Target.h Wed Oct 14 16:30:32 2015
@@ -48,82 +48,6 @@ protected:
   unsigned PltEntrySize = 8;
 };
 
-class X86TargetInfo final : public TargetInfo {
-public:
-  X86TargetInfo();
-  void writePltEntry(uint8_t *Buf, uint64_t GotEntryAddr,
-                     uint64_t PltEntryAddr) const override;
-  bool relocNeedsGot(uint32_t Type, const SymbolBody &S) const override;
-  bool relocPointsToGot(uint32_t Type) const override;
-  bool relocNeedsPlt(uint32_t Type, const SymbolBody &S) const override;
-  void relocateOne(uint8_t *Buf, uint8_t *BufEnd, const void *RelP,
-                   uint32_t Type, uint64_t BaseAddr,
-                   uint64_t SymVA) const override;
-};
-
-class X86_64TargetInfo final : public TargetInfo {
-public:
-  X86_64TargetInfo();
-  unsigned getPLTRefReloc(unsigned Type) const override;
-  void writePltEntry(uint8_t *Buf, uint64_t GotEntryAddr,
-                     uint64_t PltEntryAddr) const override;
-  bool relocNeedsGot(uint32_t Type, const SymbolBody &S) const override;
-  bool relocNeedsPlt(uint32_t Type, const SymbolBody &S) const override;
-  void relocateOne(uint8_t *Buf, uint8_t *BufEnd, const void *RelP,
-                   uint32_t Type, uint64_t BaseAddr,
-                   uint64_t SymVA) const override;
-  bool isRelRelative(uint32_t Type) const override;
-};
-
-class PPC64TargetInfo final : public TargetInfo {
-public:
-  PPC64TargetInfo();
-  void writePltEntry(uint8_t *Buf, uint64_t GotEntryAddr,
-                     uint64_t PltEntryAddr) const override;
-  bool relocNeedsGot(uint32_t Type, const SymbolBody &S) const override;
-  bool relocNeedsPlt(uint32_t Type, const SymbolBody &S) const override;
-  void relocateOne(uint8_t *Buf, uint8_t *BufEnd, const void *RelP,
-                   uint32_t Type, uint64_t BaseAddr,
-                   uint64_t SymVA) const override;
-  bool isRelRelative(uint32_t Type) const override;
-};
-
-class PPCTargetInfo final : public TargetInfo {
-public:
-  PPCTargetInfo();
-  void writePltEntry(uint8_t *Buf, uint64_t GotEntryAddr,
-                     uint64_t PltEntryAddr) const override;
-  bool relocNeedsGot(uint32_t Type, const SymbolBody &S) const override;
-  bool relocNeedsPlt(uint32_t Type, const SymbolBody &S) const override;
-  void relocateOne(uint8_t *Buf, uint8_t *BufEnd, const void *RelP,
-                   uint32_t Type, uint64_t BaseAddr,
-                   uint64_t SymVA) const override;
-};
-
-class AArch64TargetInfo final : public TargetInfo {
-public:
-  AArch64TargetInfo();
-  void writePltEntry(uint8_t *Buf, uint64_t GotEntryAddr,
-                     uint64_t PltEntryAddr) const override;
-  bool relocNeedsGot(uint32_t Type, const SymbolBody &S) const override;
-  bool relocNeedsPlt(uint32_t Type, const SymbolBody &S) const override;
-  void relocateOne(uint8_t *Buf, uint8_t *BufEnd, const void *RelP,
-                   uint32_t Type, uint64_t BaseAddr,
-                   uint64_t SymVA) const override;
-};
-
-template <class ELFT> class MipsTargetInfo final : public TargetInfo {
-public:
-  MipsTargetInfo();
-  void writePltEntry(uint8_t *Buf, uint64_t GotEntryAddr,
-                     uint64_t PltEntryAddr) const override;
-  bool relocNeedsGot(uint32_t Type, const SymbolBody &S) const override;
-  bool relocNeedsPlt(uint32_t Type, const SymbolBody &S) const override;
-  void relocateOne(uint8_t *Buf, uint8_t *BufEnd, const void *RelP,
-                   uint32_t Type, uint64_t BaseAddr,
-                   uint64_t SymVA) const override;
-};
-
 extern std::unique_ptr<TargetInfo> Target;
 TargetInfo *createTarget();
 }




More information about the llvm-commits mailing list