[lld] r233894 - ELF: Remove a template parameter from ELF{Object, DOS}Reader constructors.

Rui Ueyama ruiu at google.com
Wed Apr 1 22:19:37 PDT 2015


Author: ruiu
Date: Thu Apr  2 00:19:36 2015
New Revision: 233894

URL: http://llvm.org/viewvc/llvm-project?rev=233894&view=rev
Log:
ELF: Remove a template parameter from ELF{Object,DOS}Reader constructors.

There is one-to-one correspondence between ELF machine type and a
LinkingContext. We passed them as separate arguments to the constructor.
This patch is to teach the LinkingContexts about their machine types,
so that we don't need to pass that data as separate arguments.

Modified:
    lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h
    lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h
    lld/trunk/lib/ReaderWriter/ELF/ARM/ARMELFReader.h
    lld/trunk/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.h
    lld/trunk/lib/ReaderWriter/ELF/ELFReader.h
    lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonELFReader.h
    lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.h
    lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFReader.h
    lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.h
    lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFReader.h
    lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.h
    lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h
    lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h

Modified: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h?rev=233894&r1=233893&r2=233894&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h Thu Apr  2 00:19:36 2015
@@ -34,15 +34,14 @@ class AArch64ELFObjectReader
 public:
   AArch64ELFObjectReader(AArch64LinkingContext &ctx)
       : ELFObjectReader<AArch64ELFType, AArch64ELFFileCreateELFTraits,
-                        AArch64LinkingContext>(ctx, llvm::ELF::EM_AARCH64) {}
+                        AArch64LinkingContext>(ctx) {}
 };
 
 class AArch64ELFDSOReader
     : public ELFDSOReader<AArch64ELFType, AArch64LinkingContext> {
 public:
   AArch64ELFDSOReader(AArch64LinkingContext &ctx)
-      : ELFDSOReader<AArch64ELFType,
-                     AArch64LinkingContext>(ctx, llvm::ELF::EM_AARCH64) {}
+      : ELFDSOReader<AArch64ELFType, AArch64LinkingContext>(ctx) {}
 };
 
 } // namespace elf

Modified: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h?rev=233894&r1=233893&r2=233894&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h Thu Apr  2 00:19:36 2015
@@ -25,6 +25,7 @@ enum {
 class AArch64LinkingContext final : public ELFLinkingContext {
 public:
   static std::unique_ptr<ELFLinkingContext> create(llvm::Triple);
+  static const int machine = llvm::ELF::EM_AARCH64;
   AArch64LinkingContext(llvm::Triple);
 
   void addPasses(PassManager &) override;

Modified: lld/trunk/lib/ReaderWriter/ELF/ARM/ARMELFReader.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ARM/ARMELFReader.h?rev=233894&r1=233893&r2=233894&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/ARM/ARMELFReader.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/ARM/ARMELFReader.h Thu Apr  2 00:19:36 2015
@@ -34,14 +34,14 @@ class ARMELFObjectReader
 public:
   ARMELFObjectReader(ARMLinkingContext &ctx)
       : ELFObjectReader<ARMELFType, ARMELFFileCreateELFTraits,
-                        ARMLinkingContext>(ctx, llvm::ELF::EM_ARM) {}
+                        ARMLinkingContext>(ctx) {}
 };
 
 class ARMELFDSOReader
     : public ELFDSOReader<ARMELFType, ARMLinkingContext> {
 public:
   ARMELFDSOReader(ARMLinkingContext &ctx)
-      : ELFDSOReader<ARMELFType, ARMLinkingContext>(ctx, llvm::ELF::EM_ARM) {}
+      : ELFDSOReader<ARMELFType, ARMLinkingContext>(ctx) {}
 };
 
 } // namespace elf

Modified: lld/trunk/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.h?rev=233894&r1=233893&r2=233894&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.h Thu Apr  2 00:19:36 2015
@@ -20,6 +20,7 @@ namespace elf {
 class ARMLinkingContext final : public ELFLinkingContext {
 public:
   static std::unique_ptr<ELFLinkingContext> create(llvm::Triple);
+  static const int machine = llvm::ELF::EM_ARM;
   ARMLinkingContext(llvm::Triple);
 
   void addPasses(PassManager &) override;

Modified: lld/trunk/lib/ReaderWriter/ELF/ELFReader.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ELFReader.h?rev=233894&r1=233893&r2=233894&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/ELFReader.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/ELFReader.h Thu Apr  2 00:19:36 2015
@@ -23,13 +23,12 @@ class ELFObjectReader : public Reader {
 public:
   typedef llvm::object::Elf_Ehdr_Impl<ELFT> Elf_Ehdr;
 
-  ELFObjectReader(ContextT &ctx, uint64_t machine)
-      : _ctx(ctx), _machine(machine) {}
+  ELFObjectReader(ContextT &ctx) : _ctx(ctx) {}
 
   bool canParse(file_magic magic, StringRef,
                 const MemoryBuffer &buf) const override {
     return (magic == llvm::sys::fs::file_magic::elf_relocatable &&
-            elfHeader(buf)->e_machine == _machine);
+            elfHeader(buf)->e_machine == ContextT::machine);
   }
 
   std::error_code
@@ -54,7 +53,6 @@ public:
 
 protected:
   ContextT &_ctx;
-  uint64_t _machine;
 };
 
 struct DynamicFileCreateELFTraits {
@@ -72,13 +70,12 @@ class ELFDSOReader : public Reader {
 public:
   typedef llvm::object::Elf_Ehdr_Impl<ELFT> Elf_Ehdr;
 
-  ELFDSOReader(ContextT &ctx, uint64_t machine)
-      : _ctx(ctx), _machine(machine) {}
+  ELFDSOReader(ContextT &ctx) : _ctx(ctx) {}
 
   bool canParse(file_magic magic, StringRef,
                 const MemoryBuffer &buf) const override {
     return (magic == llvm::sys::fs::file_magic::elf_shared_object &&
-            elfHeader(buf)->e_machine == _machine);
+            elfHeader(buf)->e_machine == ContextT::machine);
   }
 
   std::error_code
@@ -103,7 +100,6 @@ public:
 
 protected:
   ContextT &_ctx;
-  uint64_t _machine;
 };
 
 } // namespace elf

Modified: lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonELFReader.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonELFReader.h?rev=233894&r1=233893&r2=233894&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonELFReader.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonELFReader.h Thu Apr  2 00:19:36 2015
@@ -34,15 +34,14 @@ class HexagonELFObjectReader
 public:
   HexagonELFObjectReader(HexagonLinkingContext &ctx)
       : ELFObjectReader<HexagonELFType, HexagonELFFileCreateELFTraits,
-                        HexagonLinkingContext>(ctx, llvm::ELF::EM_HEXAGON) {}
+                        HexagonLinkingContext>(ctx) {}
 };
 
 class HexagonELFDSOReader
     : public ELFDSOReader<HexagonELFType, HexagonLinkingContext> {
 public:
   HexagonELFDSOReader(HexagonLinkingContext &ctx)
-      : ELFDSOReader<HexagonELFType,
-                     HexagonLinkingContext>(ctx, llvm::ELF::EM_HEXAGON) {}
+      : ELFDSOReader<HexagonELFType, HexagonLinkingContext>(ctx) {}
 };
 
 } // namespace elf

Modified: lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.h?rev=233894&r1=233893&r2=233894&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.h Thu Apr  2 00:19:36 2015
@@ -23,6 +23,7 @@ typedef llvm::object::ELFType<llvm::supp
 class HexagonLinkingContext final : public ELFLinkingContext {
 public:
   static std::unique_ptr<ELFLinkingContext> create(llvm::Triple);
+  static const int machine = llvm::ELF::EM_HEXAGON;
   HexagonLinkingContext(llvm::Triple triple);
 
   void addPasses(PassManager &) override;

Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFReader.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFReader.h?rev=233894&r1=233893&r2=233894&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFReader.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFReader.h Thu Apr  2 00:19:36 2015
@@ -36,8 +36,7 @@ class MipsELFObjectReader
 
 public:
   MipsELFObjectReader(MipsLinkingContext &ctx)
-      : BaseReaderType(ctx, llvm::ELF::EM_MIPS),
-        _flagMerger(ctx.getELFFlagsMerger()) {}
+      : BaseReaderType(ctx), _flagMerger(ctx.getELFFlagsMerger()) {}
 
   std::error_code
   loadFile(std::unique_ptr<MemoryBuffer> mb, const Registry &registry,
@@ -58,8 +57,7 @@ class MipsELFDSOReader : public ELFDSORe
 
 public:
   MipsELFDSOReader(MipsLinkingContext &ctx)
-      : BaseReaderType(ctx, llvm::ELF::EM_MIPS),
-        _flagMerger(ctx.getELFFlagsMerger()) {}
+      : BaseReaderType(ctx), _flagMerger(ctx.getELFFlagsMerger()) {}
 
   std::error_code
   loadFile(std::unique_ptr<MemoryBuffer> mb, const Registry &registry,

Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.h?rev=233894&r1=233893&r2=233894&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.h Thu Apr  2 00:19:36 2015
@@ -43,6 +43,7 @@ typedef llvm::object::ELFType<llvm::supp
 class MipsLinkingContext final : public ELFLinkingContext {
 public:
   static std::unique_ptr<ELFLinkingContext> create(llvm::Triple);
+  static const int machine = llvm::ELF::EM_MIPS;
   MipsLinkingContext(llvm::Triple triple);
 
   uint32_t getMergedELFFlags() const;

Modified: lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFReader.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFReader.h?rev=233894&r1=233893&r2=233894&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFReader.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFReader.h Thu Apr  2 00:19:36 2015
@@ -34,15 +34,14 @@ class X86ELFObjectReader
 public:
   X86ELFObjectReader(X86LinkingContext &ctx)
       : ELFObjectReader<X86ELFType, X86ELFFileCreateELFTraits,
-                        X86LinkingContext>(ctx, llvm::ELF::EM_386) {}
+                        X86LinkingContext>(ctx) {}
 };
 
 class X86ELFDSOReader
     : public ELFDSOReader<X86ELFType, X86LinkingContext> {
 public:
   X86ELFDSOReader(X86LinkingContext &ctx)
-      : ELFDSOReader<X86ELFType,
-                     X86LinkingContext>(ctx, llvm::ELF::EM_386) {}
+      : ELFDSOReader<X86ELFType, X86LinkingContext>(ctx) {}
 };
 
 } // namespace elf

Modified: lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.h?rev=233894&r1=233893&r2=233894&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.h Thu Apr  2 00:19:36 2015
@@ -19,6 +19,7 @@ namespace elf {
 class X86LinkingContext final : public ELFLinkingContext {
 public:
   static std::unique_ptr<ELFLinkingContext> create(llvm::Triple);
+  static const int machine = llvm::ELF::EM_386;
   X86LinkingContext(llvm::Triple);
   void registerRelocationNames(Registry &r) override;
 

Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h?rev=233894&r1=233893&r2=233894&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h Thu Apr  2 00:19:36 2015
@@ -34,15 +34,14 @@ class X86_64ELFObjectReader
 public:
   X86_64ELFObjectReader(X86_64LinkingContext &ctx)
       : ELFObjectReader<X86_64ELFType, X86_64ELFFileCreateELFTraits,
-                        X86_64LinkingContext>(ctx, llvm::ELF::EM_X86_64) {}
+                        X86_64LinkingContext>(ctx) {}
 };
 
 class X86_64ELFDSOReader
     : public ELFDSOReader<X86_64ELFType, X86_64LinkingContext> {
 public:
   X86_64ELFDSOReader(X86_64LinkingContext &ctx)
-      : ELFDSOReader<X86_64ELFType,
-                     X86_64LinkingContext>(ctx, llvm::ELF::EM_X86_64) {}
+      : ELFDSOReader<X86_64ELFType, X86_64LinkingContext>(ctx) {}
 };
 
 } // namespace elf

Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h?rev=233894&r1=233893&r2=233894&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h Thu Apr  2 00:19:36 2015
@@ -30,6 +30,7 @@ protected:
 
 public:
   static std::unique_ptr<ELFLinkingContext> create(llvm::Triple);
+  static const int machine = llvm::ELF::EM_X86_64;
   X86_64LinkingContext(llvm::Triple);
 
   void addPasses(PassManager &) override;





More information about the llvm-commits mailing list