<div dir="ltr">Please do not mix code cleanup (in this case sorting include files) with actual feature addition next time. Thanks!</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 17, 2014 at 10:23 PM, Shankar Easwaran <span dir="ltr"><<a href="mailto:shankarke@gmail.com" target="_blank">shankarke@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: shankare<br>
Date: Sat Oct 18 00:23:17 2014<br>
New Revision: 220129<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=220129&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=220129&view=rev</a><br>
Log:<br>
[ELF] Add Readers for all the ELF subtargets.<br>
<br>
This would permit the ELF reader to check the architecture that is being<br>
selected by the linking process.<br>
<br>
This patch also sorts the include files according to LLVM conventions.<br>
<br>
Added:<br>
    lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFFile.h<br>
    lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h<br>
      - copied, changed from r220117, lld/trunk/lib/ReaderWriter/ELF/ELFReader.h<br>
    lld/trunk/lib/ReaderWriter/ELF/X86/X86DynamicLibraryWriter.h<br>
      - copied, changed from r220117, lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h<br>
    lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFFile.h<br>
    lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFReader.h<br>
      - copied, changed from r220117, lld/trunk/lib/ReaderWriter/ELF/ELFReader.h<br>
    lld/trunk/lib/ReaderWriter/ELF/X86/X86ExecutableWriter.h<br>
    lld/trunk/lib/ReaderWriter/ELF/X86/X86RelocationHandler.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/X86/X86RelocationHandler.h<br>
    lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFFile.h<br>
    lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h<br>
      - copied, changed from r220117, lld/trunk/lib/ReaderWriter/ELF/ELFReader.h<br>
Modified:<br>
    lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h<br>
    lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ExecutableWriter.h<br>
    lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h<br>
    lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64RelocationPass.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h<br>
    lld/trunk/lib/ReaderWriter/ELF/ArrayOrderPass.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/Atoms.h<br>
    lld/trunk/lib/ReaderWriter/ELF/Chunk.h<br>
    lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h<br>
    lld/trunk/lib/ReaderWriter/ELF/DefaultTargetHandler.h<br>
    lld/trunk/lib/ReaderWriter/ELF/DynamicFile.h<br>
    lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/ELFReader.h<br>
    lld/trunk/lib/ReaderWriter/ELF/HeaderChunks.h<br>
    lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonDynamicLibraryWriter.h<br>
    lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonExecutableWriter.h<br>
    lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.h<br>
    lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonRelocationHandler.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h<br>
    lld/trunk/lib/ReaderWriter/ELF/Layout.h<br>
    lld/trunk/lib/ReaderWriter/ELF/Mips/MipsCtorsOrderPass.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h<br>
    lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h<br>
    lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationPass.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h<br>
    lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h<br>
    lld/trunk/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.h<br>
    lld/trunk/lib/ReaderWriter/ELF/Reader.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h<br>
    lld/trunk/lib/ReaderWriter/ELF/SegmentChunks.h<br>
    lld/trunk/lib/ReaderWriter/ELF/TargetHandler.h<br>
    lld/trunk/lib/ReaderWriter/ELF/TargetLayout.h<br>
    lld/trunk/lib/ReaderWriter/ELF/Targets.h<br>
    lld/trunk/lib/ReaderWriter/ELF/Writer.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/X86/CMakeLists.txt<br>
    lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.h<br>
    lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.h<br>
    lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h<br>
    lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.h<br>
    lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationPass.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h<br>
    lld/trunk/test/elf/symbols.test<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h Sat Oct 18 00:23:17 2014<br>
@@ -9,8 +9,8 @@<br>
 #ifndef AARCH64_DYNAMIC_LIBRARY_WRITER_H<br>
 #define AARCH64_DYNAMIC_LIBRARY_WRITER_H<br>
<br>
-#include "DynamicLibraryWriter.h"<br>
 #include "AArch64LinkingContext.h"<br>
+#include "DynamicLibraryWriter.h"<br>
<br>
 namespace lld {<br>
 namespace elf {<br>
<br>
Added: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFFile.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFFile.h?rev=220129&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFFile.h?rev=220129&view=auto</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFFile.h (added)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFFile.h Sat Oct 18 00:23:17 2014<br>
@@ -0,0 +1,73 @@<br>
+//===- lib/ReaderWriter/ELF/AArch64/AArch64ELFFile.h ----------------------===//<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>
+//===----------------------------------------------------------------------===//<br>
+<br>
+#ifndef LLD_READER_WRITER_ELF_AARCH64_AARCH64_ELF_FILE_H<br>
+#define LLD_READER_WRITER_ELF_AARCH64_AARCH64_ELF_FILE_H<br>
+<br>
+#include "ELFReader.h"<br>
+<br>
+namespace lld {<br>
+namespace elf {<br>
+<br>
+class AArch64LinkingContext;<br>
+<br>
+template <class ELFT> class AArch64ELFFile : public ELFFile<ELFT> {<br>
+public:<br>
+  AArch64ELFFile(StringRef name, bool atomizeStrings)<br>
+      : ELFFile<ELFT>(name, atomizeStrings) {}<br>
+<br>
+  AArch64ELFFile(std::unique_ptr<MemoryBuffer> mb, bool atomizeStrings,<br>
+                 std::error_code &ec)<br>
+      : ELFFile<ELFT>(std::move(mb), atomizeStrings, ec) {}<br>
+<br>
+  static ErrorOr<std::unique_ptr<AArch64ELFFile>><br>
+  create(std::unique_ptr<MemoryBuffer> mb, bool atomizeStrings) {<br>
+    std::error_code ec;<br>
+    std::unique_ptr<AArch64ELFFile<ELFT>> file(<br>
+        new AArch64ELFFile<ELFT>(mb->getBufferIdentifier(), atomizeStrings));<br>
+<br>
+    file->_objFile.reset(<br>
+        new llvm::object::ELFFile<ELFT>(mb.release()->getBuffer(), ec));<br>
+<br>
+    if (ec)<br>
+      return ec;<br>
+<br>
+    // Read input sections from the input file that need to be converted to<br>
+    // atoms<br>
+    if ((ec = file->createAtomizableSections()))<br>
+      return ec;<br>
+<br>
+    // For mergeable strings, we would need to split the section into various<br>
+    // atoms<br>
+    if ((ec = file->createMergeableAtoms()))<br>
+      return ec;<br>
+<br>
+    // Create the necessary symbols that are part of the section that we<br>
+    // created in createAtomizableSections function<br>
+    if ((ec = file->createSymbolsFromAtomizableSections()))<br>
+      return ec;<br>
+<br>
+    // Create the appropriate atoms from the file<br>
+    if ((ec = file->createAtoms()))<br>
+      return ec;<br>
+<br>
+    return std::move(file);<br>
+  }<br>
+};<br>
+<br>
+template <class ELFT> class AArch64DynamicFile : public DynamicFile<ELFT> {<br>
+public:<br>
+  AArch64DynamicFile(const AArch64LinkingContext &context, StringRef name)<br>
+      : DynamicFile<ELFT>(context, name) {}<br>
+};<br>
+<br>
+} // elf<br>
+} // lld<br>
+<br>
+#endif // LLD_READER_WRITER_ELF_AARCH64_AARCH64_ELF_FILE_H<br>
<br>
Copied: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h (from r220117, lld/trunk/lib/ReaderWriter/ELF/ELFReader.h)<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h?p2=lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h&p1=lld/trunk/lib/ReaderWriter/ELF/ELFReader.h&r1=220117&r2=220129&rev=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h?p2=lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h&p1=lld/trunk/lib/ReaderWriter/ELF/ELFReader.h&r1=220117&r2=220129&rev=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/ELFReader.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h Sat Oct 18 00:23:17 2014<br>
@@ -1,4 +1,4 @@<br>
-//===- lib/ReaderWriter/ELF/ELFReader.h -----------------------------------===//<br>
+//===- lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h --------------------===//<br>
 //<br>
 //                             The LLVM Linker<br>
 //<br>
@@ -7,53 +7,48 @@<br>
 //<br>
 //===----------------------------------------------------------------------===//<br>
<br>
-#ifndef LLD_READER_WRITER_ELF_READER_H<br>
-#define LLD_READER_WRITER_ELF_READER_H<br>
+#ifndef LLD_READER_WRITER_AARCH64_AARCH64_ELF_READER_H<br>
+#define LLD_READER_WRITER_AARCH64_AARCH64_ELF_READER_H<br>
<br>
-#include "CreateELF.h"<br>
-#include "DynamicFile.h"<br>
-#include "ELFFile.h"<br>
-<br>
-#include "lld/ReaderWriter/Reader.h"<br>
+#include "AArch64ELFFile.h"<br>
+#include "ELFReader.h"<br>
<br>
 namespace lld {<br>
 namespace elf {<br>
<br>
-struct DynamicFileCreateELFTraits {<br>
+struct AArch64DynamicFileCreateELFTraits {<br>
   typedef llvm::ErrorOr<std::unique_ptr<lld::SharedLibraryFile>> result_type;<br>
<br>
   template <class ELFT><br>
   static result_type create(std::unique_ptr<llvm::MemoryBuffer> mb,<br>
                             bool useUndefines) {<br>
-    return lld::elf::DynamicFile<ELFT>::create(std::move(mb), useUndefines);<br>
+    return lld::elf::AArch64DynamicFile<ELFT>::create(std::move(mb),<br>
+                                                      useUndefines);<br>
   }<br>
 };<br>
<br>
-struct ELFFileCreateELFTraits {<br>
+struct AArch64ELFFileCreateELFTraits {<br>
   typedef llvm::ErrorOr<std::unique_ptr<lld::File>> result_type;<br>
<br>
   template <class ELFT><br>
   static result_type create(std::unique_ptr<llvm::MemoryBuffer> mb,<br>
                             bool atomizeStrings) {<br>
-    return lld::elf::ELFFile<ELFT>::create(std::move(mb), atomizeStrings);<br>
+    return lld::elf::AArch64ELFFile<ELFT>::create(std::move(mb),<br>
+                                                  atomizeStrings);<br>
   }<br>
 };<br>
<br>
-class ELFObjectReader : public Reader {<br>
+class AArch64ELFObjectReader : public ELFObjectReader {<br>
 public:<br>
-  ELFObjectReader(bool atomizeStrings) : _atomizeStrings(atomizeStrings) {}<br>
-<br>
-  bool canParse(file_magic magic, StringRef,<br>
-                const MemoryBuffer &) const override {<br>
-    return (magic == llvm::sys::fs::file_magic::elf_relocatable);<br>
-  }<br>
+  AArch64ELFObjectReader(bool atomizeStrings)<br>
+      : ELFObjectReader(atomizeStrings) {}<br>
<br>
   std::error_code<br>
   parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,<br>
             std::vector<std::unique_ptr<File>> &result) const override {<br>
     std::size_t maxAlignment =<br>
         1ULL << llvm::countTrailingZeros(uintptr_t(mb->getBufferStart()));<br>
-    auto f = createELF<ELFFileCreateELFTraits>(<br>
+    auto f = createELF<AArch64ELFFileCreateELFTraits>(<br>
         llvm::object::getElfArchType(mb->getBuffer()), maxAlignment,<br>
         std::move(mb), _atomizeStrings);<br>
     if (std::error_code ec = f.getError())<br>
@@ -61,26 +56,18 @@ public:<br>
     result.push_back(std::move(*f));<br>
     return std::error_code();<br>
   }<br>
-<br>
-protected:<br>
-  bool _atomizeStrings;<br>
 };<br>
<br>
-class ELFDSOReader : public Reader {<br>
+class AArch64ELFDSOReader : public ELFDSOReader {<br>
 public:<br>
-  ELFDSOReader(bool useUndefines) : _useUndefines(useUndefines) {}<br>
-<br>
-  bool canParse(file_magic magic, StringRef,<br>
-                const MemoryBuffer &) const override {<br>
-    return (magic == llvm::sys::fs::file_magic::elf_shared_object);<br>
-  }<br>
+  AArch64ELFDSOReader(bool useUndefines) : ELFDSOReader(useUndefines) {}<br>
<br>
   std::error_code<br>
   parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,<br>
             std::vector<std::unique_ptr<File>> &result) const override {<br>
     std::size_t maxAlignment =<br>
         1ULL << llvm::countTrailingZeros(uintptr_t(mb->getBufferStart()));<br>
-    auto f = createELF<DynamicFileCreateELFTraits>(<br>
+    auto f = createELF<AArch64DynamicFileCreateELFTraits>(<br>
         llvm::object::getElfArchType(mb->getBuffer()), maxAlignment,<br>
         std::move(mb), _useUndefines);<br>
     if (std::error_code ec = f.getError())<br>
@@ -88,12 +75,9 @@ public:<br>
     result.push_back(std::move(*f));<br>
     return std::error_code();<br>
   }<br>
-<br>
-protected:<br>
-  bool _useUndefines;<br>
 };<br>
<br>
 } // namespace elf<br>
 } // namespace lld<br>
<br>
-#endif // LLD_READER_WRITER_ELF_READER_H<br>
+#endif // LLD_READER_WRITER_AARCH64_AARCH64_ELF_READER_H<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ExecutableWriter.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ExecutableWriter.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ExecutableWriter.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ExecutableWriter.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ExecutableWriter.h Sat Oct 18 00:23:17 2014<br>
@@ -9,8 +9,8 @@<br>
 #ifndef AARCH64_EXECUTABLE_WRITER_H<br>
 #define AARCH64_EXECUTABLE_WRITER_H<br>
<br>
-#include "ExecutableWriter.h"<br>
 #include "AArch64LinkingContext.h"<br>
+#include "ExecutableWriter.h"<br>
<br>
 namespace lld {<br>
 namespace elf {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp Sat Oct 18 00:23:17 2014<br>
@@ -8,16 +8,13 @@<br>
 //===----------------------------------------------------------------------===//<br>
<br>
 #include "AArch64LinkingContext.h"<br>
-<br>
+#include "AArch64RelocationPass.h"<br>
+#include "Atoms.h"<br>
 #include "lld/Core/File.h"<br>
 #include "lld/Core/Instrumentation.h"<br>
-<br>
 #include "llvm/ADT/ArrayRef.h"<br>
 #include "llvm/ADT/StringSwitch.h"<br>
<br>
-#include "Atoms.h"<br>
-#include "AArch64RelocationPass.h"<br>
-<br>
 using namespace lld;<br>
 using namespace lld::elf;<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h Sat Oct 18 00:23:17 2014<br>
@@ -11,9 +11,7 @@<br>
 #define LLD_READER_WRITER_ELF_AARCH64_AARCH64_LINKING_CONTEXT_H<br>
<br>
 #include "AArch64TargetHandler.h"<br>
-<br>
 #include "lld/ReaderWriter/ELFLinkingContext.h"<br>
-<br>
 #include "llvm/Object/ELF.h"<br>
 #include "llvm/Support/ELF.h"<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64RelocationPass.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64RelocationPass.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64RelocationPass.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64RelocationPass.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64RelocationPass.cpp Sat Oct 18 00:23:17 2014<br>
@@ -17,13 +17,10 @@<br>
 //===----------------------------------------------------------------------===//<br>
<br>
 #include "AArch64RelocationPass.h"<br>
-<br>
+#include "AArch64LinkingContext.h"<br>
+#include "Atoms.h"<br>
 #include "lld/Core/Simple.h"<br>
-<br>
 #include "llvm/ADT/DenseMap.h"<br>
-<br>
-#include "Atoms.h"<br>
-#include "AArch64LinkingContext.h"<br>
 #include "llvm/Support/Debug.h"<br>
<br>
 using namespace lld;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.cpp Sat Oct 18 00:23:17 2014<br>
@@ -8,10 +8,10 @@<br>
 //===----------------------------------------------------------------------===//<br>
<br>
 #include "Atoms.h"<br>
-#include "AArch64ExecutableWriter.h"<br>
 #include "AArch64DynamicLibraryWriter.h"<br>
-#include "AArch64TargetHandler.h"<br>
+#include "AArch64ExecutableWriter.h"<br>
 #include "AArch64LinkingContext.h"<br>
+#include "AArch64TargetHandler.h"<br>
<br>
 using namespace lld;<br>
 using namespace elf;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h Sat Oct 18 00:23:17 2014<br>
@@ -10,11 +10,11 @@<br>
 #ifndef LLD_READER_WRITER_ELF_AARCH64_AARCH64_TARGET_HANDLER_H<br>
 #define LLD_READER_WRITER_ELF_AARCH64_AARCH64_TARGET_HANDLER_H<br>
<br>
-#include "DefaultTargetHandler.h"<br>
-#include "ELFFile.h"<br>
+#include "AArch64ELFFile.h"<br>
+#include "AArch64ELFReader.h"<br>
 #include "AArch64RelocationHandler.h"<br>
+#include "DefaultTargetHandler.h"<br>
 #include "TargetLayout.h"<br>
-<br>
 #include "lld/Core/Simple.h"<br>
<br>
 namespace lld {<br>
@@ -42,6 +42,14 @@ public:<br>
     return *(_AArch64RelocationHandler.get());<br>
   }<br>
<br>
+  std::unique_ptr<Reader> getObjReader(bool atomizeStrings) override {<br>
+    return std::unique_ptr<Reader>(new AArch64ELFObjectReader(atomizeStrings));<br>
+  }<br>
+<br>
+  std::unique_ptr<Reader> getDSOReader(bool useShlibUndefines) override {<br>
+    return std::unique_ptr<Reader>(new AArch64ELFDSOReader(useShlibUndefines));<br>
+  }<br>
+<br>
   std::unique_ptr<Writer> getWriter() override;<br>
<br>
 private:<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/ArrayOrderPass.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ArrayOrderPass.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ArrayOrderPass.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/ArrayOrderPass.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/ArrayOrderPass.cpp Sat Oct 18 00:23:17 2014<br>
@@ -8,7 +8,6 @@<br>
 //===----------------------------------------------------------------------===//<br>
<br>
 #include "ArrayOrderPass.h"<br>
-<br>
 #include <algorithm><br>
 #include <limits><br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Atoms.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Atoms.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Atoms.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Atoms.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Atoms.h Sat Oct 18 00:23:17 2014<br>
@@ -11,13 +11,10 @@<br>
 #define LLD_READER_WRITER_ELF_ATOMS_H<br>
<br>
 #include "TargetHandler.h"<br>
-<br>
 #include "lld/Core/LLVM.h"<br>
 #include "lld/Core/Simple.h"<br>
-<br>
 #include "llvm/ADT/ArrayRef.h"<br>
 #include "llvm/ADT/StringSwitch.h"<br>
-<br>
 #include <memory><br>
 #include <vector><br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Chunk.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Chunk.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Chunk.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Chunk.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Chunk.h Sat Oct 18 00:23:17 2014<br>
@@ -11,7 +11,6 @@<br>
 #define LLD_READER_WRITER_ELF_CHUNKS_H<br>
<br>
 #include "lld/Core/LLVM.h"<br>
-<br>
 #include "llvm/ADT/StringRef.h"<br>
 #include "llvm/Object/ELF.h"<br>
 #include "llvm/Support/Allocator.h"<br>
@@ -19,7 +18,6 @@<br>
 #include "llvm/Support/ELF.h"<br>
 #include "llvm/Support/ErrorHandling.h"<br>
 #include "llvm/Support/FileOutputBuffer.h"<br>
-<br>
 #include <memory><br>
<br>
 namespace lld {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h Sat Oct 18 00:23:17 2014<br>
@@ -16,10 +16,8 @@<br>
 #include "Layout.h"<br>
 #include "SectionChunks.h"<br>
 #include "SegmentChunks.h"<br>
-<br>
 #include "lld/Core/Instrumentation.h"<br>
 #include "lld/Core/STDExtras.h"<br>
-<br>
 #include "llvm/ADT/ArrayRef.h"<br>
 #include "llvm/ADT/DenseMap.h"<br>
 #include "llvm/ADT/DenseSet.h"<br>
@@ -31,7 +29,6 @@<br>
 #include "llvm/ADT/StringSwitch.h"<br>
 #include "llvm/Support/Errc.h"<br>
 #include "llvm/Support/Format.h"<br>
-<br>
 #include <map><br>
 #include <memory><br>
 #include <tuple><br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/DefaultTargetHandler.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/DefaultTargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/DefaultTargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/DefaultTargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/DefaultTargetHandler.h Sat Oct 18 00:23:17 2014<br>
@@ -11,13 +11,11 @@<br>
 #define LLD_READER_WRITER_ELF_DEFAULT_TARGET_HANDLER_H<br>
<br>
 #include "DefaultLayout.h"<br>
-#include "TargetHandler.h"<br>
-#include "ELFReader.h"<br>
 #include "DynamicLibraryWriter.h"<br>
+#include "ELFReader.h"<br>
 #include "ExecutableWriter.h"<br>
-<br>
+#include "TargetHandler.h"<br>
 #include "lld/ReaderWriter/ELFLinkingContext.h"<br>
-<br>
 #include "llvm/ADT/Triple.h"<br>
 #include "llvm/Support/ELF.h"<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/DynamicFile.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/DynamicFile.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/DynamicFile.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/DynamicFile.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/DynamicFile.h Sat Oct 18 00:23:17 2014<br>
@@ -11,13 +11,10 @@<br>
 #define LLD_READER_WRITER_ELF_DYNAMIC_FILE_H<br>
<br>
 #include "Atoms.h"<br>
-<br>
 #include "lld/Core/SharedLibraryFile.h"<br>
 #include "lld/ReaderWriter/ELFLinkingContext.h"<br>
-<br>
 #include "llvm/Object/ELF.h"<br>
 #include "llvm/Support/Path.h"<br>
-<br>
 #include <unordered_map><br>
<br>
 namespace lld {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp Sat Oct 18 00:23:17 2014<br>
@@ -8,19 +8,16 @@<br>
 //===----------------------------------------------------------------------===//<br>
<br>
 #include "lld/ReaderWriter/ELFLinkingContext.h"<br>
-<br>
 #include "ArrayOrderPass.h"<br>
 #include "ELFFile.h"<br>
 #include "TargetHandler.h"<br>
 #include "Targets.h"<br>
-<br>
 #include "lld/Core/Instrumentation.h"<br>
 #include "lld/Passes/LayoutPass.h"<br>
 #include "lld/Passes/RoundTripYAMLPass.h"<br>
-<br>
 #include "llvm/ADT/Triple.h"<br>
-#include "llvm/Support/Errc.h"<br>
 #include "llvm/Support/ELF.h"<br>
+#include "llvm/Support/Errc.h"<br>
 #include "llvm/Support/FileSystem.h"<br>
 #include "llvm/Support/Path.h"<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/ELFReader.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ELFReader.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ELFReader.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/ELFReader.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/ELFReader.h Sat Oct 18 00:23:17 2014<br>
@@ -13,7 +13,6 @@<br>
 #include "CreateELF.h"<br>
 #include "DynamicFile.h"<br>
 #include "ELFFile.h"<br>
-<br>
 #include "lld/ReaderWriter/Reader.h"<br>
<br>
 namespace lld {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/HeaderChunks.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/HeaderChunks.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/HeaderChunks.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/HeaderChunks.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/HeaderChunks.h Sat Oct 18 00:23:17 2014<br>
@@ -11,7 +11,6 @@<br>
 #define LLD_READER_WRITER_ELF_HEADER_CHUNKS_H<br>
<br>
 #include "SegmentChunks.h"<br>
-<br>
 #include "llvm/Object/ELF.h"<br>
 #include "llvm/Support/Allocator.h"<br>
 #include "llvm/Support/Debug.h"<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonDynamicLibraryWriter.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonDynamicLibraryWriter.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonDynamicLibraryWriter.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonDynamicLibraryWriter.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonDynamicLibraryWriter.h Sat Oct 18 00:23:17 2014<br>
@@ -9,9 +9,9 @@<br>
 #ifndef HEXAGON_DYNAMIC_LIBRARY_WRITER_H<br>
 #define HEXAGON_DYNAMIC_LIBRARY_WRITER_H<br>
<br>
+#include "DynamicLibraryWriter.h"<br>
 #include "HexagonExecutableAtoms.h"<br>
 #include "HexagonLinkingContext.h"<br>
-#include "DynamicLibraryWriter.h"<br>
<br>
 namespace lld {<br>
 namespace elf {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonExecutableWriter.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonExecutableWriter.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonExecutableWriter.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonExecutableWriter.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonExecutableWriter.h Sat Oct 18 00:23:17 2014<br>
@@ -9,10 +9,10 @@<br>
 #ifndef HEXAGON_EXECUTABLE_WRITER_H<br>
 #define HEXAGON_EXECUTABLE_WRITER_H<br>
<br>
+#include "ExecutableWriter.h"<br>
+#include "HexagonELFWriters.h"<br>
 #include "HexagonExecutableAtoms.h"<br>
 #include "HexagonLinkingContext.h"<br>
-#include "HexagonELFWriters.h"<br>
-#include "ExecutableWriter.h"<br>
<br>
 namespace lld {<br>
 namespace elf {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp Sat Oct 18 00:23:17 2014<br>
@@ -10,12 +10,10 @@<br>
 #include "Atoms.h"<br>
 #include "HexagonLinkingContext.h"<br>
 #include "HexagonTargetHandler.h"<br>
-<br>
 #include "lld/Core/File.h"<br>
 #include "lld/Core/Pass.h"<br>
 #include "lld/Core/PassManager.h"<br>
 #include "lld/Core/Simple.h"<br>
-<br>
 #include "llvm/ADT/ArrayRef.h"<br>
 #include "llvm/ADT/DenseMap.h"<br>
 #include "llvm/ADT/StringSwitch.h"<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.h Sat Oct 18 00:23:17 2014<br>
@@ -11,7 +11,6 @@<br>
 #define LLD_READER_WRITER_ELF_HEXAGON_HEXAGON_LINKING_CONTEXT_H<br>
<br>
 #include "lld/ReaderWriter/ELFLinkingContext.h"<br>
-<br>
 #include "llvm/Object/ELF.h"<br>
 #include "llvm/Support/ELF.h"<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonRelocationHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonRelocationHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonRelocationHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonRelocationHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonRelocationHandler.cpp Sat Oct 18 00:23:17 2014<br>
@@ -9,9 +9,8 @@<br>
<br>
 #include "HexagonTargetHandler.h"<br>
 #include "HexagonLinkingContext.h"<br>
-#include "HexagonRelocationHandler.h"<br>
 #include "HexagonRelocationFunctions.h"<br>
-<br>
+#include "HexagonRelocationHandler.h"<br>
<br>
 using namespace lld;<br>
 using namespace elf;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.cpp Sat Oct 18 00:23:17 2014<br>
@@ -9,8 +9,8 @@<br>
<br>
 #include "HexagonExecutableWriter.h"<br>
 #include "HexagonDynamicLibraryWriter.h"<br>
-#include "HexagonTargetHandler.h"<br>
 #include "HexagonLinkingContext.h"<br>
+#include "HexagonTargetHandler.h"<br>
<br>
 using namespace lld;<br>
 using namespace elf;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h Sat Oct 18 00:23:17 2014<br>
@@ -11,11 +11,11 @@<br>
 #define HEXAGON_TARGET_HANDLER_H<br>
<br>
 #include "DefaultTargetHandler.h"<br>
+#include "HexagonELFReader.h"<br>
 #include "HexagonExecutableAtoms.h"<br>
 #include "HexagonRelocationHandler.h"<br>
 #include "HexagonSectionChunks.h"<br>
 #include "TargetLayout.h"<br>
-#include "HexagonELFReader.h"<br>
<br>
 namespace lld {<br>
 namespace elf {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Layout.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Layout.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Layout.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Layout.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Layout.h Sat Oct 18 00:23:17 2014<br>
@@ -12,7 +12,6 @@<br>
<br>
 #include "lld/Core/DefinedAtom.h"<br>
 #include "lld/ReaderWriter/AtomLayout.h"<br>
-<br>
 #include "llvm/ADT/StringRef.h"<br>
 #include "llvm/Object/ELF.h"<br>
 #include "llvm/Support/Allocator.h"<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsCtorsOrderPass.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsCtorsOrderPass.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsCtorsOrderPass.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsCtorsOrderPass.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsCtorsOrderPass.cpp Sat Oct 18 00:23:17 2014<br>
@@ -8,7 +8,6 @@<br>
 //===----------------------------------------------------------------------===//<br>
<br>
 #include "MipsCtorsOrderPass.h"<br>
-<br>
 #include <algorithm><br>
 #include <climits><br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h Sat Oct 18 00:23:17 2014<br>
@@ -17,6 +17,7 @@<br>
 namespace lld {<br>
 namespace elf {<br>
<br>
+template <typename ELFT> class MipsDynamicSymbolTable;<br>
 template <typename ELFT> class MipsTargetLayout;<br>
<br>
 template <class ELFT><br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h Sat Oct 18 00:23:17 2014<br>
@@ -10,11 +10,14 @@<br>
 #define LLD_READER_WRITER_ELF_MIPS_MIPS_ELF_WRITERS_H<br>
<br>
 #include "MipsLinkingContext.h"<br>
+<br>
 #include "OutputELFWriter.h"<br>
<br>
 namespace lld {<br>
 namespace elf {<br>
<br>
+template <class ELFT> class MipsRuntimeFile;<br>
+<br>
 template <class ELFT> class MipsTargetLayout;<br>
<br>
 template <typename ELFT> class MipsELFWriter {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp Sat Oct 18 00:23:17 2014<br>
@@ -10,7 +10,6 @@<br>
 #include "MipsTargetHandler.h"<br>
 #include "MipsLinkingContext.h"<br>
 #include "MipsRelocationHandler.h"<br>
-<br>
 #include "lld/ReaderWriter/RelocationHelperFunctions.h"<br>
<br>
 using namespace lld;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationPass.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationPass.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationPass.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationPass.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationPass.cpp Sat Oct 18 00:23:17 2014<br>
@@ -11,7 +11,6 @@<br>
 #include "MipsLinkingContext.h"<br>
 #include "MipsRelocationPass.h"<br>
 #include "MipsTargetHandler.h"<br>
-<br>
 #include "llvm/ADT/DenseSet.h"<br>
<br>
 using namespace lld;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp Sat Oct 18 00:23:17 2014<br>
@@ -8,10 +8,10 @@<br>
 //===----------------------------------------------------------------------===//<br>
<br>
 #include "ELFFile.h"<br>
+#include "MipsDynamicLibraryWriter.h"<br>
+#include "MipsExecutableWriter.h"<br>
 #include "MipsLinkingContext.h"<br>
 #include "MipsTargetHandler.h"<br>
-#include "MipsExecutableWriter.h"<br>
-#include "MipsDynamicLibraryWriter.h"<br>
<br>
 using namespace lld;<br>
 using namespace elf;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h Sat Oct 18 00:23:17 2014<br>
@@ -15,7 +15,6 @@<br>
 #include "MipsRelocationHandler.h"<br>
 #include "MipsSectionChunks.h"<br>
 #include "TargetLayout.h"<br>
-<br>
 #include "llvm/ADT/DenseSet.h"<br>
<br>
 namespace lld {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h Sat Oct 18 00:23:17 2014<br>
@@ -12,12 +12,10 @@<br>
 #include "DefaultLayout.h"<br>
 #include "ELFFile.h"<br>
 #include "TargetLayout.h"<br>
-<br>
 #include "lld/Core/Instrumentation.h"<br>
 #include "lld/Core/Parallel.h"<br>
 #include "lld/ReaderWriter/ELFLinkingContext.h"<br>
 #include "lld/ReaderWriter/Writer.h"<br>
-<br>
 #include "llvm/ADT/StringSet.h"<br>
 #include "llvm/Support/Path.h"<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.cpp Sat Oct 18 00:23:17 2014<br>
@@ -8,9 +8,7 @@<br>
 //===----------------------------------------------------------------------===//<br>
<br>
 #include "PPCLinkingContext.h"<br>
-<br>
 #include "lld/Core/LLVM.h"<br>
-<br>
 #include "llvm/ADT/StringSwitch.h"<br>
 #include "llvm/Support/ErrorOr.h"<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.h Sat Oct 18 00:23:17 2014<br>
@@ -11,9 +11,7 @@<br>
 #define LLD_READER_WRITER_ELF_PPC_PPC_LINKING_CONTEXT_H<br>
<br>
 #include "PPCTargetHandler.h"<br>
-<br>
 #include "lld/ReaderWriter/ELFLinkingContext.h"<br>
-<br>
 #include "llvm/Object/ELF.h"<br>
 #include "llvm/Support/ELF.h"<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Reader.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Reader.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Reader.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Reader.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Reader.cpp Sat Oct 18 00:23:17 2014<br>
@@ -14,7 +14,6 @@<br>
 //===----------------------------------------------------------------------===//<br>
<br>
 #include "ELFReader.h"<br>
-<br>
 #include <map><br>
 #include <vector><br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h Sat Oct 18 00:23:17 2014<br>
@@ -14,11 +14,9 @@<br>
 #include "Layout.h"<br>
 #include "TargetHandler.h"<br>
 #include "Writer.h"<br>
-<br>
 #include "lld/Core/DefinedAtom.h"<br>
 #include "lld/Core/Parallel.h"<br>
 #include "lld/Core/range.h"<br>
-<br>
 #include "llvm/ADT/ArrayRef.h"<br>
 #include "llvm/ADT/DenseMap.h"<br>
 #include "llvm/ADT/StringExtras.h"<br>
@@ -29,7 +27,6 @@<br>
 #include "llvm/Support/ELF.h"<br>
 #include "llvm/Support/ErrorHandling.h"<br>
 #include "llvm/Support/FileOutputBuffer.h"<br>
-<br>
 #include <memory><br>
<br>
 namespace lld {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/SegmentChunks.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/SegmentChunks.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/SegmentChunks.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/SegmentChunks.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/SegmentChunks.h Sat Oct 18 00:23:17 2014<br>
@@ -14,10 +14,8 @@<br>
 #include "Layout.h"<br>
 #include "SectionChunks.h"<br>
 #include "Writer.h"<br>
-<br>
 #include "lld/Core/range.h"<br>
 #include "lld/ReaderWriter/Writer.h"<br>
-<br>
 #include "llvm/ADT/ArrayRef.h"<br>
 #include "llvm/ADT/StringRef.h"<br>
 #include "llvm/Object/ELF.h"<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/TargetHandler.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/TargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/TargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/TargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/TargetHandler.h Sat Oct 18 00:23:17 2014<br>
@@ -17,15 +17,12 @@<br>
 #define LLD_READER_WRITER_ELF_TARGET_HANDLER_H<br>
<br>
 #include "Layout.h"<br>
-<br>
 #include "lld/Core/LLVM.h"<br>
 #include "lld/Core/LinkingContext.h"<br>
 #include "lld/Core/STDExtras.h"<br>
 #include "lld/ReaderWriter/ELFLinkingContext.h"<br>
-<br>
 #include "llvm/ADT/Hashing.h"<br>
 #include "llvm/Support/FileOutputBuffer.h"<br>
-<br>
 #include <memory><br>
 #include <vector><br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/TargetLayout.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/TargetLayout.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/TargetLayout.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/TargetLayout.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/TargetLayout.h Sat Oct 18 00:23:17 2014<br>
@@ -11,7 +11,6 @@<br>
 #define LLD_READER_WRITER_ELF_TARGET_LAYOUT_H<br>
<br>
 #include "DefaultLayout.h"<br>
-<br>
 #include "lld/Core/LLVM.h"<br>
<br>
 namespace lld {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Targets.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Targets.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Targets.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Targets.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Targets.h Sat Oct 18 00:23:17 2014<br>
@@ -10,11 +10,11 @@<br>
 #ifndef LLD_READER_WRITER_ELF_TARGETS_H<br>
 #define LLD_READER_WRITER_ELF_TARGETS_H<br>
<br>
+#include "AArch64/AArch64Target.h"<br>
 #include "Hexagon/HexagonTarget.h"<br>
 #include "Mips/MipsTarget.h"<br>
 #include "PPC/PPCTarget.h"<br>
 #include "X86/X86Target.h"<br>
 #include "X86_64/X86_64Target.h"<br>
-#include "AArch64/AArch64Target.h"<br>
<br>
 #endif<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Writer.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Writer.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Writer.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Writer.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Writer.cpp Sat Oct 18 00:23:17 2014<br>
@@ -8,7 +8,6 @@<br>
 //===----------------------------------------------------------------------===//<br>
<br>
 #include "lld/ReaderWriter/Writer.h"<br>
-<br>
 #include "DynamicLibraryWriter.h"<br>
 #include "ExecutableWriter.h"<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/X86/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/CMakeLists.txt?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/CMakeLists.txt?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86/CMakeLists.txt (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86/CMakeLists.txt Sat Oct 18 00:23:17 2014<br>
@@ -1,6 +1,7 @@<br>
 add_lld_library(lldX86ELFTarget<br>
   X86LinkingContext.cpp<br>
   X86TargetHandler.cpp<br>
+  X86RelocationHandler.cpp<br>
   )<br>
<br>
 target_link_libraries(lldX86ELFTarget ${cmake_2_8_12_INTERFACE}<br>
<br>
Copied: lld/trunk/lib/ReaderWriter/ELF/X86/X86DynamicLibraryWriter.h (from r220117, lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h)<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86DynamicLibraryWriter.h?p2=lld/trunk/lib/ReaderWriter/ELF/X86/X86DynamicLibraryWriter.h&p1=lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h&r1=220117&r2=220129&rev=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86DynamicLibraryWriter.h?p2=lld/trunk/lib/ReaderWriter/ELF/X86/X86DynamicLibraryWriter.h&p1=lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h&r1=220117&r2=220129&rev=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86DynamicLibraryWriter.h Sat Oct 18 00:23:17 2014<br>
@@ -1,4 +1,4 @@<br>
-//===- lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h ---------===//<br>
+//===- lib/ReaderWriter/ELF/X86/X86DynamicLibraryWriter.h -----------------===//<br>
 //<br>
 //                             The LLVM Linker<br>
 //<br>
@@ -6,20 +6,20 @@<br>
 // License. See LICENSE.TXT for details.<br>
 //<br>
 //===----------------------------------------------------------------------===//<br>
-#ifndef AARCH64_DYNAMIC_LIBRARY_WRITER_H<br>
-#define AARCH64_DYNAMIC_LIBRARY_WRITER_H<br>
+#ifndef X86_X86_DYNAMIC_LIBRARY_WRITER_H<br>
+#define X86_X86_DYNAMIC_LIBRARY_WRITER_H<br>
<br>
 #include "DynamicLibraryWriter.h"<br>
-#include "AArch64LinkingContext.h"<br>
+#include "X86LinkingContext.h"<br>
<br>
 namespace lld {<br>
 namespace elf {<br>
<br>
 template <class ELFT><br>
-class AArch64DynamicLibraryWriter : public DynamicLibraryWriter<ELFT> {<br>
+class X86DynamicLibraryWriter : public DynamicLibraryWriter<ELFT> {<br>
 public:<br>
-  AArch64DynamicLibraryWriter(AArch64LinkingContext &context,<br>
-                              AArch64TargetLayout<ELFT> &layout);<br>
+  X86DynamicLibraryWriter(X86LinkingContext &context,<br>
+                          X86TargetLayout<ELFT> &layout);<br>
<br>
 protected:<br>
   // Add any runtime files and their atoms to the output<br>
@@ -41,19 +41,18 @@ private:<br>
   };<br>
<br>
   std::unique_ptr<GOTFile> _gotFile;<br>
-  AArch64LinkingContext &_context;<br>
-  AArch64TargetLayout<ELFT> &_AArch64Layout;<br>
+  X86LinkingContext &_context;<br>
+  X86TargetLayout<ELFT> &_x86Layout;<br>
 };<br>
<br>
 template <class ELFT><br>
-AArch64DynamicLibraryWriter<ELFT>::AArch64DynamicLibraryWriter(<br>
-    AArch64LinkingContext &context, AArch64TargetLayout<ELFT> &layout)<br>
+X86DynamicLibraryWriter<ELFT>::X86DynamicLibraryWriter(<br>
+    X86LinkingContext &context, X86TargetLayout<ELFT> &layout)<br>
     : DynamicLibraryWriter<ELFT>(context, layout),<br>
-      _gotFile(new GOTFile(context)), _context(context),<br>
-      _AArch64Layout(layout) {}<br>
+      _gotFile(new GOTFile(context)), _context(context), _x86Layout(layout) {}<br>
<br>
 template <class ELFT><br>
-bool AArch64DynamicLibraryWriter<ELFT>::createImplicitFiles(<br>
+bool X86DynamicLibraryWriter<ELFT>::createImplicitFiles(<br>
     std::vector<std::unique_ptr<File>> &result) {<br>
   DynamicLibraryWriter<ELFT>::createImplicitFiles(result);<br>
   _gotFile->addAtom(*new (_gotFile->_alloc) GLOBAL_OFFSET_TABLEAtom(*_gotFile));<br>
<br>
Added: lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFFile.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFFile.h?rev=220129&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFFile.h?rev=220129&view=auto</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFFile.h (added)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFFile.h Sat Oct 18 00:23:17 2014<br>
@@ -0,0 +1,73 @@<br>
+//===- lib/ReaderWriter/ELF/X86/X86ELFFile.h ------------------------------===//<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>
+//===----------------------------------------------------------------------===//<br>
+<br>
+#ifndef LLD_READER_WRITER_ELF_X86_X86_ELF_FILE_H<br>
+#define LLD_READER_WRITER_ELF_X86_X86_ELF_FILE_H<br>
+<br>
+#include "ELFReader.h"<br>
+<br>
+namespace lld {<br>
+namespace elf {<br>
+<br>
+class X86LinkingContext;<br>
+<br>
+template <class ELFT> class X86ELFFile : public ELFFile<ELFT> {<br>
+public:<br>
+  X86ELFFile(StringRef name, bool atomizeStrings)<br>
+      : ELFFile<ELFT>(name, atomizeStrings) {}<br>
+<br>
+  X86ELFFile(std::unique_ptr<MemoryBuffer> mb, bool atomizeStrings,<br>
+             std::error_code &ec)<br>
+      : ELFFile<ELFT>(std::move(mb), atomizeStrings, ec) {}<br>
+<br>
+  static ErrorOr<std::unique_ptr<X86ELFFile>><br>
+  create(std::unique_ptr<MemoryBuffer> mb, bool atomizeStrings) {<br>
+    std::error_code ec;<br>
+    std::unique_ptr<X86ELFFile<ELFT>> file(<br>
+        new X86ELFFile<ELFT>(mb->getBufferIdentifier(), atomizeStrings));<br>
+<br>
+    file->_objFile.reset(<br>
+        new llvm::object::ELFFile<ELFT>(mb.release()->getBuffer(), ec));<br>
+<br>
+    if (ec)<br>
+      return ec;<br>
+<br>
+    // Read input sections from the input file that need to be converted to<br>
+    // atoms<br>
+    if ((ec = file->createAtomizableSections()))<br>
+      return ec;<br>
+<br>
+    // For mergeable strings, we would need to split the section into various<br>
+    // atoms<br>
+    if ((ec = file->createMergeableAtoms()))<br>
+      return ec;<br>
+<br>
+    // Create the necessary symbols that are part of the section that we<br>
+    // created in createAtomizableSections function<br>
+    if ((ec = file->createSymbolsFromAtomizableSections()))<br>
+      return ec;<br>
+<br>
+    // Create the appropriate atoms from the file<br>
+    if ((ec = file->createAtoms()))<br>
+      return ec;<br>
+<br>
+    return std::move(file);<br>
+  }<br>
+};<br>
+<br>
+template <class ELFT> class X86DynamicFile : public DynamicFile<ELFT> {<br>
+public:<br>
+  X86DynamicFile(const X86LinkingContext &context, StringRef name)<br>
+      : DynamicFile<ELFT>(context, name) {}<br>
+};<br>
+<br>
+} // elf<br>
+} // lld<br>
+<br>
+#endif // LLD_READER_WRITER_ELF_X86_X86_ELF_FILE_H<br>
<br>
Copied: lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFReader.h (from r220117, lld/trunk/lib/ReaderWriter/ELF/ELFReader.h)<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFReader.h?p2=lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFReader.h&p1=lld/trunk/lib/ReaderWriter/ELF/ELFReader.h&r1=220117&r2=220129&rev=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFReader.h?p2=lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFReader.h&p1=lld/trunk/lib/ReaderWriter/ELF/ELFReader.h&r1=220117&r2=220129&rev=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/ELFReader.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFReader.h Sat Oct 18 00:23:17 2014<br>
@@ -1,4 +1,4 @@<br>
-//===- lib/ReaderWriter/ELF/ELFReader.h -----------------------------------===//<br>
+//===- lib/ReaderWriter/ELF/X86/X86ELFReader.h ----------------------------===//<br>
 //<br>
 //                             The LLVM Linker<br>
 //<br>
@@ -7,53 +7,45 @@<br>
 //<br>
 //===----------------------------------------------------------------------===//<br>
<br>
-#ifndef LLD_READER_WRITER_ELF_READER_H<br>
-#define LLD_READER_WRITER_ELF_READER_H<br>
+#ifndef LLD_READER_WRITER_X86_X86_ELF_READER_H<br>
+#define LLD_READER_WRITER_X86_X86_ELF_READER_H<br>
<br>
-#include "CreateELF.h"<br>
-#include "DynamicFile.h"<br>
-#include "ELFFile.h"<br>
-<br>
-#include "lld/ReaderWriter/Reader.h"<br>
+#include "ELFReader.h"<br>
+#include "X86ELFFile.h"<br>
<br>
 namespace lld {<br>
 namespace elf {<br>
<br>
-struct DynamicFileCreateELFTraits {<br>
+struct X86DynamicFileCreateELFTraits {<br>
   typedef llvm::ErrorOr<std::unique_ptr<lld::SharedLibraryFile>> result_type;<br>
<br>
   template <class ELFT><br>
   static result_type create(std::unique_ptr<llvm::MemoryBuffer> mb,<br>
                             bool useUndefines) {<br>
-    return lld::elf::DynamicFile<ELFT>::create(std::move(mb), useUndefines);<br>
+    return lld::elf::X86DynamicFile<ELFT>::create(std::move(mb), useUndefines);<br>
   }<br>
 };<br>
<br>
-struct ELFFileCreateELFTraits {<br>
+struct X86ELFFileCreateELFTraits {<br>
   typedef llvm::ErrorOr<std::unique_ptr<lld::File>> result_type;<br>
<br>
   template <class ELFT><br>
   static result_type create(std::unique_ptr<llvm::MemoryBuffer> mb,<br>
                             bool atomizeStrings) {<br>
-    return lld::elf::ELFFile<ELFT>::create(std::move(mb), atomizeStrings);<br>
+    return lld::elf::X86ELFFile<ELFT>::create(std::move(mb), atomizeStrings);<br>
   }<br>
 };<br>
<br>
-class ELFObjectReader : public Reader {<br>
+class X86ELFObjectReader : public ELFObjectReader {<br>
 public:<br>
-  ELFObjectReader(bool atomizeStrings) : _atomizeStrings(atomizeStrings) {}<br>
-<br>
-  bool canParse(file_magic magic, StringRef,<br>
-                const MemoryBuffer &) const override {<br>
-    return (magic == llvm::sys::fs::file_magic::elf_relocatable);<br>
-  }<br>
+  X86ELFObjectReader(bool atomizeStrings) : ELFObjectReader(atomizeStrings) {}<br>
<br>
   std::error_code<br>
   parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,<br>
             std::vector<std::unique_ptr<File>> &result) const override {<br>
     std::size_t maxAlignment =<br>
         1ULL << llvm::countTrailingZeros(uintptr_t(mb->getBufferStart()));<br>
-    auto f = createELF<ELFFileCreateELFTraits>(<br>
+    auto f = createELF<X86ELFFileCreateELFTraits>(<br>
         llvm::object::getElfArchType(mb->getBuffer()), maxAlignment,<br>
         std::move(mb), _atomizeStrings);<br>
     if (std::error_code ec = f.getError())<br>
@@ -61,26 +53,18 @@ public:<br>
     result.push_back(std::move(*f));<br>
     return std::error_code();<br>
   }<br>
-<br>
-protected:<br>
-  bool _atomizeStrings;<br>
 };<br>
<br>
-class ELFDSOReader : public Reader {<br>
+class X86ELFDSOReader : public ELFDSOReader {<br>
 public:<br>
-  ELFDSOReader(bool useUndefines) : _useUndefines(useUndefines) {}<br>
-<br>
-  bool canParse(file_magic magic, StringRef,<br>
-                const MemoryBuffer &) const override {<br>
-    return (magic == llvm::sys::fs::file_magic::elf_shared_object);<br>
-  }<br>
+  X86ELFDSOReader(bool useUndefines) : ELFDSOReader(useUndefines) {}<br>
<br>
   std::error_code<br>
   parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,<br>
             std::vector<std::unique_ptr<File>> &result) const override {<br>
     std::size_t maxAlignment =<br>
         1ULL << llvm::countTrailingZeros(uintptr_t(mb->getBufferStart()));<br>
-    auto f = createELF<DynamicFileCreateELFTraits>(<br>
+    auto f = createELF<X86DynamicFileCreateELFTraits>(<br>
         llvm::object::getElfArchType(mb->getBuffer()), maxAlignment,<br>
         std::move(mb), _useUndefines);<br>
     if (std::error_code ec = f.getError())<br>
@@ -88,12 +72,9 @@ public:<br>
     result.push_back(std::move(*f));<br>
     return std::error_code();<br>
   }<br>
-<br>
-protected:<br>
-  bool _useUndefines;<br>
 };<br>
<br>
 } // namespace elf<br>
 } // namespace lld<br>
<br>
-#endif // LLD_READER_WRITER_ELF_READER_H<br>
+#endif // LLD_READER_WRITER_X86_X86_ELF_READER_H<br>
<br>
Added: lld/trunk/lib/ReaderWriter/ELF/X86/X86ExecutableWriter.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86ExecutableWriter.h?rev=220129&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86ExecutableWriter.h?rev=220129&view=auto</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86/X86ExecutableWriter.h (added)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86ExecutableWriter.h Sat Oct 18 00:23:17 2014<br>
@@ -0,0 +1,57 @@<br>
+//===- lib/ReaderWriter/ELF/X86/X86ExecutableWriter.h ---------------------===//<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>
+//===----------------------------------------------------------------------===//<br>
+#ifndef X86_X86_EXECUTABLE_WRITER_H<br>
+#define X86_X86_EXECUTABLE_WRITER_H<br>
+<br>
+#include "ExecutableWriter.h"<br>
+#include "X86LinkingContext.h"<br>
+<br>
+namespace lld {<br>
+namespace elf {<br>
+<br>
+template <class ELFT><br>
+class X86ExecutableWriter : public ExecutableWriter<ELFT> {<br>
+public:<br>
+  X86ExecutableWriter(X86LinkingContext &context,<br>
+                      X86TargetLayout<ELFT> &layout);<br>
+<br>
+protected:<br>
+  // Add any runtime files and their atoms to the output<br>
+  virtual bool createImplicitFiles(std::vector<std::unique_ptr<File>> &);<br>
+<br>
+  virtual void finalizeDefaultAtomValues() {<br>
+    return ExecutableWriter<ELFT>::finalizeDefaultAtomValues();<br>
+  }<br>
+<br>
+  virtual void addDefaultAtoms() {<br>
+    return ExecutableWriter<ELFT>::addDefaultAtoms();<br>
+  }<br>
+<br>
+private:<br>
+  X86LinkingContext &_context;<br>
+  X86TargetLayout<ELFT> &_x86Layout;<br>
+};<br>
+<br>
+template <class ELFT><br>
+X86ExecutableWriter<ELFT>::X86ExecutableWriter(X86LinkingContext &context,<br>
+                                               X86TargetLayout<ELFT> &layout)<br>
+    : ExecutableWriter<ELFT>(context, layout), _context(context),<br>
+      _x86Layout(layout) {}<br>
+<br>
+template <class ELFT><br>
+bool X86ExecutableWriter<ELFT>::createImplicitFiles(<br>
+    std::vector<std::unique_ptr<File>> &result) {<br>
+  ExecutableWriter<ELFT>::createImplicitFiles(result);<br>
+  return true;<br>
+}<br>
+<br>
+} // namespace elf<br>
+} // namespace lld<br>
+<br>
+#endif<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp Sat Oct 18 00:23:17 2014<br>
@@ -8,9 +8,7 @@<br>
 //===----------------------------------------------------------------------===//<br>
<br>
 #include "X86LinkingContext.h"<br>
-<br>
 #include "lld/Core/LLVM.h"<br>
-<br>
 #include "llvm/ADT/StringSwitch.h"<br>
 #include "llvm/Support/ErrorOr.h"<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.h Sat Oct 18 00:23:17 2014<br>
@@ -11,9 +11,7 @@<br>
 #define LLD_READER_WRITER_ELF_X86_TARGETINFO_H<br>
<br>
 #include "X86TargetHandler.h"<br>
-<br>
 #include "lld/ReaderWriter/ELFLinkingContext.h"<br>
-<br>
 #include "llvm/Object/ELF.h"<br>
 #include "llvm/Support/ELF.h"<br>
<br>
<br>
Added: lld/trunk/lib/ReaderWriter/ELF/X86/X86RelocationHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86RelocationHandler.cpp?rev=220129&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86RelocationHandler.cpp?rev=220129&view=auto</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86/X86RelocationHandler.cpp (added)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86RelocationHandler.cpp Sat Oct 18 00:23:17 2014<br>
@@ -0,0 +1,64 @@<br>
+//===- lib/ReaderWriter/ELF/X86/X86RelocationHandler.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>
+//===----------------------------------------------------------------------===//<br>
+<br>
+#include "X86LinkingContext.h"<br>
+#include "X86TargetHandler.h"<br>
+<br>
+using namespace lld;<br>
+using namespace elf;<br>
+<br>
+namespace {<br>
+/// \brief R_386_32 - word32:  S + A<br>
+static int reloc32(uint8_t *location, uint64_t P, uint64_t S, uint64_t A) {<br>
+  int32_t result = (uint32_t)(S + A);<br>
+  *reinterpret_cast<llvm::support::ulittle32_t *>(location) =<br>
+      result |<br>
+      (uint32_t) * reinterpret_cast<llvm::support::ulittle32_t *>(location);<br>
+  return 0;<br>
+}<br>
+<br>
+/// \brief R_386_PC32 - word32: S + A - P<br>
+static int relocPC32(uint8_t *location, uint64_t P, uint64_t S, uint64_t A) {<br>
+  uint32_t result = (uint32_t)((S + A) - P);<br>
+  *reinterpret_cast<llvm::support::ulittle32_t *>(location) =<br>
+      result +<br>
+      (uint32_t) * reinterpret_cast<llvm::support::ulittle32_t *>(location);<br>
+  return 0;<br>
+}<br>
+}<br>
+<br>
+std::error_code X86TargetRelocationHandler::applyRelocation(<br>
+    ELFWriter &writer, llvm::FileOutputBuffer &buf, const lld::AtomLayout &atom,<br>
+    const Reference &ref) const {<br>
+  uint8_t *atomContent = buf.getBufferStart() + atom._fileOffset;<br>
+  uint8_t *location = atomContent + ref.offsetInAtom();<br>
+  uint64_t targetVAddress = writer.addressOfAtom(ref.target());<br>
+  uint64_t relocVAddress = atom._virtualAddr + ref.offsetInAtom();<br>
+<br>
+  if (ref.kindNamespace() != Reference::KindNamespace::ELF)<br>
+    return std::error_code();<br>
+  assert(ref.kindArch() == Reference::KindArch::x86);<br>
+  switch (ref.kindValue()) {<br>
+  case R_386_32:<br>
+    reloc32(location, relocVAddress, targetVAddress, ref.addend());<br>
+    break;<br>
+  case R_386_PC32:<br>
+    relocPC32(location, relocVAddress, targetVAddress, ref.addend());<br>
+    break;<br>
+  default: {<br>
+    std::string str;<br>
+    llvm::raw_string_ostream s(str);<br>
+    s << "Unhandled I386 relocation # " << ref.kindValue();<br>
+    s.flush();<br>
+    llvm_unreachable(str.c_str());<br>
+  }<br>
+  }<br>
+<br>
+  return std::error_code();<br>
+}<br>
<br>
Added: lld/trunk/lib/ReaderWriter/ELF/X86/X86RelocationHandler.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86RelocationHandler.h?rev=220129&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86RelocationHandler.h?rev=220129&view=auto</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86/X86RelocationHandler.h (added)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86RelocationHandler.h Sat Oct 18 00:23:17 2014<br>
@@ -0,0 +1,33 @@<br>
+//===- lib/ReaderWriter/ELF/X86/X86RelocationHandler.h --------------------===//<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>
+//===----------------------------------------------------------------------===//<br>
+<br>
+#ifndef X86_X86_RELOCATION_HANDLER_H<br>
+#define X86_X86_RELOCATION_HANDLER_H<br>
+<br>
+#include "X86TargetHandler.h"<br>
+<br>
+namespace lld {<br>
+namespace elf {<br>
+template <class ELFT> class X86TargetLayout;<br>
+typedef llvm::object::ELFType<llvm::support::little, 2, false> X86ELFType;<br>
+<br>
+class X86TargetRelocationHandler final<br>
+    : public TargetRelocationHandler<X86ELFType> {<br>
+public:<br>
+  X86TargetRelocationHandler(X86TargetLayout<X86ELFType> &) {}<br>
+<br>
+  std::error_code applyRelocation(ELFWriter &, llvm::FileOutputBuffer &,<br>
+                                  const lld::AtomLayout &,<br>
+                                  const Reference &) const override;<br>
+};<br>
+<br>
+} // end namespace elf<br>
+} // end namespace lld<br>
+<br>
+#endif // X86_X86_RELOCATION_HANDLER_H<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.cpp Sat Oct 18 00:23:17 2014<br>
@@ -8,36 +8,23 @@<br>
 //===----------------------------------------------------------------------===//<br>
<br>
 #include "X86TargetHandler.h"<br>
+#include "X86DynamicLibraryWriter.h"<br>
+#include "X86ExecutableWriter.h"<br>
 #include "X86LinkingContext.h"<br>
+#include "X86RelocationHandler.h"<br>
<br>
 using namespace lld;<br>
 using namespace elf;<br>
<br>
 using namespace llvm::ELF;<br>
<br>
-/// \brief R_386_32 - word32:  S + A<br>
-static int reloc32(uint8_t *location, uint64_t P, uint64_t S, uint64_t A) {<br>
-  int32_t result = (uint32_t)(S + A);<br>
-  *reinterpret_cast<llvm::support::ulittle32_t *>(location) = result |<br>
-            (uint32_t)*reinterpret_cast<llvm::support::ulittle32_t *>(location);<br>
-  return 0;<br>
-}<br>
-<br>
-/// \brief R_386_PC32 - word32: S + A - P<br>
-static int relocPC32(uint8_t *location, uint64_t P, uint64_t S, uint64_t A) {<br>
-  uint32_t result = (uint32_t)((S + A) - P);<br>
-  *reinterpret_cast<llvm::support::ulittle32_t *>(location) = result +<br>
-            (uint32_t)*reinterpret_cast<llvm::support::ulittle32_t *>(location);<br>
-  return 0;<br>
-}<br>
-<br>
 std::unique_ptr<Writer> X86TargetHandler::getWriter() {<br>
   switch (_x86LinkingContext.getOutputELFType()) {<br>
   case llvm::ELF::ET_EXEC:<br>
-    return std::unique_ptr<Writer>(new elf::ExecutableWriter<X86ELFType>(<br>
+    return std::unique_ptr<Writer>(new X86ExecutableWriter<X86ELFType>(<br>
         _x86LinkingContext, *_x86TargetLayout.get()));<br>
   case llvm::ELF::ET_DYN:<br>
-    return std::unique_ptr<Writer>(new elf::DynamicLibraryWriter<X86ELFType>(<br>
+    return std::unique_ptr<Writer>(new X86DynamicLibraryWriter<X86ELFType>(<br>
         _x86LinkingContext, *_x86TargetLayout.get()));<br>
   case llvm::ELF::ET_REL:<br>
     llvm_unreachable("TODO: support -r mode");<br>
@@ -96,38 +83,8 @@ void X86TargetHandler::registerRelocatio<br>
                         kindStrings);<br>
 }<br>
<br>
-std::error_code X86TargetRelocationHandler::applyRelocation(<br>
-    ELFWriter &writer, llvm::FileOutputBuffer &buf, const lld::AtomLayout &atom,<br>
-    const Reference &ref) const {<br>
-  uint8_t *atomContent = buf.getBufferStart() + atom._fileOffset;<br>
-  uint8_t *location = atomContent + ref.offsetInAtom();<br>
-  uint64_t targetVAddress = writer.addressOfAtom(ref.target());<br>
-  uint64_t relocVAddress = atom._virtualAddr + ref.offsetInAtom();<br>
-<br>
-  if (ref.kindNamespace() != Reference::KindNamespace::ELF)<br>
-    return std::error_code();<br>
-  assert(ref.kindArch() == Reference::KindArch::x86);<br>
-  switch (ref.kindValue()) {<br>
-  case R_386_32:<br>
-    reloc32(location, relocVAddress, targetVAddress, ref.addend());<br>
-    break;<br>
-  case R_386_PC32:<br>
-    relocPC32(location, relocVAddress, targetVAddress, ref.addend());<br>
-    break;<br>
-  default : {<br>
-    std::string str;<br>
-    llvm::raw_string_ostream s(str);<br>
-    s << "Unhandled I386 relocation # " << ref.kindValue();<br>
-    s.flush();<br>
-    llvm_unreachable(str.c_str());<br>
-  }<br>
-  }<br>
-<br>
-  return std::error_code();<br>
-}<br>
-<br>
 X86TargetHandler::X86TargetHandler(X86LinkingContext &context)<br>
     : DefaultTargetHandler(context), _x86LinkingContext(context),<br>
       _x86TargetLayout(new X86TargetLayout<X86ELFType>(context)),<br>
       _x86RelocationHandler(<br>
-          new X86TargetRelocationHandler(context, *_x86TargetLayout.get())) {}<br>
+          new X86TargetRelocationHandler(*_x86TargetLayout.get())) {}<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.h Sat Oct 18 00:23:17 2014<br>
@@ -12,8 +12,9 @@<br>
<br>
 #include "DefaultTargetHandler.h"<br>
 #include "TargetLayout.h"<br>
-<br>
-#include "lld/ReaderWriter/Reader.h"<br>
+#include "X86ELFFile.h"<br>
+#include "X86ELFReader.h"<br>
+#include "X86RelocationHandler.h"<br>
<br>
 namespace lld {<br>
 namespace elf {<br>
@@ -26,24 +27,6 @@ public:<br>
   X86TargetLayout(X86LinkingContext &context) : TargetLayout<ELFT>(context) {}<br>
 };<br>
<br>
-class X86TargetRelocationHandler final<br>
-    : public TargetRelocationHandler<X86ELFType> {<br>
-public:<br>
-  X86TargetRelocationHandler(X86LinkingContext &context,<br>
-                             X86TargetLayout<X86ELFType> &layout)<br>
-      : _x86Context(context), _x86TargetLayout(layout) {}<br>
-<br>
-  std::error_code applyRelocation(ELFWriter &, llvm::FileOutputBuffer &,<br>
-                                  const lld::AtomLayout &,<br>
-                                  const Reference &) const override;<br>
-<br>
-  static const Registry::KindStrings kindStrings[];<br>
-<br>
-protected:<br>
-  X86LinkingContext &_x86Context;<br>
-  X86TargetLayout<X86ELFType> &_x86TargetLayout;<br>
-};<br>
-<br>
 class X86TargetHandler final<br>
     : public DefaultTargetHandler<X86ELFType> {<br>
 public:<br>
@@ -59,6 +42,14 @@ public:<br>
     return *(_x86RelocationHandler.get());<br>
   }<br>
<br>
+  std::unique_ptr<Reader> getObjReader(bool atomizeStrings) override {<br>
+    return std::unique_ptr<Reader>(new X86ELFObjectReader(atomizeStrings));<br>
+  }<br>
+<br>
+  std::unique_ptr<Reader> getDSOReader(bool useShlibUndefines) override {<br>
+    return std::unique_ptr<Reader>(new X86ELFDSOReader(useShlibUndefines));<br>
+  }<br>
+<br>
   std::unique_ptr<Writer> getWriter() override;<br>
<br>
 protected:<br>
<br>
Added: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFFile.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFFile.h?rev=220129&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFFile.h?rev=220129&view=auto</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFFile.h (added)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFFile.h Sat Oct 18 00:23:17 2014<br>
@@ -0,0 +1,73 @@<br>
+//===- lib/ReaderWriter/ELF/X86_64/X86_64ELFFile.h ------------------------===//<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>
+//===----------------------------------------------------------------------===//<br>
+<br>
+#ifndef LLD_READER_WRITER_ELF_X86_64_ELF_FILE_H<br>
+#define LLD_READER_WRITER_ELF_X86_64_ELF_FILE_H<br>
+<br>
+#include "ELFReader.h"<br>
+<br>
+namespace lld {<br>
+namespace elf {<br>
+<br>
+class X86_64LinkingContext;<br>
+<br>
+template <class ELFT> class X86_64ELFFile : public ELFFile<ELFT> {<br>
+public:<br>
+  X86_64ELFFile(StringRef name, bool atomizeStrings)<br>
+      : ELFFile<ELFT>(name, atomizeStrings) {}<br>
+<br>
+  X86_64ELFFile(std::unique_ptr<MemoryBuffer> mb, bool atomizeStrings,<br>
+                std::error_code &ec)<br>
+      : ELFFile<ELFT>(std::move(mb), atomizeStrings, ec) {}<br>
+<br>
+  static ErrorOr<std::unique_ptr<X86_64ELFFile>><br>
+  create(std::unique_ptr<MemoryBuffer> mb, bool atomizeStrings) {<br>
+    std::error_code ec;<br>
+    std::unique_ptr<X86_64ELFFile<ELFT>> file(<br>
+        new X86_64ELFFile<ELFT>(mb->getBufferIdentifier(), atomizeStrings));<br>
+<br>
+    file->_objFile.reset(<br>
+        new llvm::object::ELFFile<ELFT>(mb.release()->getBuffer(), ec));<br>
+<br>
+    if (ec)<br>
+      return ec;<br>
+<br>
+    // Read input sections from the input file that need to be converted to<br>
+    // atoms<br>
+    if ((ec = file->createAtomizableSections()))<br>
+      return ec;<br>
+<br>
+    // For mergeable strings, we would need to split the section into various<br>
+    // atoms<br>
+    if ((ec = file->createMergeableAtoms()))<br>
+      return ec;<br>
+<br>
+    // Create the necessary symbols that are part of the section that we<br>
+    // created in createAtomizableSections function<br>
+    if ((ec = file->createSymbolsFromAtomizableSections()))<br>
+      return ec;<br>
+<br>
+    // Create the appropriate atoms from the file<br>
+    if ((ec = file->createAtoms()))<br>
+      return ec;<br>
+<br>
+    return std::move(file);<br>
+  }<br>
+};<br>
+<br>
+template <class ELFT> class X86_64DynamicFile : public DynamicFile<ELFT> {<br>
+public:<br>
+  X86_64DynamicFile(const X86_64LinkingContext &context, StringRef name)<br>
+      : DynamicFile<ELFT>(context, name) {}<br>
+};<br>
+<br>
+} // elf<br>
+} // lld<br>
+<br>
+#endif // LLD_READER_WRITER_ELF_X86_64_ELF_FILE_H<br>
<br>
Copied: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h (from r220117, lld/trunk/lib/ReaderWriter/ELF/ELFReader.h)<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h?p2=lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h&p1=lld/trunk/lib/ReaderWriter/ELF/ELFReader.h&r1=220117&r2=220129&rev=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h?p2=lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h&p1=lld/trunk/lib/ReaderWriter/ELF/ELFReader.h&r1=220117&r2=220129&rev=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/ELFReader.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h Sat Oct 18 00:23:17 2014<br>
@@ -1,4 +1,4 @@<br>
-//===- lib/ReaderWriter/ELF/ELFReader.h -----------------------------------===//<br>
+//===- lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h ----------------------===//<br>
 //<br>
 //                             The LLVM Linker<br>
 //<br>
@@ -7,53 +7,47 @@<br>
 //<br>
 //===----------------------------------------------------------------------===//<br>
<br>
-#ifndef LLD_READER_WRITER_ELF_READER_H<br>
-#define LLD_READER_WRITER_ELF_READER_H<br>
+#ifndef LLD_READER_WRITER_X86_64_X86_64_ELF_READER_H<br>
+#define LLD_READER_WRITER_X86_64_X86_64_ELF_READER_H<br>
<br>
-#include "CreateELF.h"<br>
-#include "DynamicFile.h"<br>
-#include "ELFFile.h"<br>
-<br>
-#include "lld/ReaderWriter/Reader.h"<br>
+#include "ELFReader.h"<br>
+#include "X86_64ELFFile.h"<br>
<br>
 namespace lld {<br>
 namespace elf {<br>
<br>
-struct DynamicFileCreateELFTraits {<br>
+struct X86_64DynamicFileCreateELFTraits {<br>
   typedef llvm::ErrorOr<std::unique_ptr<lld::SharedLibraryFile>> result_type;<br>
<br>
   template <class ELFT><br>
   static result_type create(std::unique_ptr<llvm::MemoryBuffer> mb,<br>
                             bool useUndefines) {<br>
-    return lld::elf::DynamicFile<ELFT>::create(std::move(mb), useUndefines);<br>
+    return lld::elf::X86_64DynamicFile<ELFT>::create(std::move(mb),<br>
+                                                     useUndefines);<br>
   }<br>
 };<br>
<br>
-struct ELFFileCreateELFTraits {<br>
+struct X86_64ELFFileCreateELFTraits {<br>
   typedef llvm::ErrorOr<std::unique_ptr<lld::File>> result_type;<br>
<br>
   template <class ELFT><br>
   static result_type create(std::unique_ptr<llvm::MemoryBuffer> mb,<br>
                             bool atomizeStrings) {<br>
-    return lld::elf::ELFFile<ELFT>::create(std::move(mb), atomizeStrings);<br>
+    return lld::elf::X86_64ELFFile<ELFT>::create(std::move(mb), atomizeStrings);<br>
   }<br>
 };<br>
<br>
-class ELFObjectReader : public Reader {<br>
+class X86_64ELFObjectReader : public ELFObjectReader {<br>
 public:<br>
-  ELFObjectReader(bool atomizeStrings) : _atomizeStrings(atomizeStrings) {}<br>
-<br>
-  bool canParse(file_magic magic, StringRef,<br>
-                const MemoryBuffer &) const override {<br>
-    return (magic == llvm::sys::fs::file_magic::elf_relocatable);<br>
-  }<br>
+  X86_64ELFObjectReader(bool atomizeStrings)<br>
+      : ELFObjectReader(atomizeStrings) {}<br>
<br>
   std::error_code<br>
   parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,<br>
             std::vector<std::unique_ptr<File>> &result) const override {<br>
     std::size_t maxAlignment =<br>
         1ULL << llvm::countTrailingZeros(uintptr_t(mb->getBufferStart()));<br>
-    auto f = createELF<ELFFileCreateELFTraits>(<br>
+    auto f = createELF<X86_64ELFFileCreateELFTraits>(<br>
         llvm::object::getElfArchType(mb->getBuffer()), maxAlignment,<br>
         std::move(mb), _atomizeStrings);<br>
     if (std::error_code ec = f.getError())<br>
@@ -61,26 +55,18 @@ public:<br>
     result.push_back(std::move(*f));<br>
     return std::error_code();<br>
   }<br>
-<br>
-protected:<br>
-  bool _atomizeStrings;<br>
 };<br>
<br>
-class ELFDSOReader : public Reader {<br>
+class X86_64ELFDSOReader : public ELFDSOReader {<br>
 public:<br>
-  ELFDSOReader(bool useUndefines) : _useUndefines(useUndefines) {}<br>
-<br>
-  bool canParse(file_magic magic, StringRef,<br>
-                const MemoryBuffer &) const override {<br>
-    return (magic == llvm::sys::fs::file_magic::elf_shared_object);<br>
-  }<br>
+  X86_64ELFDSOReader(bool useUndefines) : ELFDSOReader(useUndefines) {}<br>
<br>
   std::error_code<br>
   parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,<br>
             std::vector<std::unique_ptr<File>> &result) const override {<br>
     std::size_t maxAlignment =<br>
         1ULL << llvm::countTrailingZeros(uintptr_t(mb->getBufferStart()));<br>
-    auto f = createELF<DynamicFileCreateELFTraits>(<br>
+    auto f = createELF<X86_64DynamicFileCreateELFTraits>(<br>
         llvm::object::getElfArchType(mb->getBuffer()), maxAlignment,<br>
         std::move(mb), _useUndefines);<br>
     if (std::error_code ec = f.getError())<br>
@@ -88,12 +74,9 @@ public:<br>
     result.push_back(std::move(*f));<br>
     return std::error_code();<br>
   }<br>
-<br>
-protected:<br>
-  bool _useUndefines;<br>
 };<br>
<br>
 } // namespace elf<br>
 } // namespace lld<br>
<br>
-#endif // LLD_READER_WRITER_ELF_READER_H<br>
+#endif // LLD_READER_WRITER_ELF_X86_64_X86_64_READER_H<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp Sat Oct 18 00:23:17 2014<br>
@@ -8,16 +8,13 @@<br>
 //===----------------------------------------------------------------------===//<br>
<br>
 #include "X86_64LinkingContext.h"<br>
-<br>
+#include "Atoms.h"<br>
+#include "X86_64RelocationPass.h"<br>
 #include "lld/Core/File.h"<br>
 #include "lld/Core/Instrumentation.h"<br>
-<br>
 #include "llvm/ADT/ArrayRef.h"<br>
 #include "llvm/ADT/StringSwitch.h"<br>
<br>
-#include "Atoms.h"<br>
-#include "X86_64RelocationPass.h"<br>
-<br>
 using namespace lld;<br>
 using namespace lld::elf;<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h Sat Oct 18 00:23:17 2014<br>
@@ -11,9 +11,7 @@<br>
 #define LLD_READER_WRITER_ELF_X86_64_X86_64_LINKING_CONTEXT_H<br>
<br>
 #include "X86_64TargetHandler.h"<br>
-<br>
 #include "lld/ReaderWriter/ELFLinkingContext.h"<br>
-<br>
 #include "llvm/Object/ELF.h"<br>
 #include "llvm/Support/ELF.h"<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.cpp Sat Oct 18 00:23:17 2014<br>
@@ -7,8 +7,8 @@<br>
 //<br>
 //===----------------------------------------------------------------------===//<br>
<br>
-#include "X86_64TargetHandler.h"<br>
 #include "X86_64LinkingContext.h"<br>
+#include "X86_64TargetHandler.h"<br>
<br>
 using namespace lld;<br>
 using namespace elf;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.h Sat Oct 18 00:23:17 2014<br>
@@ -28,8 +28,6 @@ public:<br>
                                   const lld::AtomLayout &,<br>
                                   const Reference &) const override;<br>
<br>
-  static const Registry::KindStrings kindStrings[];<br>
-<br>
 private:<br>
   // Cached size of the TLS segment.<br>
   mutable uint64_t _tlsSize;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationPass.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationPass.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationPass.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationPass.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationPass.cpp Sat Oct 18 00:23:17 2014<br>
@@ -20,13 +20,10 @@<br>
 //===----------------------------------------------------------------------===//<br>
<br>
 #include "X86_64RelocationPass.h"<br>
-<br>
-#include "lld/Core/Simple.h"<br>
-<br>
-#include "llvm/ADT/DenseMap.h"<br>
-<br>
 #include "Atoms.h"<br>
 #include "X86_64LinkingContext.h"<br>
+#include "lld/Core/Simple.h"<br>
+#include "llvm/ADT/DenseMap.h"<br>
<br>
 using namespace lld;<br>
 using namespace lld::elf;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.cpp Sat Oct 18 00:23:17 2014<br>
@@ -8,10 +8,10 @@<br>
 //===----------------------------------------------------------------------===//<br>
<br>
 #include "Atoms.h"<br>
-#include "X86_64ExecutableWriter.h"<br>
 #include "X86_64DynamicLibraryWriter.h"<br>
-#include "X86_64TargetHandler.h"<br>
+#include "X86_64ExecutableWriter.h"<br>
 #include "X86_64LinkingContext.h"<br>
+#include "X86_64TargetHandler.h"<br>
<br>
 using namespace lld;<br>
 using namespace elf;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h Sat Oct 18 00:23:17 2014<br>
@@ -11,10 +11,10 @@<br>
 #define LLD_READER_WRITER_ELF_X86_64_X86_64_TARGET_HANDLER_H<br>
<br>
 #include "DefaultTargetHandler.h"<br>
-#include "ELFFile.h"<br>
-#include "X86_64RelocationHandler.h"<br>
 #include "TargetLayout.h"<br>
-<br>
+#include "X86_64ELFFile.h"<br>
+#include "X86_64ELFReader.h"<br>
+#include "X86_64RelocationHandler.h"<br>
 #include "lld/Core/Simple.h"<br>
<br>
 namespace lld {<br>
@@ -43,6 +43,14 @@ public:<br>
     return *(_x86_64RelocationHandler.get());<br>
   }<br>
<br>
+  std::unique_ptr<Reader> getObjReader(bool atomizeStrings) override {<br>
+    return std::unique_ptr<Reader>(new X86_64ELFObjectReader(atomizeStrings));<br>
+  }<br>
+<br>
+  std::unique_ptr<Reader> getDSOReader(bool useShlibUndefines) override {<br>
+    return std::unique_ptr<Reader>(new X86_64ELFDSOReader(useShlibUndefines));<br>
+  }<br>
+<br>
   std::unique_ptr<Writer> getWriter() override;<br>
<br>
 private:<br>
<br>
Modified: lld/trunk/test/elf/symbols.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/symbols.test?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/symbols.test?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/elf/symbols.test (original)<br>
+++ lld/trunk/test/elf/symbols.test Sat Oct 18 00:23:17 2014<br>
@@ -19,15 +19,15 @@ RUN: llvm-nm -n %t1 | FileCheck -check-p<br>
 RUN: lld -flavor gnu -shared -target i386 -e main %p/Inputs/writersyms.o -o %t1<br>
 RUN: llvm-nm -n %t1 | FileCheck -check-prefix CHECKSHAREDSYMS %s<br>
<br>
-CHECKSYMS:  00000000 a 1.c<br>
-CHECKSYMS:  00000134 T main<br>
-CHECKSYMS:  00001000 A __bss_start<br>
-CHECKSYMS:  00001000 B a<br>
-CHECKSYMS:  00001004 A __bss_end<br>
-CHECKSYMS:  00001004 A _end<br>
-CHECKSYMS:  00001004 A end<br>
+CHECKSYMS:  {{[0-9a-f]+}} a 1.c<br>
+CHECKSYMS:  {{[0-9a-f]+}} T main<br>
+CHECKSYMS:  {{[0-9a-f]+}} A __bss_start<br>
+CHECKSYMS:  {{[0-9a-f]+}} B a<br>
+CHECKSYMS:  {{[0-9a-f]+}} A __bss_end<br>
+CHECKSYMS:  {{[0-9a-f]+}} A _end<br>
+CHECKSYMS:  {{[0-9a-f]+}} A end<br>
<br>
-CHECKSHAREDSYMS:  00000000 a 1.c<br>
-CHECKSHAREDSYMS:  0000010c T main<br>
-CHECKSHAREDSYMS:  00001000 B a<br>
-CHECKSHAREDSYMS:  00001004 A _end<br>
+CHECKSHAREDSYMS:  {{[0-9a-f]+}} a 1.c<br>
+CHECKSHAREDSYMS:  {{[0-9a-f]+}} T main<br>
+CHECKSHAREDSYMS:  {{[0-9a-f]+}} B a<br>
+CHECKSHAREDSYMS:  {{[0-9a-f]+}} A _end<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">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/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>