[lld] r298445 - Define Config::Endianness.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 21 14:40:09 PDT 2017


Author: ruiu
Date: Tue Mar 21 16:40:08 2017
New Revision: 298445

URL: http://llvm.org/viewvc/llvm-project?rev=298445&view=rev
Log:
Define Config::Endianness.

This is a shorthand for `Config->IsLE ? support::little : support::big`.

Modified:
    lld/trunk/ELF/Config.h
    lld/trunk/ELF/Driver.cpp
    lld/trunk/ELF/LinkerScript.cpp
    lld/trunk/ELF/SyntheticSections.cpp

Modified: lld/trunk/ELF/Config.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Config.h?rev=298445&r1=298444&r2=298445&view=diff
==============================================================================
--- lld/trunk/ELF/Config.h (original)
+++ lld/trunk/ELF/Config.h Tue Mar 21 16:40:08 2017
@@ -16,6 +16,7 @@
 #include "llvm/Support/CachePruning.h"
 #include "llvm/Support/CodeGen.h"
 #include "llvm/Support/ELF.h"
+#include "llvm/Support/Endian.h"
 
 #include <vector>
 
@@ -175,6 +176,9 @@ struct Configuration {
   // True if the target is little-endian. False if the target is big-endian.
   bool IsLE;
 
+  // endianness::little if IsLE is true. endianness::big otherwise.
+  llvm::support::endianness Endianness;
+
   // True if the target is the little-endian MIPS64.
   //
   // The reason why we have this variable only for the MIPS is because

Modified: lld/trunk/ELF/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=298445&r1=298444&r2=298445&view=diff
==============================================================================
--- lld/trunk/ELF/Driver.cpp (original)
+++ lld/trunk/ELF/Driver.cpp Tue Mar 21 16:40:08 2017
@@ -715,6 +715,8 @@ static void setConfigs() {
 
   Config->CopyRelocs = (Config->Relocatable || Config->EmitRelocs);
   Config->IsLE = (Kind == ELF32LEKind || Kind == ELF64LEKind);
+  Config->Endianness =
+      Config->IsLE ? support::endianness::little : support::endianness::big;
   Config->IsMips64EL = (Kind == ELF64LEKind && Machine == EM_MIPS);
   Config->IsRela = Is64 || IsX32 || Config->MipsN32Abi;
   Config->Pic = Config->Pie || Config->Shared;

Modified: lld/trunk/ELF/LinkerScript.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/LinkerScript.cpp?rev=298445&r1=298444&r2=298445&view=diff
==============================================================================
--- lld/trunk/ELF/LinkerScript.cpp (original)
+++ lld/trunk/ELF/LinkerScript.cpp Tue Mar 21 16:40:08 2017
@@ -945,20 +945,18 @@ uint32_t LinkerScriptBase::getFiller(Str
 }
 
 static void writeInt(uint8_t *Buf, uint64_t Data, uint64_t Size) {
-  const endianness E = Config->IsLE ? endianness::little : endianness::big;
-
   switch (Size) {
   case 1:
     *Buf = (uint8_t)Data;
     break;
   case 2:
-    write16(Buf, Data, E);
+    write16(Buf, Data, Config->Endianness);
     break;
   case 4:
-    write32(Buf, Data, E);
+    write32(Buf, Data, Config->Endianness);
     break;
   case 8:
-    write64(Buf, Data, E);
+    write64(Buf, Data, Config->Endianness);
     break;
   default:
     llvm_unreachable("unsupported Size argument");

Modified: lld/trunk/ELF/SyntheticSections.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/SyntheticSections.cpp?rev=298445&r1=298444&r2=298445&view=diff
==============================================================================
--- lld/trunk/ELF/SyntheticSections.cpp (original)
+++ lld/trunk/ELF/SyntheticSections.cpp Tue Mar 21 16:40:08 2017
@@ -324,7 +324,7 @@ BuildIdSection::BuildIdSection()
       HashSize(getHashSize()) {}
 
 void BuildIdSection::writeTo(uint8_t *Buf) {
-  const endianness E = Config->IsLE ? endianness::little : endianness::big;
+  endianness E = Config->Endianness;
   write32(Buf, 4, E);                   // Name size
   write32(Buf + 4, HashSize, E);        // Content size
   write32(Buf + 8, NT_GNU_BUILD_ID, E); // Type
@@ -846,12 +846,10 @@ uint64_t MipsGotSection::getGp() const {
 }
 
 static void writeUint(uint8_t *Buf, uint64_t Val) {
-  support::endianness E =
-      Config->IsLE ? support::endianness::little : support::endianness::big;
   if (Config->Wordsize == 8)
-    write64(Buf, Val, E);
+    write64(Buf, Val, Config->Endianness);
   else
-    write32(Buf, Val, E);
+    write32(Buf, Val, Config->Endianness);
 }
 
 void MipsGotSection::writeTo(uint8_t *Buf) {




More information about the llvm-commits mailing list