[compiler-rt] [sanitizer_common] Handle ptrace on Linux/sparc64 (PR #109310)
Vitaly Buka via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 23 22:08:25 PDT 2024
================
@@ -2530,18 +2530,26 @@ PRE_SYSCALL(ptrace)(long request, long pid, long addr, long data) {
# if !SANITIZER_ANDROID && \
(defined(__i386) || defined(__x86_64) || defined(__mips64) || \
defined(__powerpc64__) || defined(__aarch64__) || defined(__s390__) || \
- defined(__loongarch__) || SANITIZER_RISCV64)
- if (data) {
+ defined(__loongarch__) || SANITIZER_RISCV64 || defined(__sparc__))
+ long data_arg = data;
----------------
vitalybuka wrote:
maybe:
compiler-rt/lib/sanitizer_common/sanitizer_common_ptrace.h
```
long data_arg = ptrace_data_or_arg(data, arg, request);
template<class T>
inline T ptrace_data_or_arg(T data, T arg, request) {
# if defined(__sparc__)
// The meanings of addr and data are reversed for a few requests on
// Linux/sparc64.
if (request == ptrace_getregs || request == ptrace_getfpregs ||
request == ptrace_setregs || request == ptrace_setfpregs)
return addr;
#else
return data;
# endif
}
```
https://github.com/llvm/llvm-project/pull/109310
More information about the llvm-commits
mailing list