[lld] r230593 - [ELF][x86-64] Make the X86_64LinkingContext and X86_64TargetHandler derivable.

Michael J. Spencer bigcheesegs at gmail.com
Wed Feb 25 16:47:35 PST 2015


Author: mspencer
Date: Wed Feb 25 18:47:34 2015
New Revision: 230593

URL: http://llvm.org/viewvc/llvm-project?rev=230593&view=rev
Log:
[ELF][x86-64] Make the X86_64LinkingContext and X86_64TargetHandler derivable.

Modified:
    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/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=230593&r1=230592&r2=230593&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp (original)
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp Wed Feb 25 18:47:34 2015
@@ -12,22 +12,27 @@
 #include "X86_64RelocationPass.h"
 
 using namespace lld;
+using namespace elf;
 
-std::unique_ptr<ELFLinkingContext>
-elf::X86_64LinkingContext::create(llvm::Triple triple) {
-  if (triple.getArch() == llvm::Triple::x86_64)
-    return std::unique_ptr<ELFLinkingContext>(
-             new elf::X86_64LinkingContext(triple));
-  return nullptr;
-}
+X86_64LinkingContext::X86_64LinkingContext(
+    llvm::Triple triple, std::unique_ptr<TargetHandlerBase> handler)
+    : ELFLinkingContext(triple, std::move(handler)) {}
 
-elf::X86_64LinkingContext::X86_64LinkingContext(llvm::Triple triple)
-    : ELFLinkingContext(triple, std::unique_ptr<TargetHandlerBase>(
-                        new X86_64TargetHandler(*this))) {}
+X86_64LinkingContext::X86_64LinkingContext(llvm::Triple triple)
+    : X86_64LinkingContext(triple,
+                           llvm::make_unique<X86_64TargetHandler>(*this)) {}
 
-void elf::X86_64LinkingContext::addPasses(PassManager &pm) {
+void X86_64LinkingContext::addPasses(PassManager &pm) {
   auto pass = createX86_64RelocationPass(*this);
   if (pass)
     pm.add(std::move(pass));
   ELFLinkingContext::addPasses(pm);
 }
+
+std::unique_ptr<ELFLinkingContext>
+X86_64LinkingContext::create(llvm::Triple triple) {
+  if (triple.getArch() == llvm::Triple::x86_64)
+    return std::unique_ptr<ELFLinkingContext>(
+        new elf::X86_64LinkingContext(triple));
+  return nullptr;
+}

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=230593&r1=230592&r2=230593&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h Wed Feb 25 18:47:34 2015
@@ -24,7 +24,9 @@ enum {
   LLD_R_X86_64_GOTRELINDEX = 1024,
 };
 
-class X86_64LinkingContext final : public ELFLinkingContext {
+class X86_64LinkingContext : public ELFLinkingContext {
+protected:
+  X86_64LinkingContext(llvm::Triple, std::unique_ptr<TargetHandlerBase>);
 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=230593&r1=230592&r2=230593&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 18:47:34 2015
@@ -26,7 +26,7 @@ public:
       : TargetLayout(context) {}
 };
 
-class X86_64TargetHandler final
+class X86_64TargetHandler
     : public DefaultTargetHandler<X86_64ELFType> {
 public:
   X86_64TargetHandler(X86_64LinkingContext &context);
@@ -51,7 +51,7 @@ public:
 
   std::unique_ptr<Writer> getWriter() override;
 
-private:
+protected:
   static const Registry::KindStrings kindStrings[];
   X86_64LinkingContext &_context;
   std::unique_ptr<X86_64TargetLayout> _x86_64TargetLayout;





More information about the llvm-commits mailing list