[llvm-branch-commits] [compiler-rt] 910dde5 - [LoongArch][sanitizer] Fix SC_ADDRERR_{RD, WR} missing in the musl environment (#108557)
Tobias Hieta via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Mon Sep 23 23:16:35 PDT 2024
Author: hev
Date: 2024-09-24T08:16:20+02:00
New Revision: 910dde5780f9e8f3a16612bd89b512b2594e9ab7
URL: https://github.com/llvm/llvm-project/commit/910dde5780f9e8f3a16612bd89b512b2594e9ab7
DIFF: https://github.com/llvm/llvm-project/commit/910dde5780f9e8f3a16612bd89b512b2594e9ab7.diff
LOG: [LoongArch][sanitizer] Fix SC_ADDRERR_{RD,WR} missing in the musl environment (#108557)
Fixes #108550
(cherry picked from commit 1825cf28dc83113200b623ebcf063eea35ade79a)
Added:
Modified:
compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp
Removed:
################################################################################
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp
index 648df0c4e5a760..b9b1f496df7c98 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp
@@ -2014,6 +2014,18 @@ SignalContext::WriteFlag SignalContext::GetWriteFlag() const {
return Unknown;
return esr & ESR_ELx_WNR ? Write : Read;
# elif defined(__loongarch__)
+ // In the musl environment, the Linux kernel uapi sigcontext.h is not
+ // included in signal.h. To avoid missing the SC_ADDRERR_{RD,WR} macros,
+ // copy them here. The LoongArch Linux kernel uapi is already stable,
+ // so there's no need to worry about the value changing.
+# ifndef SC_ADDRERR_RD
+ // Address error was due to memory load
+# define SC_ADDRERR_RD (1 << 30)
+# endif
+# ifndef SC_ADDRERR_WR
+ // Address error was due to memory store
+# define SC_ADDRERR_WR (1 << 31)
+# endif
u32 flags = ucontext->uc_mcontext.__flags;
if (flags & SC_ADDRERR_RD)
return SignalContext::Read;
More information about the llvm-branch-commits
mailing list