<div dir="ltr">A LinkingContext already knew a lot of default values of its architecture (e.g. image base or how to reorder symbols). Names of relocations naturally fall into that category.<div><br></div><div>Actually the separation of TargetHandler and LinkikngContext look a bit dubious. I know that TargetHandler is templated and LinkingContext is not, but they always are associated one-to-one, so they are almost the same in concept.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Apr 2, 2015 at 10:03 AM, Shankar Easwaran <span dir="ltr"><<a href="mailto:shankare@codeaurora.org" target="_blank">shankare@codeaurora.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">LinkingContext is only a way to say what and how to link.<br>
<br>
I think moving relocation types / architecture definitions to the linking context is not a good approach here, no ??<br>
<br>
If you see MachO, even MachO uses a similar design by having all the relocation kind strings in the ArchHandler and not in the linking context.<br>
<br>
Shankar Easwaran<div class="HOEnZb"><div class="h5"><br>
<br>
On 4/1/2015 11:18 PM, Rui Ueyama wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Author: ruiu<br>
Date: Wed Apr  1 23:18:54 2015<br>
New Revision: 233883<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=233883&view=rev" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project?rev=233883&view=rev</a><br>
Log:<br>
ELF: Move registerRelocationNames() from TargetHandler to <Arch>ELFLinkingContext.<br>
<br>
registerRelocationNames() function is called to register all known<br>
ELF relocation types to the central registry. Since we have separate<br>
LinkingContext class for each ELF machine type, we need to call the<br>
function for each LinkingContext.<br>
<br>
However, the function belonged to TargetHandler instead of LinkingContext.<br>
So we needed to do ctx.getTargetHandler().<u></u>registerRelocationNames().<br>
This patch removes that redundant getTargetHandler call by moving the<br>
function from TargetHandler to LinkingContext.<br>
<br>
Conceptually this patch is small, but in reality it's not that small.<br>
It's because the same code is copied to each architecture.<br>
Most of this patch is just repetition. We need to merge them, but<br>
that cannot be done in this patch.<br>
<br>
Removed:<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsTargetHandler.cpp<br>
Modified:<br>
     lld/trunk/include/lld/<u></u>ReaderWriter/<u></u>ELFLinkingContext.h<br>
     lld/trunk/include/lld/<u></u>ReaderWriter/ELFTargets.h<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/<u></u>AArch64LinkingContext.cpp<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/<u></u>AArch64LinkingContext.h<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/<u></u>AArch64TargetHandler.cpp<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/<u></u>AArch64TargetHandler.h<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMLinkingContext.cpp<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMLinkingContext.h<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMTargetHandler.cpp<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMTargetHandler.h<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/<u></u>HexagonLinkingContext.cpp<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/<u></u>HexagonLinkingContext.h<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/<u></u>HexagonTargetHandler.cpp<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/<u></u>HexagonTargetHandler.h<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/CMakeLists.txt<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsLinkingContext.<u></u>cpp<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsLinkingContext.h<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsTargetHandler.h<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/Reader.cpp<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86LinkingContext.cpp<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86LinkingContext.h<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86TargetHandler.cpp<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86TargetHandler.h<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_<u></u>64LinkingContext.cpp<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_<u></u>64LinkingContext.h<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_<u></u>64TargetHandler.cpp<br>
     lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_<u></u>64TargetHandler.h<br>
<br>
Modified: lld/trunk/include/lld/<u></u>ReaderWriter/<u></u>ELFLinkingContext.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/ReaderWriter/ELFLinkingContext.h?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/include/lld/<u></u>ReaderWriter/<u></u>ELFLinkingContext.h?rev=<u></u>233883&r1=233882&r2=233883&<u></u>view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/include/lld/<u></u>ReaderWriter/<u></u>ELFLinkingContext.h (original)<br>
+++ lld/trunk/include/lld/<u></u>ReaderWriter/<u></u>ELFLinkingContext.h Wed Apr  1 23:18:54 2015<br>
@@ -55,7 +55,6 @@ public:<br>
  class TargetHandler {<br>
  public:<br>
    virtual ~TargetHandler() {}<br>
-  virtual void registerRelocationNames(<u></u>Registry &) = 0;<br>
      /// Determines how relocations need to be applied.<br>
    virtual const elf::TargetRelocationHandler &getRelocationHandler() const = 0;<br>
@@ -173,6 +172,8 @@ public:<br>
      return *_targetHandler;<br>
    }<br>
  +  virtual void registerRelocationNames(<u></u>Registry &) = 0;<br>
+<br>
    void addPasses(PassManager &pm) override;<br>
      void setTriple(llvm::Triple trip) { _triple = trip; }<br>
<br>
Modified: lld/trunk/include/lld/<u></u>ReaderWriter/ELFTargets.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/ReaderWriter/ELFTargets.h?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/include/lld/<u></u>ReaderWriter/ELFTargets.h?rev=<u></u>233883&r1=233882&r2=233883&<u></u>view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/include/lld/<u></u>ReaderWriter/ELFTargets.h (original)<br>
+++ lld/trunk/include/lld/<u></u>ReaderWriter/ELFTargets.h Wed Apr  1 23:18:54 2015<br>
@@ -16,7 +16,7 @@ namespace lld {<br>
  namespace elf {<br>
    #define LLVM_TARGET(TargetName) \<br>
-  class TargetName##LinkingContext final : public ELFLinkingContext { \<br>
+  class TargetName##LinkingContext : public ELFLinkingContext { \<br>
    public: \<br>
      static std::unique_ptr<<u></u>ELFLinkingContext> create(llvm::Triple); \<br>
    };<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/<u></u>AArch64LinkingContext.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/AArch64/<u></u>AArch64LinkingContext.cpp?rev=<u></u>233883&r1=233882&r2=233883&<u></u>view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/<u></u>AArch64LinkingContext.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/<u></u>AArch64LinkingContext.cpp Wed Apr  1 23:18:54 2015<br>
@@ -12,21 +12,34 @@<br>
  #include "AArch64TargetHandler.h"<br>
    using namespace lld;<br>
+using namespace lld::elf;<br>
    std::unique_ptr<<u></u>ELFLinkingContext><br>
-elf::AArch64LinkingContext::<u></u>create(llvm::Triple triple) {<br>
+AArch64LinkingContext::<u></u>create(llvm::Triple triple) {<br>
    if (triple.getArch() == llvm::Triple::aarch64)<br>
-    return llvm::make_unique<elf::<u></u>AArch64LinkingContext>(triple)<u></u>;<br>
+    return llvm::make_unique<<u></u>AArch64LinkingContext>(triple)<u></u>;<br>
    return nullptr;<br>
  }<br>
  -elf::AArch64LinkingContext::<u></u>AArch64LinkingContext(llvm::<u></u>Triple triple)<br>
+AArch64LinkingContext::<u></u>AArch64LinkingContext(llvm::<u></u>Triple triple)<br>
      : ELFLinkingContext(triple, std::unique_ptr<TargetHandler><u></u>(<br>
                                      new AArch64TargetHandler(*this))) {}<br>
  -void elf::AArch64LinkingContext::<u></u>addPasses(PassManager &pm) {<br>
+void AArch64LinkingContext::<u></u>addPasses(PassManager &pm) {<br>
    auto pass = createAArch64RelocationPass(*<u></u>this);<br>
    if (pass)<br>
      pm.add(std::move(pass));<br>
    ELFLinkingContext::addPasses(<u></u>pm);<br>
  }<br>
+<br>
+static const Registry::KindStrings kindStrings[] = {<br>
+#define ELF_RELOC(name, value) LLD_KIND_STRING_ENTRY(name),<br>
+#include "llvm/Support/ELFRelocs/<u></u>AArch64.def"<br>
+#undef ELF_RELOC<br>
+  LLD_KIND_STRING_END<br>
+};<br>
+<br>
+void AArch64LinkingContext::<u></u>registerRelocationNames(<u></u>Registry &registry) {<br>
+  registry.addKindTable(<u></u>Reference::KindNamespace::ELF,<br>
+                        Reference::KindArch::AArch64, kindStrings);<br>
+}<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/<u></u>AArch64LinkingContext.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/AArch64/<u></u>AArch64LinkingContext.h?rev=<u></u>233883&r1=233882&r2=233883&<u></u>view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/<u></u>AArch64LinkingContext.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/<u></u>AArch64LinkingContext.h Wed Apr  1 23:18:54 2015<br>
@@ -28,6 +28,7 @@ public:<br>
    AArch64LinkingContext(llvm::<u></u>Triple);<br>
      void addPasses(PassManager &) override;<br>
+  void registerRelocationNames(<u></u>Registry &r) override;<br>
      uint64_t getBaseAddress() const override {<br>
      if (_baseAddress == 0)<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/<u></u>AArch64TargetHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.cpp?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/AArch64/<u></u>AArch64TargetHandler.cpp?rev=<u></u>233883&r1=233882&r2=233883&<u></u>view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/<u></u>AArch64TargetHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/<u></u>AArch64TargetHandler.cpp Wed Apr  1 23:18:54 2015<br>
@@ -20,18 +20,6 @@ AArch64TargetHandler::<u></u>AArch64TargetHandl<br>
      : _ctx(ctx), _targetLayout(new TargetLayout<AArch64ELFType>(<u></u>ctx)),<br>
        _relocationHandler(new AArch64TargetRelocationHandler<u></u>()) {}<br>
  -static const Registry::KindStrings kindStrings[] = {<br>
-#define ELF_RELOC(name, value) LLD_KIND_STRING_ENTRY(name),<br>
-#include "llvm/Support/ELFRelocs/<u></u>AArch64.def"<br>
-#undef ELF_RELOC<br>
-  LLD_KIND_STRING_END<br>
-};<br>
-<br>
-void AArch64TargetHandler::<u></u>registerRelocationNames(<u></u>Registry &registry) {<br>
-  registry.addKindTable(<u></u>Reference::KindNamespace::ELF,<br>
-                        Reference::KindArch::AArch64, kindStrings);<br>
-}<br>
-<br>
  std::unique_ptr<Writer> AArch64TargetHandler::<u></u>getWriter() {<br>
    switch (this->_ctx.getOutputELFType()<u></u>) {<br>
    case llvm::ELF::ET_EXEC:<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/<u></u>AArch64TargetHandler.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/AArch64/<u></u>AArch64TargetHandler.h?rev=<u></u>233883&r1=233882&r2=233883&<u></u>view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/<u></u>AArch64TargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/<u></u>AArch64TargetHandler.h Wed Apr  1 23:18:54 2015<br>
@@ -24,8 +24,6 @@ class AArch64TargetHandler final : publi<br>
  public:<br>
    AArch64TargetHandler(<u></u>AArch64LinkingContext &ctx);<br>
  -  void registerRelocationNames(<u></u>Registry &registry) override;<br>
-<br>
    const AArch64TargetRelocationHandler &getRelocationHandler() const override {<br>
      return *_relocationHandler;<br>
    }<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMLinkingContext.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.cpp?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/ARM/<u></u>ARMLinkingContext.cpp?rev=<u></u>233883&r1=233882&r2=233883&<u></u>view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMLinkingContext.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMLinkingContext.cpp Wed Apr  1 23:18:54 2015<br>
@@ -11,39 +11,54 @@<br>
  #include "ARMRelocationPass.h"<br>
  #include "ARMTargetHandler.h"<br>
  -using namespace lld;<br>
-using namespace lld::elf;<br>
+namespace lld {<br>
+namespace elf {<br>
    std::unique_ptr<<u></u>ELFLinkingContext><br>
-elf::ARMLinkingContext::<u></u>create(llvm::Triple triple) {<br>
+ARMLinkingContext::create(<u></u>llvm::Triple triple) {<br>
    if (triple.getArch() == llvm::Triple::arm)<br>
-    return llvm::make_unique<elf::<u></u>ARMLinkingContext>(triple);<br>
+    return llvm::make_unique<<u></u>ARMLinkingContext>(triple);<br>
    return nullptr;<br>
  }<br>
  -elf::ARMLinkingContext::<u></u>ARMLinkingContext(llvm::Triple triple)<br>
+ARMLinkingContext::<u></u>ARMLinkingContext(llvm::Triple triple)<br>
      : ELFLinkingContext(triple, llvm::make_unique<<u></u>ARMTargetHandler>(*this)) {}<br>
  -void elf::ARMLinkingContext::<u></u>addPasses(PassManager &pm) {<br>
+void ARMLinkingContext::addPasses(<u></u>PassManager &pm) {<br>
    auto pass = createARMRelocationPass(*this)<u></u>;<br>
    if (pass)<br>
      pm.add(std::move(pass));<br>
    ELFLinkingContext::addPasses(<u></u>pm);<br>
  }<br>
  -bool elf::isARMCode(const DefinedAtom *atom) {<br>
+bool isARMCode(const DefinedAtom *atom) {<br>
    return isARMCode(atom->codeModel());<br>
  }<br>
  -bool elf::isARMCode(DefinedAtom::<u></u>CodeModel codeModel) {<br>
+bool isARMCode(DefinedAtom::<u></u>CodeModel codeModel) {<br>
    return !isThumbCode(codeModel);<br>
  }<br>
  -bool elf::isThumbCode(const DefinedAtom *atom) {<br>
+bool isThumbCode(const DefinedAtom *atom) {<br>
    return isThumbCode(atom->codeModel())<u></u>;<br>
  }<br>
  -bool elf::isThumbCode(DefinedAtom::<u></u>CodeModel codeModel) {<br>
+bool isThumbCode(DefinedAtom::<u></u>CodeModel codeModel) {<br>
    return codeModel == DefinedAtom::codeARMThumb ||<br>
           codeModel == DefinedAtom::codeARM_t;<br>
  }<br>
+<br>
+static const Registry::KindStrings kindStrings[] = {<br>
+#define ELF_RELOC(name, value) LLD_KIND_STRING_ENTRY(name),<br>
+#include "llvm/Support/ELFRelocs/ARM.<u></u>def"<br>
+#undef ELF_RELOC<br>
+  LLD_KIND_STRING_END<br>
+};<br>
+<br>
+void ARMLinkingContext::<u></u>registerRelocationNames(<u></u>Registry &registry) {<br>
+  registry.addKindTable(<u></u>Reference::KindNamespace::ELF, Reference::KindArch::ARM,<br>
+                        kindStrings);<br>
+}<br>
+<br>
+} // namespace elf<br>
+} // namespace lld<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMLinkingContext.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ARM/ARMLinkingContext.h?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/ARM/<u></u>ARMLinkingContext.h?rev=<u></u>233883&r1=233882&r2=233883&<u></u>view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMLinkingContext.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMLinkingContext.h Wed Apr  1 23:18:54 2015<br>
@@ -22,9 +22,10 @@ public:<br>
    static std::unique_ptr<<u></u>ELFLinkingContext> create(llvm::Triple);<br>
    ARMLinkingContext(llvm::<u></u>Triple);<br>
  -  bool isRelaOutputFormat() const override { return false; }<br>
-<br>
    void addPasses(PassManager &) override;<br>
+  void registerRelocationNames(<u></u>Registry &r) override;<br>
+<br>
+  bool isRelaOutputFormat() const override { return false; }<br>
      uint64_t getBaseAddress() const override {<br>
      if (_baseAddress == 0)<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMTargetHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ARM/ARMTargetHandler.cpp?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/ARM/<u></u>ARMTargetHandler.cpp?rev=<u></u>233883&r1=233882&r2=233883&<u></u>view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMTargetHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMTargetHandler.cpp Wed Apr  1 23:18:54 2015<br>
@@ -19,18 +19,6 @@ ARMTargetHandler::<u></u>ARMTargetHandler(ARMLi<br>
      : _ctx(ctx), _targetLayout(new ARMTargetLayout<ARMELFType>(<u></u>ctx)),<br>
        _relocationHandler(new ARMTargetRelocationHandler(*_<u></u>targetLayout)) {}<br>
  -static const Registry::KindStrings kindStrings[] = {<br>
-#define ELF_RELOC(name, value) LLD_KIND_STRING_ENTRY(name),<br>
-#include "llvm/Support/ELFRelocs/ARM.<u></u>def"<br>
-#undef ELF_RELOC<br>
-  LLD_KIND_STRING_END<br>
-};<br>
-<br>
-void ARMTargetHandler::<u></u>registerRelocationNames(<u></u>Registry &registry) {<br>
-  registry.addKindTable(<u></u>Reference::KindNamespace::ELF, Reference::KindArch::ARM,<br>
-                        kindStrings);<br>
-}<br>
-<br>
  std::unique_ptr<Writer> ARMTargetHandler::getWriter() {<br>
    switch (this->_ctx.getOutputELFType()<u></u>) {<br>
    case llvm::ELF::ET_EXEC:<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMTargetHandler.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ARM/ARMTargetHandler.h?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/ARM/<u></u>ARMTargetHandler.h?rev=233883&<u></u>r1=233882&r2=233883&view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMTargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMTargetHandler.h Wed Apr  1 23:18:54 2015<br>
@@ -61,8 +61,6 @@ class ARMTargetHandler final : public Ta<br>
  public:<br>
    ARMTargetHandler(<u></u>ARMLinkingContext &ctx);<br>
  -  void registerRelocationNames(<u></u>Registry &registry) override;<br>
-<br>
    const ARMTargetRelocationHandler &getRelocationHandler() const override {<br>
      return *_relocationHandler;<br>
    }<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/<u></u>HexagonLinkingContext.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/Hexagon/<u></u>HexagonLinkingContext.cpp?rev=<u></u>233883&r1=233882&r2=233883&<u></u>view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/<u></u>HexagonLinkingContext.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/<u></u>HexagonLinkingContext.cpp Wed Apr  1 23:18:54 2015<br>
@@ -10,6 +10,7 @@<br>
  #include "HexagonLinkingContext.h"<br>
  #include "HexagonTargetHandler.h"<br>
  +using namespace lld;<br>
  using namespace lld::elf;<br>
    std::unique_ptr<lld::<u></u>ELFLinkingContext><br>
@@ -22,3 +23,15 @@ HexagonLinkingContext::create(<u></u>llvm::Trip<br>
  HexagonLinkingContext::<u></u>HexagonLinkingContext(llvm::<u></u>Triple triple)<br>
      : ELFLinkingContext(triple, std::unique_ptr<TargetHandler><u></u>(<br>
                                      new HexagonTargetHandler(*this))) {}<br>
+<br>
+static const Registry::KindStrings kindStrings[] = {<br>
+#define ELF_RELOC(name, value) LLD_KIND_STRING_ENTRY(name),<br>
+#include "llvm/Support/ELFRelocs/<u></u>Hexagon.def"<br>
+#undef ELF_RELOC<br>
+  LLD_KIND_STRING_END<br>
+};<br>
+<br>
+void HexagonLinkingContext::<u></u>registerRelocationNames(<u></u>Registry &registry) {<br>
+  registry.addKindTable(<u></u>Reference::KindNamespace::ELF,<br>
+                        Reference::KindArch::Hexagon, kindStrings);<br>
+}<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/<u></u>HexagonLinkingContext.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.h?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/Hexagon/<u></u>HexagonLinkingContext.h?rev=<u></u>233883&r1=233882&r2=233883&<u></u>view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/<u></u>HexagonLinkingContext.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/<u></u>HexagonLinkingContext.h Wed Apr  1 23:18:54 2015<br>
@@ -26,6 +26,7 @@ public:<br>
    HexagonLinkingContext(llvm::<u></u>Triple triple);<br>
      void addPasses(PassManager &) override;<br>
+  void registerRelocationNames(<u></u>Registry &r) override;<br>
      bool isDynamicRelocation(const Reference &r) const override {<br>
      if (r.kindNamespace() != Reference::KindNamespace::ELF)<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/<u></u>HexagonTargetHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.cpp?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/Hexagon/<u></u>HexagonTargetHandler.cpp?rev=<u></u>233883&r1=233882&r2=233883&<u></u>view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/<u></u>HexagonTargetHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/<u></u>HexagonTargetHandler.cpp Wed Apr  1 23:18:54 2015<br>
@@ -313,15 +313,3 @@ void elf::HexagonLinkingContext::<u></u>addPass<br>
      pm.add(llvm::make_unique<<u></u>DynamicGOTPLTPass>(*this));<br>
    ELFLinkingContext::addPasses(<u></u>pm);<br>
  }<br>
-<br>
-static const Registry::KindStrings kindStrings[] = {<br>
-#define ELF_RELOC(name, value) LLD_KIND_STRING_ENTRY(name),<br>
-#include "llvm/Support/ELFRelocs/<u></u>Hexagon.def"<br>
-#undef ELF_RELOC<br>
-  LLD_KIND_STRING_END<br>
-};<br>
-<br>
-void HexagonTargetHandler::<u></u>registerRelocationNames(<u></u>Registry &registry) {<br>
-  registry.addKindTable(<u></u>Reference::KindNamespace::ELF,<br>
-                        Reference::KindArch::Hexagon, kindStrings);<br>
-}<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/<u></u>HexagonTargetHandler.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/Hexagon/<u></u>HexagonTargetHandler.h?rev=<u></u>233883&r1=233882&r2=233883&<u></u>view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/<u></u>HexagonTargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/<u></u>HexagonTargetHandler.h Wed Apr  1 23:18:54 2015<br>
@@ -100,8 +100,6 @@ class HexagonTargetHandler final : publi<br>
  public:<br>
    HexagonTargetHandler(<u></u>HexagonLinkingContext &targetInfo);<br>
  -  void registerRelocationNames(<u></u>Registry &registry) override;<br>
-<br>
    const HexagonTargetRelocationHandler &getRelocationHandler() const override {<br>
      return *_relocationHandler;<br>
    }<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/CMakeLists.txt?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/Mips/<u></u>CMakeLists.txt?rev=233883&r1=<u></u>233882&r2=233883&view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/CMakeLists.txt (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/CMakeLists.txt Wed Apr  1 23:18:54 2015<br>
@@ -4,7 +4,6 @@ add_llvm_library(<u></u>lldMipsELFTarget<br>
    MipsLinkingContext.cpp<br>
    MipsRelocationHandler.cpp<br>
    MipsRelocationPass.cpp<br>
-  MipsTargetHandler.cpp<br>
    LINK_LIBS<br>
      lldELF<br>
      lldReaderWriter<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsLinkingContext.<u></u>cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.cpp?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/Mips/<u></u>MipsLinkingContext.cpp?rev=<u></u>233883&r1=233882&r2=233883&<u></u>view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsLinkingContext.<u></u>cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsLinkingContext.<u></u>cpp Wed Apr  1 23:18:54 2015<br>
@@ -127,3 +127,23 @@ bool MipsLinkingContext::<u></u>isRelativeReloc<br>
      return false;<br>
    }<br>
  }<br>
+<br>
+const Registry::KindStrings kindStrings[] = {<br>
+#define ELF_RELOC(name, value) LLD_KIND_STRING_ENTRY(name),<br>
+#include "llvm/Support/ELFRelocs/Mips.<u></u>def"<br>
+#undef ELF_RELOC<br>
+  LLD_KIND_STRING_ENTRY(LLD_R_<u></u>MIPS_GLOBAL_GOT),<br>
+  LLD_KIND_STRING_ENTRY(LLD_R_<u></u>MIPS_32_HI16),<br>
+  LLD_KIND_STRING_ENTRY(LLD_R_<u></u>MIPS_64_HI16),<br>
+  LLD_KIND_STRING_ENTRY(LLD_R_<u></u>MIPS_GLOBAL_26),<br>
+  LLD_KIND_STRING_ENTRY(LLD_R_<u></u>MIPS_HI16),<br>
+  LLD_KIND_STRING_ENTRY(LLD_R_<u></u>MIPS_LO16),<br>
+  LLD_KIND_STRING_ENTRY(LLD_R_<u></u>MIPS_STO_PLT),<br>
+  LLD_KIND_STRING_ENTRY(LLD_R_<u></u>MICROMIPS_GLOBAL_26_S1),<br>
+  LLD_KIND_STRING_END<br>
+};<br>
+<br>
+void MipsLinkingContext::<u></u>registerRelocationNames(<u></u>Registry &registry) {<br>
+  registry.addKindTable(<u></u>Reference::KindNamespace::ELF,<br>
+                        Reference::KindArch::Mips, kindStrings);<br>
+}<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsLinkingContext.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.h?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/Mips/<u></u>MipsLinkingContext.h?rev=<u></u>233883&r1=233882&r2=233883&<u></u>view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsLinkingContext.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsLinkingContext.h Wed Apr  1 23:18:54 2015<br>
@@ -47,6 +47,7 @@ public:<br>
      uint32_t getMergedELFFlags() const;<br>
    MipsELFFlagsMerger &getELFFlagsMerger();<br>
+  void registerRelocationNames(<u></u>Registry &r) override;<br>
      // ELFLinkingContext<br>
    uint64_t getBaseAddress() const override;<br>
<br>
Removed: lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsTargetHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp?rev=233882&view=auto" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/Mips/<u></u>MipsTargetHandler.cpp?rev=<u></u>233882&view=auto</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsTargetHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsTargetHandler.cpp (removed)<br>
@@ -1,33 +0,0 @@<br>
-//===- lib/ReaderWriter/ELF/Mips/<u></u>MipsTargetHandler.cpp --------------------===//<br>
-//<br>
-//                             The LLVM Linker<br>
-//<br>
-// This file is distributed under the University of Illinois Open Source<br>
-// License. See LICENSE.TXT for details.<br>
-//<br>
-//===------------------------<u></u>------------------------------<u></u>----------------===//<br>
-<br>
-#include "MipsTargetHandler.h"<br>
-<br>
-using namespace lld;<br>
-using namespace elf;<br>
-<br>
-const Registry::KindStrings kindStrings[] = {<br>
-#define ELF_RELOC(name, value) LLD_KIND_STRING_ENTRY(name),<br>
-#include "llvm/Support/ELFRelocs/Mips.<u></u>def"<br>
-#undef ELF_RELOC<br>
-  LLD_KIND_STRING_ENTRY(LLD_R_<u></u>MIPS_GLOBAL_GOT),<br>
-  LLD_KIND_STRING_ENTRY(LLD_R_<u></u>MIPS_32_HI16),<br>
-  LLD_KIND_STRING_ENTRY(LLD_R_<u></u>MIPS_64_HI16),<br>
-  LLD_KIND_STRING_ENTRY(LLD_R_<u></u>MIPS_GLOBAL_26),<br>
-  LLD_KIND_STRING_ENTRY(LLD_R_<u></u>MIPS_HI16),<br>
-  LLD_KIND_STRING_ENTRY(LLD_R_<u></u>MIPS_LO16),<br>
-  LLD_KIND_STRING_ENTRY(LLD_R_<u></u>MIPS_STO_PLT),<br>
-  LLD_KIND_STRING_ENTRY(LLD_R_<u></u>MICROMIPS_GLOBAL_26_S1),<br>
-  LLD_KIND_STRING_END<br>
-};<br>
-<br>
-void MipsRelocationStringTable::<u></u>registerTable(Registry &registry) {<br>
-  registry.addKindTable(<u></u>Reference::KindNamespace::ELF,<br>
-                        Reference::KindArch::Mips, kindStrings);<br>
-}<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsTargetHandler.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/Mips/<u></u>MipsTargetHandler.h?rev=<u></u>233883&r1=233882&r2=233883&<u></u>view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsTargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsTargetHandler.h Wed Apr  1 23:18:54 2015<br>
@@ -90,12 +90,6 @@ public:<br>
        : RuntimeFile<ELFT>(ctx, "Mips runtime file") {}<br>
  };<br>
  -/// \brief Auxiliary class holds relocation's names table.<br>
-class MipsRelocationStringTable {<br>
-public:<br>
-  static void registerTable(Registry &registry);<br>
-};<br>
-<br>
  /// \brief TargetHandler for Mips<br>
  template <class ELFT> class MipsTargetHandler final : public TargetHandler {<br>
  public:<br>
@@ -131,10 +125,6 @@ public:<br>
      }<br>
    }<br>
  -  void registerRelocationNames(<u></u>Registry &registry) override {<br>
-    MipsRelocationStringTable::<u></u>registerTable(registry);<br>
-  }<br>
-<br>
  private:<br>
    MipsLinkingContext &_ctx;<br>
    std::unique_ptr<<u></u>MipsRuntimeFile<ELFT>> _runtimeFile;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/Reader.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Reader.cpp?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/Reader.cpp?<u></u>rev=233883&r1=233882&r2=<u></u>233883&view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/Reader.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/Reader.cpp Wed Apr  1 23:18:54 2015<br>
@@ -32,7 +32,7 @@ void Registry::<u></u>addSupportELFObjects(ELFL<br>
    add(std::move(ctx.<u></u>getTargetHandler().<u></u>getObjReader()));<br>
      // Tell registry about the relocation name to number mapping for this arch.<br>
-  ctx.getTargetHandler().<u></u>registerRelocationNames(*this)<u></u>;<br>
+  ctx.registerRelocationNames(*<u></u>this);<br>
  }<br>
    void Registry::<u></u>addSupportELFDynamicSharedObje<u></u>cts(ELFLinkingContext &ctx) {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86LinkingContext.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/X86/<u></u>X86LinkingContext.cpp?rev=<u></u>233883&r1=233882&r2=233883&<u></u>view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86LinkingContext.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86LinkingContext.cpp Wed Apr  1 23:18:54 2015<br>
@@ -14,13 +14,26 @@<br>
  #include "llvm/Support/ErrorOr.h"<br>
    using namespace lld;<br>
+using namespace lld::elf;<br>
    std::unique_ptr<<u></u>ELFLinkingContext><br>
-elf::X86LinkingContext::<u></u>create(llvm::Triple triple) {<br>
+X86LinkingContext::create(<u></u>llvm::Triple triple) {<br>
    if (triple.getArch() == llvm::Triple::x86)<br>
-    return llvm::make_unique<elf::<u></u>X86LinkingContext>(triple);<br>
+    return llvm::make_unique<<u></u>X86LinkingContext>(triple);<br>
    return nullptr;<br>
  }<br>
  -elf::X86LinkingContext::<u></u>X86LinkingContext(llvm::Triple triple)<br>
+X86LinkingContext::<u></u>X86LinkingContext(llvm::Triple triple)<br>
      : ELFLinkingContext(triple, llvm::make_unique<<u></u>X86TargetHandler>(*this)) {}<br>
+<br>
+static const Registry::KindStrings kindStrings[] = {<br>
+#define ELF_RELOC(name, value) LLD_KIND_STRING_ENTRY(name),<br>
+#include "llvm/Support/ELFRelocs/i386.<u></u>def"<br>
+#undef ELF_RELOC<br>
+  LLD_KIND_STRING_END<br>
+};<br>
+<br>
+void X86LinkingContext::<u></u>registerRelocationNames(<u></u>Registry &registry) {<br>
+  registry.addKindTable(<u></u>Reference::KindNamespace::ELF, Reference::KindArch::x86,<br>
+                        kindStrings);<br>
+}<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86LinkingContext.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.h?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/X86/<u></u>X86LinkingContext.h?rev=<u></u>233883&r1=233882&r2=233883&<u></u>view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86LinkingContext.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86LinkingContext.h Wed Apr  1 23:18:54 2015<br>
@@ -20,6 +20,7 @@ class X86LinkingContext final : public E<br>
  public:<br>
    static std::unique_ptr<<u></u>ELFLinkingContext> create(llvm::Triple);<br>
    X86LinkingContext(llvm::<u></u>Triple);<br>
+  void registerRelocationNames(<u></u>Registry &r) override;<br>
      /// \brief X86 has only two relative relocation<br>
    /// a) for supporting IFUNC relocs - R_386_IRELATIVE<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86TargetHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.cpp?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/X86/<u></u>X86TargetHandler.cpp?rev=<u></u>233883&r1=233882&r2=233883&<u></u>view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86TargetHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86TargetHandler.cpp Wed Apr  1 23:18:54 2015<br>
@@ -33,18 +33,6 @@ std::unique_ptr<Writer> X86TargetHandler<br>
    }<br>
  }<br>
  -static const Registry::KindStrings kindStrings[] = {<br>
-#define ELF_RELOC(name, value) LLD_KIND_STRING_ENTRY(name),<br>
-#include "llvm/Support/ELFRelocs/i386.<u></u>def"<br>
-#undef ELF_RELOC<br>
-  LLD_KIND_STRING_END<br>
-};<br>
-<br>
-void X86TargetHandler::<u></u>registerRelocationNames(<u></u>Registry &registry) {<br>
-  registry.addKindTable(<u></u>Reference::KindNamespace::ELF, Reference::KindArch::x86,<br>
-                        kindStrings);<br>
-}<br>
-<br>
  X86TargetHandler::<u></u>X86TargetHandler(<u></u>X86LinkingContext &ctx)<br>
      : _ctx(ctx), _targetLayout(new TargetLayout<X86ELFType>(ctx))<u></u>,<br>
        _relocationHandler(new X86TargetRelocationHandler()) {}<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86TargetHandler.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.h?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/X86/<u></u>X86TargetHandler.h?rev=233883&<u></u>r1=233882&r2=233883&view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86TargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86TargetHandler.h Wed Apr  1 23:18:54 2015<br>
@@ -24,8 +24,6 @@ class X86TargetHandler final : public Ta<br>
  public:<br>
    X86TargetHandler(<u></u>X86LinkingContext &ctx);<br>
  -  void registerRelocationNames(<u></u>Registry &registry) override;<br>
-<br>
    const X86TargetRelocationHandler &getRelocationHandler() const override {<br>
      return *_relocationHandler;<br>
    }<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_<u></u>64LinkingContext.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/X86_64/X86_<u></u>64LinkingContext.cpp?rev=<u></u>233883&r1=233882&r2=233883&<u></u>view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_<u></u>64LinkingContext.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_<u></u>64LinkingContext.cpp Wed Apr  1 23:18:54 2015<br>
@@ -12,7 +12,7 @@<br>
  #include "X86_64TargetHandler.h"<br>
    using namespace lld;<br>
-using namespace elf;<br>
+using namespace lld::elf;<br>
    X86_64LinkingContext::X86_<u></u>64LinkingContext(<br>
      llvm::Triple triple, std::unique_ptr<TargetHandler> handler)<br>
@@ -32,6 +32,19 @@ void X86_64LinkingContext::<u></u>addPasses(Pas<br>
  std::unique_ptr<<u></u>ELFLinkingContext><br>
  X86_64LinkingContext::create(<u></u>llvm::Triple triple) {<br>
    if (triple.getArch() == llvm::Triple::x86_64)<br>
-    return llvm::make_unique<elf::X86_<u></u>64LinkingContext>(triple);<br>
+    return llvm::make_unique<X86_<u></u>64LinkingContext>(triple);<br>
    return nullptr;<br>
  }<br>
+<br>
+static const Registry::KindStrings kindStrings[] = {<br>
+#define ELF_RELOC(name, value) LLD_KIND_STRING_ENTRY(name),<br>
+#include "llvm/Support/ELFRelocs/x86_<u></u>64.def"<br>
+#undef ELF_RELOC<br>
+  LLD_KIND_STRING_ENTRY(LLD_R_<u></u>X86_64_GOTRELINDEX),<br>
+  LLD_KIND_STRING_END<br>
+};<br>
+<br>
+void X86_64LinkingContext::<u></u>registerRelocationNames(<u></u>Registry &registry) {<br>
+  registry.addKindTable(<u></u>Reference::KindNamespace::ELF,<br>
+                        Reference::KindArch::x86_64, kindStrings);<br>
+}<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_<u></u>64LinkingContext.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/X86_64/X86_<u></u>64LinkingContext.h?rev=233883&<u></u>r1=233882&r2=233883&view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_<u></u>64LinkingContext.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_<u></u>64LinkingContext.h Wed Apr  1 23:18:54 2015<br>
@@ -33,6 +33,7 @@ public:<br>
    X86_64LinkingContext(llvm::<u></u>Triple);<br>
      void addPasses(PassManager &) override;<br>
+  void registerRelocationNames(<u></u>Registry &r) override;<br>
      uint64_t getBaseAddress() const override {<br>
      if (_baseAddress == 0)<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_<u></u>64TargetHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.cpp?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/X86_64/X86_<u></u>64TargetHandler.cpp?rev=<u></u>233883&r1=233882&r2=233883&<u></u>view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_<u></u>64TargetHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_<u></u>64TargetHandler.cpp Wed Apr  1 23:18:54 2015<br>
@@ -20,19 +20,6 @@ X86_64TargetHandler::X86_<u></u>64TargetHandler<br>
      : _ctx(ctx), _targetLayout(new X86_64TargetLayout(ctx)),<br>
        _relocationHandler(new X86_64TargetRelocationHandler(<u></u>*_targetLayout)) {}<br>
  -static const Registry::KindStrings kindStrings[] = {<br>
-#define ELF_RELOC(name, value) LLD_KIND_STRING_ENTRY(name),<br>
-#include "llvm/Support/ELFRelocs/x86_<u></u>64.def"<br>
-#undef ELF_RELOC<br>
-  LLD_KIND_STRING_ENTRY(LLD_R_<u></u>X86_64_GOTRELINDEX),<br>
-  LLD_KIND_STRING_END<br>
-};<br>
-<br>
-void X86_64TargetHandler::<u></u>registerRelocationNames(<u></u>Registry &registry) {<br>
-  registry.addKindTable(<u></u>Reference::KindNamespace::ELF,<br>
-                        Reference::KindArch::x86_64, kindStrings);<br>
-}<br>
-<br>
  std::unique_ptr<Writer> X86_64TargetHandler::<u></u>getWriter() {<br>
    switch (this->_ctx.getOutputELFType()<u></u>) {<br>
    case llvm::ELF::ET_EXEC:<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_<u></u>64TargetHandler.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h?rev=233883&r1=233882&r2=233883&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/X86_64/X86_<u></u>64TargetHandler.h?rev=233883&<u></u>r1=233882&r2=233883&view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_<u></u>64TargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_<u></u>64TargetHandler.h Wed Apr  1 23:18:54 2015<br>
@@ -62,8 +62,6 @@ class X86_64TargetHandler : public Targe<br>
  public:<br>
    X86_64TargetHandler(X86_<u></u>64LinkingContext &ctx);<br>
  -  void registerRelocationNames(<u></u>Registry &registry) override;<br>
-<br>
    const X86_64TargetRelocationHandler &getRelocationHandler() const override {<br>
      return *_relocationHandler;<br>
    }<br>
<br>
<br>
______________________________<u></u>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/llvm-commits</a><br>
<br>
</blockquote>
<br>
<br></div></div><span class="HOEnZb"><font color="#888888">
-- <br>
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by the Linux Foundation<br>
<br>
</font></span></blockquote></div><br></div>