[lld] r220182 - [ELF] Check for target architecture.

Shankar Easwaran shankarke at gmail.com
Sun Oct 19 21:00:26 PDT 2014


Author: shankare
Date: Sun Oct 19 23:00:26 2014
New Revision: 220182

URL: http://llvm.org/viewvc/llvm-project?rev=220182&view=rev
Log:
[ELF] Check for target architecture.

The canParse function for all the ELF subtargets check if the input files match
the subtarget.

There were few mismatches in the input files that didnt match the subtarget for
which the link was being invoked, which also acts as a test for this change.

Modified:
    lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h
    lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h
    lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonELFReader.h
    lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h
    lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFReader.h
    lld/trunk/lib/ReaderWriter/ELF/PPC/PPCELFFile.h
    lld/trunk/lib/ReaderWriter/ELF/PPC/PPCELFReader.h
    lld/trunk/lib/ReaderWriter/ELF/PPC/PPCTargetHandler.h
    lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFReader.h
    lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.h
    lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h
    lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h
    lld/trunk/test/elf/X86_64/Inputs/constint.o
    lld/trunk/test/elf/X86_64/Inputs/no-interp-section.o
    lld/trunk/test/elf/X86_64/Inputs/note_ro_rw.o
    lld/trunk/test/elf/X86_64/Inputs/rwint.o
    lld/trunk/test/elf/abs.test

Modified: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h?rev=220182&r1=220181&r2=220182&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h Sun Oct 19 23:00:26 2014
@@ -16,6 +16,8 @@
 namespace lld {
 namespace elf {
 
+typedef llvm::object::ELFType<llvm::support::little, 2, true> AArch64ELFType;
+
 struct AArch64DynamicFileCreateELFTraits {
   typedef llvm::ErrorOr<std::unique_ptr<lld::SharedLibraryFile>> result_type;
 
@@ -43,6 +45,17 @@ public:
   AArch64ELFObjectReader(bool atomizeStrings)
       : ELFObjectReader(atomizeStrings) {}
 
+  bool canParse(file_magic magic, StringRef ext,
+                const MemoryBuffer &buf) const override {
+    const uint8_t *data =
+        reinterpret_cast<const uint8_t *>(buf.getBuffer().data());
+    const llvm::object::Elf_Ehdr_Impl<AArch64ELFType> *elfHeader =
+        reinterpret_cast<const llvm::object::Elf_Ehdr_Impl<AArch64ELFType> *>(
+            data);
+    return ELFObjectReader::canParse(magic, ext, buf) &&
+           elfHeader->e_machine == llvm::ELF::EM_AARCH64;
+  }
+
   std::error_code
   parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,
             std::vector<std::unique_ptr<File>> &result) const override {
@@ -62,6 +75,17 @@ class AArch64ELFDSOReader : public ELFDS
 public:
   AArch64ELFDSOReader(bool useUndefines) : ELFDSOReader(useUndefines) {}
 
+  bool canParse(file_magic magic, StringRef ext,
+                const MemoryBuffer &buf) const override {
+    const uint8_t *data =
+        reinterpret_cast<const uint8_t *>(buf.getBuffer().data());
+    const llvm::object::Elf_Ehdr_Impl<AArch64ELFType> *elfHeader =
+        reinterpret_cast<const llvm::object::Elf_Ehdr_Impl<AArch64ELFType> *>(
+            data);
+    return ELFDSOReader::canParse(magic, ext, buf) &&
+           elfHeader->e_machine == llvm::ELF::EM_AARCH64;
+  }
+
   std::error_code
   parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,
             std::vector<std::unique_ptr<File>> &result) const override {

Modified: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h?rev=220182&r1=220181&r2=220182&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h Sun Oct 19 23:00:26 2014
@@ -19,7 +19,6 @@
 
 namespace lld {
 namespace elf {
-typedef llvm::object::ELFType<llvm::support::little, 2, true> AArch64ELFType;
 class AArch64LinkingContext;
 
 template <class ELFT> class AArch64TargetLayout : public TargetLayout<ELFT> {

Modified: lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonELFReader.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonELFReader.h?rev=220182&r1=220181&r2=220182&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonELFReader.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonELFReader.h Sun Oct 19 23:00:26 2014
@@ -16,6 +16,8 @@
 namespace lld {
 namespace elf {
 
+typedef llvm::object::ELFType<llvm::support::little, 2, false> HexagonELFType;
+
 struct HexagonDynamicFileCreateELFTraits {
   typedef llvm::ErrorOr<std::unique_ptr<lld::SharedLibraryFile>> result_type;
 
@@ -43,6 +45,17 @@ public:
   HexagonELFObjectReader(bool atomizeStrings)
       : ELFObjectReader(atomizeStrings) {}
 
+  bool canParse(file_magic magic, StringRef ext,
+                const MemoryBuffer &buf) const override {
+    const uint8_t *data =
+        reinterpret_cast<const uint8_t *>(buf.getBuffer().data());
+    const llvm::object::Elf_Ehdr_Impl<HexagonELFType> *elfHeader =
+        reinterpret_cast<const llvm::object::Elf_Ehdr_Impl<HexagonELFType> *>(
+            data);
+    return ELFObjectReader::canParse(magic, ext, buf) &&
+           elfHeader->e_machine == llvm::ELF::EM_HEXAGON;
+  }
+
   std::error_code
   parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,
             std::vector<std::unique_ptr<File>> &result) const override {
@@ -62,6 +75,17 @@ class HexagonELFDSOReader : public ELFDS
 public:
   HexagonELFDSOReader(bool useUndefines) : ELFDSOReader(useUndefines) {}
 
+  bool canParse(file_magic magic, StringRef ext,
+                const MemoryBuffer &buf) const override {
+    const uint8_t *data =
+        reinterpret_cast<const uint8_t *>(buf.getBuffer().data());
+    const llvm::object::Elf_Ehdr_Impl<HexagonELFType> *elfHeader =
+        reinterpret_cast<const llvm::object::Elf_Ehdr_Impl<HexagonELFType> *>(
+            data);
+    return ELFDSOReader::canParse(magic, ext, buf) &&
+           elfHeader->e_machine == llvm::ELF::EM_HEXAGON;
+  }
+
   std::error_code
   parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,
             std::vector<std::unique_ptr<File>> &result) const override {

Modified: lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h?rev=220182&r1=220181&r2=220182&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h Sun Oct 19 23:00:26 2014
@@ -19,7 +19,6 @@
 
 namespace lld {
 namespace elf {
-typedef llvm::object::ELFType<llvm::support::little, 2, false> HexagonELFType;
 class HexagonLinkingContext;
 
 /// \brief TargetLayout for Hexagon

Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFReader.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFReader.h?rev=220182&r1=220181&r2=220182&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFReader.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFReader.h Sun Oct 19 23:00:26 2014
@@ -15,6 +15,8 @@
 namespace lld {
 namespace elf {
 
+typedef llvm::object::ELFType<llvm::support::little, 2, false> Mips32ElELFType;
+
 struct MipsELFFileCreateTraits {
   typedef llvm::ErrorOr<std::unique_ptr<lld::File>> result_type;
 
@@ -29,6 +31,17 @@ class MipsELFObjectReader : public ELFOb
 public:
   MipsELFObjectReader(bool atomizeStrings) : ELFObjectReader(atomizeStrings) {}
 
+  bool canParse(file_magic magic, StringRef ext,
+                const MemoryBuffer &buf) const override {
+    const uint8_t *data =
+        reinterpret_cast<const uint8_t *>(buf.getBuffer().data());
+    const llvm::object::Elf_Ehdr_Impl<Mips32ElELFType> *elfHeader =
+        reinterpret_cast<const llvm::object::Elf_Ehdr_Impl<Mips32ElELFType> *>(
+            data);
+    return ELFObjectReader::canParse(magic, ext, buf) &&
+           elfHeader->e_machine == llvm::ELF::EM_MIPS;
+  }
+
   std::error_code
   parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,
             std::vector<std::unique_ptr<File>> &result) const override {

Modified: lld/trunk/lib/ReaderWriter/ELF/PPC/PPCELFFile.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/PPC/PPCELFFile.h?rev=220182&r1=220181&r2=220182&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/PPC/PPCELFFile.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/PPC/PPCELFFile.h Sun Oct 19 23:00:26 2014
@@ -22,7 +22,7 @@ public:
   PPCELFFile(StringRef name) : ELFFile<ELFT>(name) {}
 
   PPCELFFile(std::unique_ptr<MemoryBuffer> mb, bool atomizeStrings,
-             TargetHandlerBase *handler, error_code &ec)
+             TargetHandlerBase *handler, std::error_code &ec)
       : ELFFile<ELFT>(std::move(mb), atomizeStrings, handler, ec) {}
 };
 

Modified: lld/trunk/lib/ReaderWriter/ELF/PPC/PPCELFReader.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/PPC/PPCELFReader.h?rev=220182&r1=220181&r2=220182&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/PPC/PPCELFReader.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/PPC/PPCELFReader.h Sun Oct 19 23:00:26 2014
@@ -1,4 +1,4 @@
-//===- lib/ReaderWriter/ELF/PPCELFReader.h ------------------------------===//
+//===- lib/ReaderWriter/ELF/PPC/PPCELFReader.h ----------------------------===//
 //
 //                             The LLVM Linker
 //
@@ -7,8 +7,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLD_READER_WRITER_PPC_ELF_READER_H
-#define LLD_READER_WRITER_PPC_ELF_READER_H
+#ifndef LLD_READER_WRITER_PPC_PPC_ELF_READER_H
+#define LLD_READER_WRITER_PPC_PPC_ELF_READER_H
 
 #include "ELFReader.h"
 #include "PPCELFFile.h"
@@ -16,6 +16,8 @@
 namespace lld {
 namespace elf {
 
+typedef llvm::object::ELFType<llvm::support::big, 2, false> PPCELFType;
+
 struct PPCDynamicFileCreateELFTraits {
   typedef llvm::ErrorOr<std::unique_ptr<lld::SharedLibraryFile>> result_type;
 
@@ -40,19 +42,28 @@ class PPCELFObjectReader : public ELFObj
 public:
   PPCELFObjectReader(bool atomizeStrings) : ELFObjectReader(atomizeStrings) {}
 
-  virtual error_code
+  bool canParse(file_magic magic, StringRef ext,
+                const MemoryBuffer &buf) const override {
+    const uint8_t *data =
+        reinterpret_cast<const uint8_t *>(buf.getBuffer().data());
+    const llvm::object::Elf_Ehdr_Impl<PPCELFType> *elfHeader =
+        reinterpret_cast<const llvm::object::Elf_Ehdr_Impl<PPCELFType> *>(data);
+    return ELFObjectReader::canParse(magic, ext, buf) &&
+           elfHeader->e_machine == llvm::ELF::EM_PPC;
+  }
+
+  std::error_code
   parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,
-            std::vector<std::unique_ptr<File>> &result) const {
-    error_code ec;
+            std::vector<std::unique_ptr<File>> &result) const override {
     std::size_t maxAlignment =
         1ULL << llvm::countTrailingZeros(uintptr_t(mb->getBufferStart()));
     auto f = createELF<PPCELFFileCreateELFTraits>(
-        llvm::object::getElfArchType(&*mb), maxAlignment, std::move(mb),
-        _atomizeStrings);
-    if (!f)
-      return f;
+        llvm::object::getElfArchType(mb->getBuffer()), maxAlignment,
+        std::move(mb), _atomizeStrings);
+    if (std::error_code ec = f.getError())
+      return ec;
     result.push_back(std::move(*f));
-    return error_code();
+    return std::error_code();
   }
 };
 
@@ -60,22 +71,32 @@ class PPCELFDSOReader : public ELFDSORea
 public:
   PPCELFDSOReader(bool useUndefines) : ELFDSOReader(useUndefines) {}
 
-  virtual error_code
+  bool canParse(file_magic magic, StringRef ext,
+                const MemoryBuffer &buf) const override {
+    const uint8_t *data =
+        reinterpret_cast<const uint8_t *>(buf.getBuffer().data());
+    const llvm::object::Elf_Ehdr_Impl<PPCELFType> *elfHeader =
+        reinterpret_cast<const llvm::object::Elf_Ehdr_Impl<PPCELFType> *>(data);
+    return ELFDSOReader::canParse(magic, ext, buf) &&
+           elfHeader->e_machine == llvm::ELF::EM_PPC;
+  }
+
+  std::error_code
   parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,
-            std::vector<std::unique_ptr<File>> &result) const {
+            std::vector<std::unique_ptr<File>> &result) const override {
     std::size_t maxAlignment =
         1ULL << llvm::countTrailingZeros(uintptr_t(mb->getBufferStart()));
     auto f = createELF<PPCDynamicFileCreateELFTraits>(
-        llvm::object::getElfArchType(&*mb), maxAlignment, std::move(mb),
-        _useUndefines);
-    if (!f)
-      return f;
+        llvm::object::getElfArchType(mb->getBuffer()), maxAlignment,
+        std::move(mb), _useUndefines);
+    if (std::error_code ec = f.getError())
+      return ec;
     result.push_back(std::move(*f));
-    return error_code();
+    return std::error_code();
   }
 };
 
 } // namespace elf
 } // namespace lld
 
-#endif // LLD_READER_WRITER_ELF_READER_H
+#endif // LLD_READER_WRITER_PPC_PPC_ELF_READER_H

Modified: lld/trunk/lib/ReaderWriter/ELF/PPC/PPCTargetHandler.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/PPC/PPCTargetHandler.h?rev=220182&r1=220181&r2=220182&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/PPC/PPCTargetHandler.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/PPC/PPCTargetHandler.h Sun Oct 19 23:00:26 2014
@@ -12,10 +12,10 @@
 
 #include "DefaultTargetHandler.h"
 #include "TargetLayout.h"
+#include "PPCELFReader.h"
 
 namespace lld {
 namespace elf {
-typedef llvm::object::ELFType<llvm::support::big, 2, false> PPCELFType;
 class PPCLinkingContext;
 
 template <class ELFT> class PPCTargetLayout : public TargetLayout<ELFT> {
@@ -54,6 +54,14 @@ public:
     return *(_ppcRelocationHandler.get());
   }
 
+  std::unique_ptr<Reader> getObjReader(bool atomizeStrings) override {
+    return std::unique_ptr<Reader>(new PPCELFObjectReader(atomizeStrings));
+  }
+
+  std::unique_ptr<Reader> getDSOReader(bool useShlibUndefines) override {
+    return std::unique_ptr<Reader>(new PPCELFDSOReader(useShlibUndefines));
+  }
+
   std::unique_ptr<Writer> getWriter() override;
 
 private:

Modified: lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFReader.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFReader.h?rev=220182&r1=220181&r2=220182&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFReader.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFReader.h Sun Oct 19 23:00:26 2014
@@ -16,6 +16,8 @@
 namespace lld {
 namespace elf {
 
+typedef llvm::object::ELFType<llvm::support::little, 2, false> X86ELFType;
+
 struct X86DynamicFileCreateELFTraits {
   typedef llvm::ErrorOr<std::unique_ptr<lld::SharedLibraryFile>> result_type;
 
@@ -40,6 +42,16 @@ class X86ELFObjectReader : public ELFObj
 public:
   X86ELFObjectReader(bool atomizeStrings) : ELFObjectReader(atomizeStrings) {}
 
+  bool canParse(file_magic magic, StringRef ext,
+                const MemoryBuffer &buf) const override {
+    const uint8_t *data =
+        reinterpret_cast<const uint8_t *>(buf.getBuffer().data());
+    const llvm::object::Elf_Ehdr_Impl<X86ELFType> *elfHeader =
+        reinterpret_cast<const llvm::object::Elf_Ehdr_Impl<X86ELFType> *>(data);
+    return ELFObjectReader::canParse(magic, ext, buf) &&
+           elfHeader->e_machine == llvm::ELF::EM_386;
+  }
+
   std::error_code
   parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,
             std::vector<std::unique_ptr<File>> &result) const override {
@@ -59,6 +71,16 @@ class X86ELFDSOReader : public ELFDSORea
 public:
   X86ELFDSOReader(bool useUndefines) : ELFDSOReader(useUndefines) {}
 
+  bool canParse(file_magic magic, StringRef ext,
+                const MemoryBuffer &buf) const override {
+    const uint8_t *data =
+        reinterpret_cast<const uint8_t *>(buf.getBuffer().data());
+    const llvm::object::Elf_Ehdr_Impl<X86ELFType> *elfHeader =
+        reinterpret_cast<const llvm::object::Elf_Ehdr_Impl<X86ELFType> *>(data);
+    return ELFDSOReader::canParse(magic, ext, buf) &&
+           elfHeader->e_machine == llvm::ELF::EM_386;
+  }
+
   std::error_code
   parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,
             std::vector<std::unique_ptr<File>> &result) const override {

Modified: lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.h?rev=220182&r1=220181&r2=220182&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.h Sun Oct 19 23:00:26 2014
@@ -19,7 +19,6 @@
 namespace lld {
 namespace elf {
 
-typedef llvm::object::ELFType<llvm::support::little, 2, false> X86ELFType;
 class X86LinkingContext;
 
 template <class ELFT> class X86TargetLayout : public TargetLayout<ELFT> {

Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h?rev=220182&r1=220181&r2=220182&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h Sun Oct 19 23:00:26 2014
@@ -16,6 +16,8 @@
 namespace lld {
 namespace elf {
 
+typedef llvm::object::ELFType<llvm::support::little, 2, true> X86_64ELFType;
+
 struct X86_64DynamicFileCreateELFTraits {
   typedef llvm::ErrorOr<std::unique_ptr<lld::SharedLibraryFile>> result_type;
 
@@ -42,6 +44,17 @@ public:
   X86_64ELFObjectReader(bool atomizeStrings)
       : ELFObjectReader(atomizeStrings) {}
 
+  bool canParse(file_magic magic, StringRef ext,
+                const MemoryBuffer &buf) const override {
+    const uint8_t *data =
+        reinterpret_cast<const uint8_t *>(buf.getBuffer().data());
+    const llvm::object::Elf_Ehdr_Impl<X86_64ELFType> *elfHeader =
+        reinterpret_cast<const llvm::object::Elf_Ehdr_Impl<X86_64ELFType> *>(
+            data);
+    return ELFObjectReader::canParse(magic, ext, buf) &&
+           elfHeader->e_machine == llvm::ELF::EM_X86_64;
+  }
+
   std::error_code
   parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,
             std::vector<std::unique_ptr<File>> &result) const override {
@@ -61,6 +74,17 @@ class X86_64ELFDSOReader : public ELFDSO
 public:
   X86_64ELFDSOReader(bool useUndefines) : ELFDSOReader(useUndefines) {}
 
+  bool canParse(file_magic magic, StringRef ext,
+                const MemoryBuffer &buf) const override {
+    const uint8_t *data =
+        reinterpret_cast<const uint8_t *>(buf.getBuffer().data());
+    const llvm::object::Elf_Ehdr_Impl<X86_64ELFType> *elfHeader =
+        reinterpret_cast<const llvm::object::Elf_Ehdr_Impl<X86_64ELFType> *>(
+            data);
+    return ELFDSOReader::canParse(magic, ext, buf) &&
+           elfHeader->e_machine == llvm::ELF::EM_X86_64;
+  }
+
   std::error_code
   parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,
             std::vector<std::unique_ptr<File>> &result) const override {

Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h?rev=220182&r1=220181&r2=220182&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h Sun Oct 19 23:00:26 2014
@@ -19,7 +19,6 @@
 
 namespace lld {
 namespace elf {
-typedef llvm::object::ELFType<llvm::support::little, 2, true> X86_64ELFType;
 class X86_64LinkingContext;
 
 template <class ELFT> class X86_64TargetLayout : public TargetLayout<ELFT> {

Modified: lld/trunk/test/elf/X86_64/Inputs/constint.o
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/Inputs/constint.o?rev=220182&r1=220181&r2=220182&view=diff
==============================================================================
Binary files - no diff available.

Modified: lld/trunk/test/elf/X86_64/Inputs/no-interp-section.o
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/Inputs/no-interp-section.o?rev=220182&r1=220181&r2=220182&view=diff
==============================================================================
Binary files - no diff available.

Modified: lld/trunk/test/elf/X86_64/Inputs/note_ro_rw.o
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/Inputs/note_ro_rw.o?rev=220182&r1=220181&r2=220182&view=diff
==============================================================================
Binary files lld/trunk/test/elf/X86_64/Inputs/note_ro_rw.o (original) and lld/trunk/test/elf/X86_64/Inputs/note_ro_rw.o Sun Oct 19 23:00:26 2014 differ

Modified: lld/trunk/test/elf/X86_64/Inputs/rwint.o
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/Inputs/rwint.o?rev=220182&r1=220181&r2=220182&view=diff
==============================================================================
Binary files - no diff available.

Modified: lld/trunk/test/elf/abs.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/abs.test?rev=220182&r1=220181&r2=220182&view=diff
==============================================================================
--- lld/trunk/test/elf/abs.test (original)
+++ lld/trunk/test/elf/abs.test Sun Oct 19 23:00:26 2014
@@ -9,7 +9,7 @@
 
 # built using: "gcc -m32"
 #
-RUN: lld -flavor gnu --output-filetype=yaml -r %p/Inputs/abs-test.i386 | FileCheck -check-prefix=YAML %s
+RUN: lld -flavor gnu -target i386 --output-filetype=yaml -r %p/Inputs/abs-test.i386 | FileCheck -check-prefix=YAML %s
 
 YAML:  absolute-atoms:
 YAML:    - name:              absLocalSymbol





More information about the llvm-commits mailing list