[lld] r221427 - [ELF] Implement isLittleEndian for all architectures

Shankar Easwaran shankarke at gmail.com
Wed Nov 5 18:03:39 PST 2014


Author: shankare
Date: Wed Nov  5 20:03:38 2014
New Revision: 221427

URL: http://llvm.org/viewvc/llvm-project?rev=221427&view=rev
Log:
[ELF] Implement isLittleEndian for all architectures

Modified:
    lld/trunk/include/lld/ReaderWriter/ELFLinkingContext.h
    lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h
    lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp
    lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.h
    lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.h
    lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h

Modified: lld/trunk/include/lld/ReaderWriter/ELFLinkingContext.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/ReaderWriter/ELFLinkingContext.h?rev=221427&r1=221426&r2=221427&view=diff
==============================================================================
--- lld/trunk/include/lld/ReaderWriter/ELFLinkingContext.h (original)
+++ lld/trunk/include/lld/ReaderWriter/ELFLinkingContext.h Wed Nov  5 20:03:38 2014
@@ -59,7 +59,7 @@ public:
 
   llvm::Triple getTriple() const { return _triple; }
   virtual bool is64Bits() const;
-  virtual bool isLittleEndian() const;
+  virtual bool isLittleEndian() const = 0;
   virtual uint64_t getPageSize() const { return 0x1000; }
   OutputMagic getOutputMagic() const { return _outputMagic; }
   uint16_t getOutputELFType() const { return _outputELFType; }

Modified: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h?rev=221427&r1=221426&r2=221427&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h Wed Nov  5 20:03:38 2014
@@ -57,6 +57,10 @@ public:
     }
   }
 
+  bool isLittleEndian() const override {
+    return AArch64ELFType::TargetEndianness == llvm::support::little;
+  }
+
   bool isCopyRelocation(const Reference &r) const override {
     if (r.kindNamespace() != Reference::KindNamespace::ELF)
       return false;

Modified: lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp?rev=221427&r1=221426&r2=221427&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp (original)
+++ lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp Wed Nov  5 20:03:38 2014
@@ -66,11 +66,6 @@ ELFLinkingContext::ELFLinkingContext(
 
 bool ELFLinkingContext::is64Bits() const { return getTriple().isArch64Bit(); }
 
-bool ELFLinkingContext::isLittleEndian() const {
-  // TODO: Do this properly. It is not defined purely by arch.
-  return true;
-}
-
 void ELFLinkingContext::addPasses(PassManager &pm) {
   if (_runLayoutPass)
     pm.add(std::unique_ptr<Pass>(new LayoutPass(registry())));

Modified: lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.h?rev=221427&r1=221426&r2=221427&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.h Wed Nov  5 20:03:38 2014
@@ -62,6 +62,10 @@ public:
     }
   }
 
+  bool isLittleEndian() const override {
+    return HexagonELFType::TargetEndianness == llvm::support::little;
+  }
+
   /// \brief Create Internal files for Init/Fini
   void createInternalFiles(
       std::vector<std::unique_ptr<File>> &result) const override;

Modified: lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.h?rev=221427&r1=221426&r2=221427&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.h Wed Nov  5 20:03:38 2014
@@ -23,6 +23,10 @@ public:
       : ELFLinkingContext(triple, std::unique_ptr<TargetHandlerBase>(
                                       new X86TargetHandler(*this))) {}
 
+  bool isLittleEndian() const override {
+    return X86ELFType::TargetEndianness == llvm::support::little;
+  }
+
   /// \brief X86 has only two relative relocation
   /// a) for supporting IFUNC relocs - R_386_IRELATIVE
   /// b) for supporting relative relocs - R_386_RELATIVE

Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h?rev=221427&r1=221426&r2=221427&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h Wed Nov  5 20:03:38 2014
@@ -56,6 +56,10 @@ public:
     }
   }
 
+  bool isLittleEndian() const override {
+    return X86_64ELFType::TargetEndianness == llvm::support::little;
+  }
+
   bool isCopyRelocation(const Reference &r) const override {
     if (r.kindNamespace() != Reference::KindNamespace::ELF)
       return false;





More information about the llvm-commits mailing list