diff --git a/0001-AVR-Fix-endianness-handling-in-AVR-MC.patch b/0001-AVR-Fix-endianness-handling-in-AVR-MC.patch new file mode 100644 index 0000000..aba1d2a --- /dev/null +++ b/0001-AVR-Fix-endianness-handling-in-AVR-MC.patch @@ -0,0 +1,42 @@ +From 29b4d8f19e30910c099c5453da258843d6b7869a Mon Sep 17 00:00:00 2001 +From: serge_sans_paille +Date: Tue, 24 Sep 2019 10:20:08 +0200 +Subject: [PATCH] [AVR] Fix endianness handling in AVR MC + +Differential Revision: https://reviews.llvm.org/D67926 +--- + llvm/lib/Target/AVR/MCTargetDesc/AVRMCCodeEmitter.cpp | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +diff --git a/llvm/lib/Target/AVR/MCTargetDesc/AVRMCCodeEmitter.cpp b/llvm/lib/Target/AVR/MCTargetDesc/AVRMCCodeEmitter.cpp +index bc048877868..db995e24756 100644 +--- a/llvm/lib/Target/AVR/MCTargetDesc/AVRMCCodeEmitter.cpp ++++ b/llvm/lib/Target/AVR/MCTargetDesc/AVRMCCodeEmitter.cpp +@@ -25,6 +25,7 @@ + #include "llvm/MC/MCRegisterInfo.h" + #include "llvm/MC/MCSubtargetInfo.h" + #include "llvm/Support/Casting.h" ++#include "llvm/Support/EndianStream.h" + #include "llvm/Support/raw_ostream.h" + + #define DEBUG_TYPE "mccodeemitter" +@@ -268,14 +269,11 @@ unsigned AVRMCCodeEmitter::getMachineOpValue(const MCInst &MI, + void AVRMCCodeEmitter::emitInstruction(uint64_t Val, unsigned Size, + const MCSubtargetInfo &STI, + raw_ostream &OS) const { +- const uint16_t *Words = reinterpret_cast(&Val); + size_t WordCount = Size / 2; + + for (int64_t i = WordCount - 1; i >= 0; --i) { +- uint16_t Word = Words[i]; +- +- OS << (uint8_t) ((Word & 0x00ff) >> 0); +- OS << (uint8_t) ((Word & 0xff00) >> 8); ++ uint16_t Word = (Val >> (i * 16)) & 0xFFFF; ++ support::endian::write(OS, Word, support::endianness::little); + } + } + +-- +2.20.1 + diff --git a/llvm.spec b/llvm.spec index 1f544f4..39c876c 100644 --- a/llvm.spec +++ b/llvm.spec @@ -14,7 +14,7 @@ %global min_ver 0 %global patch_ver 0 #%%global rc_ver 3 -%global baserelease 3 +%global baserelease 4 %if %{with compat_build} @@ -56,6 +56,7 @@ Patch0: 0001-Filter-out-cxxflags-not-supported-by-clang.patch Patch1: 0001-Pass-target-to-gold-linker-to-avoid-faliures-on-i686.patch Patch2: 0001-CMake-Split-static-library-exports-into-their-own-ex.patch Patch3: 0001-CMake-Split-test-binary-exports-into-their-own-expor.patch +Patch4: 0001-AVR-Fix-endianness-handling-in-AVR-MC.patch BuildRequires: gcc BuildRequires: gcc-c++ @@ -200,9 +201,7 @@ cd _build %if %{with gold} -DLLVM_BINUTILS_INCDIR=%{_includedir} \ %endif -%ifnarch s390 s390x -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=AVR \ -%endif \ -DLLVM_BUILD_RUNTIME:BOOL=ON \ \ @@ -480,6 +479,9 @@ fi %endif %changelog +* Mon Nov 25 2019 sguelton@redhat.com - 9.0.0-4 +- Activate AVR on all architectures + * Mon Sep 30 2019 Tom Stellard - 9.0.0-3 - Build libLLVM.so first to avoid OOM errors