From 0d5f099a6a15a08b74df5c54cae64c460b683b9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Gr=C3=A4nitz?= Date: Tue, 30 Jan 2024 09:56:27 +0100 Subject: [PATCH] [llvm-jitlink] Fix detectStubKind() for big endian systems This function is used in jitlink-check lines for LIT testing. In #78371 I missed to swap initial instruction bytes for systems that store the constants as big-endian. --- llvm/tools/llvm-jitlink/llvm-jitlink.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) 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(0xe300c000); + auto Armv7BxR12le = byte_swap(0xe12fff1c); + auto Thumbv7MovWTle = byte_swap(0x0c00f240); + auto Thumbv7BxR12le = byte_swap(0x4760); MemoryMatcher M(Stub.getContent()); if (M.matchMask(Thumbv7MovWTle)) {