[llvm] 8a5bdd8 - [llvm-jitlink] Fix detectStubKind() for big endian systems (#79970)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Jan 30 08:00:33 PST 2024
Author: Stefan Gränitz
Date: 2024-01-30T17:00:28+01:00
New Revision: 8a5bdd899f3cb57024d92b96c16e805ca9924ac7
URL: https://github.com/llvm/llvm-project/commit/8a5bdd899f3cb57024d92b96c16e805ca9924ac7
DIFF: https://github.com/llvm/llvm-project/commit/8a5bdd899f3cb57024d92b96c16e805ca9924ac7.diff
LOG: [llvm-jitlink] Fix detectStubKind() for big endian systems (#79970)
This function is used in `jitlink-check` lines in LIT tests. In #78371 I
missed to swap initial instruction bytes for systems that store the
constants as big-endian.
Added:
Modified:
llvm/tools/llvm-jitlink/llvm-jitlink.cpp
Removed:
################################################################################
diff --git a/llvm/tools/llvm-jitlink/llvm-jitlink.cpp b/llvm/tools/llvm-jitlink/llvm-jitlink.cpp
index b2a133860197d..769ed17ac4cbd 100644
--- a/llvm/tools/llvm-jitlink/llvm-jitlink.cpp
+++ b/llvm/tools/llvm-jitlink/llvm-jitlink.cpp
@@ -1294,10 +1294,11 @@ class MemoryMatcher {
};
static StringRef detectStubKind(const Session::MemoryRegionInfo &Stub) {
- constexpr uint32_t Armv7MovWTle = 0xe300c000;
- constexpr uint32_t Armv7BxR12le = 0xe12fff1c;
- constexpr uint32_t Thumbv7MovWTle = 0x0c00f240;
- constexpr uint16_t Thumbv7BxR12le = 0x4760;
+ using namespace support::endian;
+ auto Armv7MovWTle = byte_swap<uint32_t, endianness::little>(0xe300c000);
+ auto Armv7BxR12le = byte_swap<uint32_t, endianness::little>(0xe12fff1c);
+ auto Thumbv7MovWTle = byte_swap<uint32_t, endianness::little>(0x0c00f240);
+ auto Thumbv7BxR12le = byte_swap<uint16_t, endianness::little>(0x4760);
MemoryMatcher M(Stub.getContent());
if (M.matchMask(Thumbv7MovWTle)) {
More information about the llvm-commits
mailing list