[lld] r233773 - ELF: Remove TargetHandlerBase by merging it with TargetHandler.

Rui Ueyama ruiu at google.com
Tue Mar 31 17:00:36 PDT 2015


Author: ruiu
Date: Tue Mar 31 19:00:36 2015
New Revision: 233773

URL: http://llvm.org/viewvc/llvm-project?rev=233773&view=rev
Log:
ELF: Remove TargetHandlerBase by merging it with TargetHandler.

In r233772, I removed an empty class, DefaultTargetHandler, from
the class hierarchy by merging the class with TargetHandler. I then
found that TargetHandler and its base class, TargetHandlerBase,
are also almost the same.

We need to go deeper.

In this patch, I merged TargetHandlerBase with TargetHandler.
The only difference between them is the existence (or absense)
of a pure virtual function registerRelocationName(). I added that
function to the (new) TargetHandler.

One more thing is that TargetHandler was templated for no reason.
I made it non-templated class.

Modified:
    lld/trunk/include/lld/Core/Reader.h
    lld/trunk/include/lld/Core/Writer.h
    lld/trunk/include/lld/ReaderWriter/ELFLinkingContext.h
    lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp
    lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h
    lld/trunk/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.cpp
    lld/trunk/lib/ReaderWriter/ELF/ARM/ARMTargetHandler.h
    lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp
    lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp
    lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h
    lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFFile.h
    lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.cpp
    lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h
    lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h
    lld/trunk/lib/ReaderWriter/ELF/Reader.cpp
    lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h
    lld/trunk/lib/ReaderWriter/ELF/TargetHandler.h
    lld/trunk/lib/ReaderWriter/ELF/Writer.cpp
    lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp
    lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.h
    lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/ExampleLinkingContext.cpp
    lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp
    lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h
    lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h

Modified: lld/trunk/include/lld/Core/Reader.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Core/Reader.h?rev=233773&r1=233772&r2=233773&view=diff
==============================================================================
--- lld/trunk/include/lld/Core/Reader.h (original)
+++ lld/trunk/include/lld/Core/Reader.h Tue Mar 31 19:00:36 2015
@@ -31,7 +31,6 @@ class ELFLinkingContext;
 class File;
 class LinkingContext;
 class PECOFFLinkingContext;
-class TargetHandlerBase;
 class MachOLinkingContext;
 
 /// \brief An abstract class for reading object files, library files, and

Modified: lld/trunk/include/lld/Core/Writer.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Core/Writer.h?rev=233773&r1=233772&r2=233773&view=diff
==============================================================================
--- lld/trunk/include/lld/Core/Writer.h (original)
+++ lld/trunk/include/lld/Core/Writer.h Tue Mar 31 19:00:36 2015
@@ -20,7 +20,7 @@ class ELFLinkingContext;
 class MachOLinkingContext;
 class PECOFFLinkingContext;
 class LinkingContext;
-class TargetHandlerBase;
+class TargetHandler;
 
 /// \brief The Writer is an abstract class for writing object files, shared
 /// library files, and executable files.  Each file format (e.g. ELF, mach-o,
@@ -42,7 +42,7 @@ protected:
   Writer();
 };
 
-std::unique_ptr<Writer> createWriterELF(TargetHandlerBase *handler);
+std::unique_ptr<Writer> createWriterELF(TargetHandler *handler);
 std::unique_ptr<Writer> createWriterMachO(const MachOLinkingContext &);
 std::unique_ptr<Writer> createWriterPECOFF(const PECOFFLinkingContext &);
 std::unique_ptr<Writer> createWriterNative();

Modified: lld/trunk/include/lld/ReaderWriter/ELFLinkingContext.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/ReaderWriter/ELFLinkingContext.h?rev=233773&r1=233772&r2=233773&view=diff
==============================================================================
--- lld/trunk/include/lld/ReaderWriter/ELFLinkingContext.h (original)
+++ lld/trunk/include/lld/ReaderWriter/ELFLinkingContext.h Tue Mar 31 19:00:36 2015
@@ -26,23 +26,47 @@
 #include <memory>
 #include <set>
 
+namespace llvm {
+class FileOutputBuffer;
+}
+
 namespace lld {
-class Reference;
+struct AtomLayout;
 class File;
+class Reference;
 
 namespace elf {
-template <typename ELFT> class TargetHandler;
-}
+class ELFWriter;
 
-class TargetHandlerBase {
+class TargetRelocationHandler {
 public:
-  virtual ~TargetHandlerBase() {}
+  virtual ~TargetRelocationHandler() {}
+
+  virtual std::error_code applyRelocation(ELFWriter &, llvm::FileOutputBuffer &,
+                                          const lld::AtomLayout &,
+                                          const Reference &) const = 0;
+};
+
+} // namespace elf
+
+/// \brief TargetHandler contains all the information responsible to handle a
+/// a particular target on ELF. A target might wish to override implementation
+/// of creating atoms and how the atoms are written to the output file.
+class TargetHandler {
+public:
+  virtual ~TargetHandler() {}
   virtual void registerRelocationNames(Registry &) = 0;
 
+  /// Determine how relocations need to be applied.
+  virtual const elf::TargetRelocationHandler &getRelocationHandler() const = 0;
+
+  /// How does the target deal with reading input files.
   virtual std::unique_ptr<Reader> getObjReader() = 0;
 
+  /// How does the target deal with reading dynamic libraries.
   virtual std::unique_ptr<Reader> getDSOReader() = 0;
 
+  /// How does the target deal with writing ELF output.
   virtual std::unique_ptr<Writer> getWriter() = 0;
 };
 
@@ -141,13 +165,11 @@ public:
   /// \brief Is the relocation a relative relocation
   virtual bool isRelativeReloc(const Reference &r) const;
 
-  template <typename ELFT>
-  lld::elf::TargetHandler<ELFT> &getTargetHandler() const {
+  TargetHandler &getTargetHandler() const {
     assert(_targetHandler && "Got null TargetHandler!");
-    return static_cast<lld::elf::TargetHandler<ELFT> &>(*_targetHandler.get());
+    return *_targetHandler;
   }
 
-  TargetHandlerBase *targetHandler() const { return _targetHandler.get(); }
   void addPasses(PassManager &pm) override;
 
   void setTriple(llvm::Triple trip) { _triple = trip; }
@@ -277,9 +299,8 @@ public:
   const script::Sema &linkerScriptSema() const { return _linkerScriptSema; }
 
 protected:
-  ELFLinkingContext(llvm::Triple triple,
-                    std::unique_ptr<TargetHandlerBase> targetHandler)
-      : _triple(triple), _targetHandler(std::move(targetHandler)) {}
+  ELFLinkingContext(llvm::Triple triple, std::unique_ptr<TargetHandler> handler)
+      : _triple(triple), _targetHandler(std::move(handler)) {}
 
   Writer &writer() const override;
 
@@ -288,7 +309,7 @@ protected:
 
   uint16_t _outputELFType = llvm::ELF::ET_EXEC;
   llvm::Triple _triple;
-  std::unique_ptr<TargetHandlerBase> _targetHandler;
+  std::unique_ptr<TargetHandler> _targetHandler;
   uint64_t _baseAddress = 0;
   bool _isStaticExecutable = false;
   bool _noInhibitExec = false;

Modified: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp?rev=233773&r1=233772&r2=233773&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp (original)
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp Tue Mar 31 19:00:36 2015
@@ -22,8 +22,8 @@ elf::AArch64LinkingContext::create(llvm:
 }
 
 elf::AArch64LinkingContext::AArch64LinkingContext(llvm::Triple triple)
-    : ELFLinkingContext(triple, std::unique_ptr<TargetHandlerBase>(
-                        new AArch64TargetHandler(*this))) {}
+    : ELFLinkingContext(triple, std::unique_ptr<TargetHandler>(
+                                    new AArch64TargetHandler(*this))) {}
 
 void elf::AArch64LinkingContext::addPasses(PassManager &pm) {
   auto pass = createAArch64RelocationPass(*this);

Modified: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h?rev=233773&r1=233772&r2=233773&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h Tue Mar 31 19:00:36 2015
@@ -25,7 +25,7 @@ public:
   AArch64TargetLayout(AArch64LinkingContext &ctx) : TargetLayout<ELFT>(ctx) {}
 };
 
-class AArch64TargetHandler final : public TargetHandler<AArch64ELFType> {
+class AArch64TargetHandler final : public TargetHandler {
 public:
   AArch64TargetHandler(AArch64LinkingContext &ctx);
 

Modified: lld/trunk/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.cpp?rev=233773&r1=233772&r2=233773&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.cpp (original)
+++ lld/trunk/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.cpp Tue Mar 31 19:00:36 2015
@@ -23,8 +23,9 @@ elf::ARMLinkingContext::create(llvm::Tri
 }
 
 elf::ARMLinkingContext::ARMLinkingContext(llvm::Triple triple)
-    : ELFLinkingContext(triple, std::unique_ptr<TargetHandlerBase>(
-                        new ARMTargetHandler(*this))) {}
+    : ELFLinkingContext(
+          triple, std::unique_ptr<TargetHandler>(new ARMTargetHandler(*this))) {
+}
 
 void elf::ARMLinkingContext::addPasses(PassManager &pm) {
   auto pass = createARMRelocationPass(*this);

Modified: lld/trunk/lib/ReaderWriter/ELF/ARM/ARMTargetHandler.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ARM/ARMTargetHandler.h?rev=233773&r1=233772&r2=233773&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/ARM/ARMTargetHandler.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/ARM/ARMTargetHandler.h Tue Mar 31 19:00:36 2015
@@ -57,7 +57,7 @@ private:
   llvm::Optional<uint64_t> _tpOff;
 };
 
-class ARMTargetHandler final : public TargetHandler<ARMELFType> {
+class ARMTargetHandler final : public TargetHandler {
 public:
   ARMTargetHandler(ARMLinkingContext &ctx);
 

Modified: lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp?rev=233773&r1=233772&r2=233773&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp (original)
+++ lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp Tue Mar 31 19:00:36 2015
@@ -79,7 +79,7 @@ bool ELFLinkingContext::validateImpl(raw
     llvm_unreachable("Unimplemented");
     break;
   default:
-    _writer = createWriterELF(this->targetHandler());
+    _writer = createWriterELF(&this->getTargetHandler());
     break;
   }
 

Modified: lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp?rev=233773&r1=233772&r2=233773&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp Tue Mar 31 19:00:36 2015
@@ -21,5 +21,5 @@ HexagonLinkingContext::create(llvm::Trip
 }
 
 HexagonLinkingContext::HexagonLinkingContext(llvm::Triple triple)
-    : ELFLinkingContext(triple, std::unique_ptr<TargetHandlerBase>(
+    : ELFLinkingContext(triple, std::unique_ptr<TargetHandler>(
                                     new HexagonTargetHandler(*this))) {}

Modified: lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h?rev=233773&r1=233772&r2=233773&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h Tue Mar 31 19:00:36 2015
@@ -96,7 +96,7 @@ private:
 };
 
 /// \brief TargetHandler for Hexagon
-class HexagonTargetHandler final : public TargetHandler<HexagonELFType> {
+class HexagonTargetHandler final : public TargetHandler {
 public:
   HexagonTargetHandler(HexagonLinkingContext &targetInfo);
 

Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFFile.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFFile.h?rev=233773&r1=233772&r2=233773&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFFile.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFFile.h Tue Mar 31 19:00:36 2015
@@ -242,8 +242,7 @@ private:
 
   Reference::Addend readAddend(const Elf_Rel &ri,
                                const ArrayRef<uint8_t> content) const {
-    const auto &rh =
-        this->_ctx.template getTargetHandler<ELFT>().getRelocationHandler();
+    const auto &rh = this->_ctx.getTargetHandler().getRelocationHandler();
     return static_cast<const MipsRelocationHandler &>(rh)
         .readAddend(getPrimaryType(ri), content.data() + ri.r_offset);
   }

Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.cpp?rev=233773&r1=233772&r2=233773&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.cpp (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.cpp Tue Mar 31 19:00:36 2015
@@ -24,15 +24,15 @@ MipsLinkingContext::create(llvm::Triple
   return nullptr;
 }
 
-typedef std::unique_ptr<TargetHandlerBase> TargetHandlerBasePtr;
+typedef std::unique_ptr<TargetHandler> TargetHandlerPtr;
 
-static TargetHandlerBasePtr createTarget(llvm::Triple triple,
-                                         MipsLinkingContext &ctx) {
+static TargetHandlerPtr createTarget(llvm::Triple triple,
+                                     MipsLinkingContext &ctx) {
   switch (triple.getArch()) {
   case llvm::Triple::mipsel:
-    return TargetHandlerBasePtr(new MipsTargetHandler<Mips32ELType>(ctx));
+    return TargetHandlerPtr(new MipsTargetHandler<Mips32ELType>(ctx));
   case llvm::Triple::mips64el:
-    return TargetHandlerBasePtr(new MipsTargetHandler<Mips64ELType>(ctx));
+    return TargetHandlerPtr(new MipsTargetHandler<Mips64ELType>(ctx));
   default:
     llvm_unreachable("Unhandled arch");
   }

Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h?rev=233773&r1=233772&r2=233773&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h Tue Mar 31 19:00:36 2015
@@ -99,8 +99,7 @@ public:
 };
 
 /// \brief TargetHandler for Mips
-template <class ELFT>
-class MipsTargetHandler final : public TargetHandler<ELFT> {
+template <class ELFT> class MipsTargetHandler final : public TargetHandler {
 public:
   MipsTargetHandler(MipsLinkingContext &ctx)
       : _ctx(ctx), _runtimeFile(new MipsRuntimeFile<ELFT>(ctx)),

Modified: lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h?rev=233773&r1=233772&r2=233773&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h Tue Mar 31 19:00:36 2015
@@ -175,7 +175,7 @@ protected:
   llvm::BumpPtrAllocator _alloc;
 
   ELFLinkingContext &_ctx;
-  TargetHandler<ELFT> &_targetHandler;
+  TargetHandler &_targetHandler;
 
   typedef llvm::DenseMap<const Atom *, uint64_t> AtomToAddress;
   AtomToAddress _atomToAddressMap;
@@ -207,7 +207,7 @@ private:
 template <class ELFT>
 OutputELFWriter<ELFT>::OutputELFWriter(ELFLinkingContext &ctx,
                                        TargetLayout<ELFT> &layout)
-    : _ctx(ctx), _targetHandler(ctx.getTargetHandler<ELFT>()), _layout(layout),
+    : _ctx(ctx), _targetHandler(ctx.getTargetHandler()), _layout(layout),
       _scriptFile(new RuntimeFile<ELFT>(ctx, "Linker script runtime")) {}
 
 template <class ELFT>

Modified: lld/trunk/lib/ReaderWriter/ELF/Reader.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Reader.cpp?rev=233773&r1=233772&r2=233773&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Reader.cpp (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Reader.cpp Tue Mar 31 19:00:36 2015
@@ -29,15 +29,15 @@ namespace lld {
 void Registry::addSupportELFObjects(ELFLinkingContext &ctx) {
 
   // Tell registry about the ELF object file parser.
-  add(std::move(ctx.targetHandler()->getObjReader()));
+  add(std::move(ctx.getTargetHandler().getObjReader()));
 
   // Tell registry about the relocation name to number mapping for this arch.
-  ctx.targetHandler()->registerRelocationNames(*this);
+  ctx.getTargetHandler().registerRelocationNames(*this);
 }
 
 void Registry::addSupportELFDynamicSharedObjects(ELFLinkingContext &ctx) {
   // Tell registry about the ELF dynamic shared library file parser.
-  add(ctx.targetHandler()->getDSOReader());
+  add(ctx.getTargetHandler().getDSOReader());
 }
 
 } // end namespace lld

Modified: lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h?rev=233773&r1=233772&r2=233773&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h Tue Mar 31 19:00:36 2015
@@ -420,7 +420,7 @@ void AtomSection<ELFT>::write(ELFWriter
     uint8_t *atomContent = chunkBuffer + ai->_fileOffset;
     std::memcpy(atomContent, content.data(), contentSize);
     const TargetRelocationHandler &relHandler =
-        this->_ctx.template getTargetHandler<ELFT>().getRelocationHandler();
+        this->_ctx.getTargetHandler().getRelocationHandler();
     for (const auto ref : *definedAtom) {
       if (std::error_code ec = relHandler.applyRelocation(*writer, buffer,
                                                           *ai, *ref)) {

Modified: lld/trunk/lib/ReaderWriter/ELF/TargetHandler.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/TargetHandler.h?rev=233773&r1=233772&r2=233773&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/TargetHandler.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/TargetHandler.h Tue Mar 31 19:00:36 2015
@@ -40,33 +40,6 @@ template <class ELFT> class ELFHeader;
 template <class ELFT> class Section;
 template <class ELFT> class TargetLayout;
 
-class TargetRelocationHandler {
-public:
-  virtual ~TargetRelocationHandler() {}
-
-  virtual std::error_code applyRelocation(ELFWriter &, llvm::FileOutputBuffer &,
-                                          const lld::AtomLayout &,
-                                          const Reference &) const = 0;
-};
-
-/// \brief TargetHandler contains all the information responsible to handle a
-/// a particular target on ELF. A target might wish to override implementation
-/// of creating atoms and how the atoms are written to the output file.
-template <class ELFT> class TargetHandler : public TargetHandlerBase {
-public:
-  /// Determine how relocations need to be applied.
-  virtual const TargetRelocationHandler &getRelocationHandler() const = 0;
-
-  /// How does the target deal with reading input files.
-  virtual std::unique_ptr<Reader> getObjReader() = 0;
-
-  /// How does the target deal with reading dynamic libraries.
-  virtual std::unique_ptr<Reader> getDSOReader() = 0;
-
-  /// How does the target deal with writing ELF output.
-  virtual std::unique_ptr<Writer> getWriter() = 0;
-};
-
 inline std::error_code make_unhandled_reloc_error() {
   return make_dynamic_error_code(Twine("Unhandled reference type"));
 }

Modified: lld/trunk/lib/ReaderWriter/ELF/Writer.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Writer.cpp?rev=233773&r1=233772&r2=233773&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Writer.cpp (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Writer.cpp Tue Mar 31 19:00:36 2015
@@ -16,7 +16,7 @@ using namespace llvm::object;
 
 namespace lld {
 
-std::unique_ptr<Writer> createWriterELF(TargetHandlerBase *handler) {
+std::unique_ptr<Writer> createWriterELF(TargetHandler *handler) {
   return std::move(handler->getWriter());
 }
 

Modified: lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp?rev=233773&r1=233772&r2=233773&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp (original)
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp Tue Mar 31 19:00:36 2015
@@ -24,5 +24,6 @@ elf::X86LinkingContext::create(llvm::Tri
 }
 
 elf::X86LinkingContext::X86LinkingContext(llvm::Triple triple)
-    : ELFLinkingContext(triple, std::unique_ptr<TargetHandlerBase>(
-                        new X86TargetHandler(*this))) {}
+    : ELFLinkingContext(
+          triple, std::unique_ptr<TargetHandler>(new X86TargetHandler(*this))) {
+}

Modified: lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.h?rev=233773&r1=233772&r2=233773&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.h Tue Mar 31 19:00:36 2015
@@ -25,7 +25,7 @@ public:
   X86TargetLayout(X86LinkingContext &ctx) : TargetLayout<ELFT>(ctx) {}
 };
 
-class X86TargetHandler final : public TargetHandler<X86ELFType> {
+class X86TargetHandler final : public TargetHandler {
 public:
   X86TargetHandler(X86LinkingContext &ctx);
 

Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/ExampleLinkingContext.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/ExampleLinkingContext.cpp?rev=233773&r1=233772&r2=233773&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/ExampleLinkingContext.cpp (original)
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/ExampleLinkingContext.cpp Tue Mar 31 19:00:36 2015
@@ -21,7 +21,7 @@ ExampleLinkingContext::create(llvm::Trip
 }
 
 ExampleLinkingContext::ExampleLinkingContext(llvm::Triple triple)
-    : X86_64LinkingContext(triple, std::unique_ptr<TargetHandlerBase>(
+    : X86_64LinkingContext(triple, std::unique_ptr<TargetHandler>(
                                        new ExampleTargetHandler(*this))) {
   _outputELFType = llvm::ELF::ET_LOPROC;
 }

Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp?rev=233773&r1=233772&r2=233773&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp (original)
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp Tue Mar 31 19:00:36 2015
@@ -15,7 +15,7 @@ using namespace lld;
 using namespace elf;
 
 X86_64LinkingContext::X86_64LinkingContext(
-    llvm::Triple triple, std::unique_ptr<TargetHandlerBase> handler)
+    llvm::Triple triple, std::unique_ptr<TargetHandler> handler)
     : ELFLinkingContext(triple, std::move(handler)) {}
 
 X86_64LinkingContext::X86_64LinkingContext(llvm::Triple triple)

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=233773&r1=233772&r2=233773&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h Tue Mar 31 19:00:36 2015
@@ -26,7 +26,8 @@ enum {
 
 class X86_64LinkingContext : public ELFLinkingContext {
 protected:
-  X86_64LinkingContext(llvm::Triple, std::unique_ptr<TargetHandlerBase>);
+  X86_64LinkingContext(llvm::Triple, std::unique_ptr<TargetHandler>);
+
 public:
   static std::unique_ptr<ELFLinkingContext> create(llvm::Triple);
   X86_64LinkingContext(llvm::Triple);

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=233773&r1=233772&r2=233773&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h Tue Mar 31 19:00:36 2015
@@ -29,7 +29,7 @@ public:
   }
 };
 
-class X86_64TargetHandler : public TargetHandler<X86_64ELFType> {
+class X86_64TargetHandler : public TargetHandler {
 public:
   X86_64TargetHandler(X86_64LinkingContext &ctx);
 





More information about the llvm-commits mailing list