mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-18 18:56:43 +00:00
[LoongArch][sanitizer] Fix SC_ADDRERR_{RD,WR} missing in the musl environment (#108557)
Fixes #108550
This commit is contained in:
parent
00f239e48a
commit
1825cf28dc
@ -2018,6 +2018,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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user