[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