[lld] r230574 - [ELF][x86] Detemplatify ELFT. There's only a single valid instantiation.

Michael J. Spencer bigcheesegs at gmail.com
Wed Feb 25 15:27:15 PST 2015


Author: mspencer
Date: Wed Feb 25 17:27:13 2015
New Revision: 230574

URL: http://llvm.org/viewvc/llvm-project?rev=230574&view=rev
Log:
[ELF][x86] Detemplatify ELFT. There's only a single valid instantiation.

Added:
    lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ElfType.h
Modified:
    lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64DynamicLibraryWriter.h
    lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ExecutableWriter.h
    lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.h
    lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.cpp
    lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h

Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64DynamicLibraryWriter.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64DynamicLibraryWriter.h?rev=230574&r1=230573&r2=230574&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64DynamicLibraryWriter.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64DynamicLibraryWriter.h Wed Feb 25 17:27:13 2015
@@ -10,28 +10,28 @@
 #define X86_64_DYNAMIC_LIBRARY_WRITER_H
 
 #include "DynamicLibraryWriter.h"
+#include "X86_64ElfType.h"
 #include "X86_64LinkingContext.h"
 #include "X86_64TargetHandler.h"
 
 namespace lld {
 namespace elf {
 
-template <class ELFT>
-class X86_64DynamicLibraryWriter : public DynamicLibraryWriter<ELFT> {
+class X86_64DynamicLibraryWriter : public DynamicLibraryWriter<X86_64ELFType> {
 public:
   X86_64DynamicLibraryWriter(X86_64LinkingContext &context,
-                             X86_64TargetLayout<ELFT> &layout);
+                             X86_64TargetLayout &layout);
 
 protected:
   // Add any runtime files and their atoms to the output
   virtual bool createImplicitFiles(std::vector<std::unique_ptr<File>> &);
 
   virtual void finalizeDefaultAtomValues() {
-    return DynamicLibraryWriter<ELFT>::finalizeDefaultAtomValues();
+    return DynamicLibraryWriter::finalizeDefaultAtomValues();
   }
 
   virtual void addDefaultAtoms() {
-    return DynamicLibraryWriter<ELFT>::addDefaultAtoms();
+    return DynamicLibraryWriter::addDefaultAtoms();
   }
 
 private:
@@ -43,20 +43,17 @@ private:
 
   std::unique_ptr<GOTFile> _gotFile;
   X86_64LinkingContext &_context;
-  X86_64TargetLayout<ELFT> &_x86_64Layout;
+  X86_64TargetLayout &_x86_64Layout;
 };
 
-template <class ELFT>
-X86_64DynamicLibraryWriter<ELFT>::X86_64DynamicLibraryWriter(
-    X86_64LinkingContext &context, X86_64TargetLayout<ELFT> &layout)
-    : DynamicLibraryWriter<ELFT>(context, layout),
-      _gotFile(new GOTFile(context)), _context(context), _x86_64Layout(layout) {
-}
+X86_64DynamicLibraryWriter::X86_64DynamicLibraryWriter(
+    X86_64LinkingContext &context, X86_64TargetLayout &layout)
+    : DynamicLibraryWriter(context, layout), _gotFile(new GOTFile(context)),
+      _context(context), _x86_64Layout(layout) {}
 
-template <class ELFT>
-bool X86_64DynamicLibraryWriter<ELFT>::createImplicitFiles(
+bool X86_64DynamicLibraryWriter::createImplicitFiles(
     std::vector<std::unique_ptr<File>> &result) {
-  DynamicLibraryWriter<ELFT>::createImplicitFiles(result);
+  DynamicLibraryWriter::createImplicitFiles(result);
   _gotFile->addAtom(*new (_gotFile->_alloc) GLOBAL_OFFSET_TABLEAtom(*_gotFile));
   _gotFile->addAtom(*new (_gotFile->_alloc) DYNAMICAtom(*_gotFile));
   result.push_back(std::move(_gotFile));

Added: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ElfType.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ElfType.h?rev=230574&view=auto
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ElfType.h (added)
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ElfType.h Wed Feb 25 17:27:13 2015
@@ -0,0 +1,21 @@
+//===- lib/ReaderWriter/ELF/X86_64/X86_64ElfType.h ------------------------===//
+//
+//                             The LLVM Linker
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLD_READER_WRITER_ELF_X86_64_X86_64_ELF_TYPE_H
+#define LLD_READER_WRITER_ELF_X86_64_X86_64_ELF_TYPE_H
+
+#include "llvm/Object/ELF.h"
+
+namespace lld {
+namespace elf {
+typedef llvm::object::ELFType<llvm::support::little, 2, true> X86_64ELFType;
+}
+}
+
+#endif

Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ExecutableWriter.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ExecutableWriter.h?rev=230574&r1=230573&r2=230574&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ExecutableWriter.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ExecutableWriter.h Wed Feb 25 17:27:13 2015
@@ -10,27 +10,38 @@
 #define X86_64_EXECUTABLE_WRITER_H
 
 #include "ExecutableWriter.h"
+#include "X86_64ElfType.h"
 #include "X86_64LinkingContext.h"
 
 namespace lld {
 namespace elf {
 
-template <class ELFT>
-class X86_64ExecutableWriter : public ExecutableWriter<ELFT> {
+class X86_64ExecutableWriter : public ExecutableWriter<X86_64ELFType> {
 public:
   X86_64ExecutableWriter(X86_64LinkingContext &context,
-                         X86_64TargetLayout<ELFT> &layout);
+                         X86_64TargetLayout &layout)
+      : ExecutableWriter(context, layout), _gotFile(new GOTFile(context)),
+        _context(context) {}
 
 protected:
   // Add any runtime files and their atoms to the output
-  virtual bool createImplicitFiles(std::vector<std::unique_ptr<File>> &);
+  virtual bool
+  createImplicitFiles(std::vector<std::unique_ptr<File>> &result) {
+    ExecutableWriter::createImplicitFiles(result);
+    _gotFile->addAtom(*new (_gotFile->_alloc)
+                      GLOBAL_OFFSET_TABLEAtom(*_gotFile));
+    if (_context.isDynamic())
+      _gotFile->addAtom(*new (_gotFile->_alloc) DYNAMICAtom(*_gotFile));
+    result.push_back(std::move(_gotFile));
+    return true;
+  }
 
   virtual void finalizeDefaultAtomValues() {
-    return ExecutableWriter<ELFT>::finalizeDefaultAtomValues();
+    return ExecutableWriter::finalizeDefaultAtomValues();
   }
 
   virtual void addDefaultAtoms() {
-    return ExecutableWriter<ELFT>::addDefaultAtoms();
+    return ExecutableWriter::addDefaultAtoms();
   }
 
 private:
@@ -42,26 +53,8 @@ private:
 
   std::unique_ptr<GOTFile> _gotFile;
   X86_64LinkingContext &_context;
-  X86_64TargetLayout<ELFT> &_x86_64Layout;
 };
 
-template <class ELFT>
-X86_64ExecutableWriter<ELFT>::X86_64ExecutableWriter(
-    X86_64LinkingContext &context, X86_64TargetLayout<ELFT> &layout)
-    : ExecutableWriter<ELFT>(context, layout), _gotFile(new GOTFile(context)),
-      _context(context), _x86_64Layout(layout) {}
-
-template <class ELFT>
-bool X86_64ExecutableWriter<ELFT>::createImplicitFiles(
-    std::vector<std::unique_ptr<File>> &result) {
-  ExecutableWriter<ELFT>::createImplicitFiles(result);
-  _gotFile->addAtom(*new (_gotFile->_alloc) GLOBAL_OFFSET_TABLEAtom(*_gotFile));
-  if (_context.isDynamic())
-    _gotFile->addAtom(*new (_gotFile->_alloc) DYNAMICAtom(*_gotFile));
-  result.push_back(std::move(_gotFile));
-  return true;
-}
-
 } // namespace elf
 } // namespace lld
 

Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.h?rev=230574&r1=230573&r2=230574&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.h Wed Feb 25 17:27:13 2015
@@ -16,11 +16,11 @@ namespace lld {
 namespace elf {
 typedef llvm::object::ELFType<llvm::support::little, 2, true> X86_64ELFType;
 
-template <class ELFT> class X86_64TargetLayout;
+class X86_64TargetLayout;
 
 class X86_64TargetRelocationHandler final : public TargetRelocationHandler {
 public:
-  X86_64TargetRelocationHandler(X86_64TargetLayout<X86_64ELFType> &layout)
+  X86_64TargetRelocationHandler(X86_64TargetLayout &layout)
       : _tlsSize(0), _x86_64Layout(layout) {}
 
   std::error_code applyRelocation(ELFWriter &, llvm::FileOutputBuffer &,
@@ -30,7 +30,7 @@ public:
 private:
   // Cached size of the TLS segment.
   mutable uint64_t _tlsSize;
-  X86_64TargetLayout<X86_64ELFType> &_x86_64Layout;
+  X86_64TargetLayout &_x86_64Layout;
 };
 
 } // end namespace elf

Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.cpp?rev=230574&r1=230573&r2=230574&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.cpp (original)
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.cpp Wed Feb 25 17:27:13 2015
@@ -17,10 +17,9 @@ using namespace lld;
 using namespace elf;
 
 X86_64TargetHandler::X86_64TargetHandler(X86_64LinkingContext &context)
-    : _context(context),
-      _x86_64TargetLayout(new X86_64TargetLayout<X86_64ELFType>(context)),
-      _x86_64RelocationHandler(new X86_64TargetRelocationHandler(
-          *_x86_64TargetLayout.get())) {}
+    : _context(context), _x86_64TargetLayout(new X86_64TargetLayout(context)),
+      _x86_64RelocationHandler(
+          new X86_64TargetRelocationHandler(*_x86_64TargetLayout.get())) {}
 
 void X86_64TargetHandler::registerRelocationNames(Registry &registry) {
   registry.addKindTable(Reference::KindNamespace::ELF,
@@ -30,12 +29,11 @@ void X86_64TargetHandler::registerReloca
 std::unique_ptr<Writer> X86_64TargetHandler::getWriter() {
   switch (this->_context.getOutputELFType()) {
   case llvm::ELF::ET_EXEC:
-    return std::unique_ptr<Writer>(new X86_64ExecutableWriter<X86_64ELFType>(
-        _context, *_x86_64TargetLayout.get()));
+    return std::unique_ptr<Writer>(
+        new X86_64ExecutableWriter(_context, *_x86_64TargetLayout.get()));
   case llvm::ELF::ET_DYN:
     return std::unique_ptr<Writer>(
-        new X86_64DynamicLibraryWriter<X86_64ELFType>(
-            _context, *_x86_64TargetLayout.get()));
+        new X86_64DynamicLibraryWriter(_context, *_x86_64TargetLayout.get()));
   case llvm::ELF::ET_REL:
     llvm_unreachable("TODO: support -r mode");
   default:

Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h?rev=230574&r1=230573&r2=230574&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h Wed Feb 25 17:27:13 2015
@@ -11,6 +11,7 @@
 #define LLD_READER_WRITER_ELF_X86_64_X86_64_TARGET_HANDLER_H
 
 #include "DefaultTargetHandler.h"
+#include "X86_64LinkingContext.h"
 #include "TargetLayout.h"
 #include "X86_64ELFFile.h"
 #include "X86_64ELFReader.h"
@@ -19,12 +20,10 @@
 
 namespace lld {
 namespace elf {
-class X86_64LinkingContext;
-
-template <class ELFT> class X86_64TargetLayout : public TargetLayout<ELFT> {
+class X86_64TargetLayout : public TargetLayout<X86_64ELFType> {
 public:
   X86_64TargetLayout(X86_64LinkingContext &context)
-      : TargetLayout<ELFT>(context) {}
+      : TargetLayout(context) {}
 };
 
 class X86_64TargetHandler final
@@ -32,7 +31,7 @@ class X86_64TargetHandler final
 public:
   X86_64TargetHandler(X86_64LinkingContext &context);
 
-  X86_64TargetLayout<X86_64ELFType> &getTargetLayout() override {
+  X86_64TargetLayout &getTargetLayout() override {
     return *(_x86_64TargetLayout.get());
   }
 
@@ -55,7 +54,7 @@ public:
 private:
   static const Registry::KindStrings kindStrings[];
   X86_64LinkingContext &_context;
-  std::unique_ptr<X86_64TargetLayout<X86_64ELFType>> _x86_64TargetLayout;
+  std::unique_ptr<X86_64TargetLayout> _x86_64TargetLayout;
   std::unique_ptr<X86_64TargetRelocationHandler> _x86_64RelocationHandler;
 };
 





More information about the llvm-commits mailing list