[compiler-rt] 009e176 - [sanitizer_common] Fix TgKill on Solaris (#98000)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 16 06:50:54 PDT 2024
Author: Rainer Orth
Date: 2024-07-16T15:50:51+02:00
New Revision: 009e176b880f660e7b01dda1f665a1b221375fd8
URL: https://github.com/llvm/llvm-project/commit/009e176b880f660e7b01dda1f665a1b221375fd8
DIFF: https://github.com/llvm/llvm-project/commit/009e176b880f660e7b01dda1f665a1b221375fd8.diff
LOG: [sanitizer_common] Fix TgKill on Solaris (#98000)
While working on safestack on Solaris, I noticed that the `TgKill`
implementation is wrong here: `TgKill` is supposed to return `-1` on
error, while `thr_kill` returns `errno` instead. This patch compensates
for that.
This went unnoticed so far since `TgKill` has been unused.
Tested on `amd64-pc-solaris2.11` and `sparcv9-sun-solaris2.11` together
with a subsequent patch to make safestack actually work on Solaris.
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 f7f5698a5f32d..7935c88204a05 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp
@@ -574,7 +574,9 @@ int TgKill(pid_t pid, tid_t tid, int sig) {
return internal_syscall(SYSCALL(thr_kill2), pid, tid, sig);
# elif SANITIZER_SOLARIS
(void)pid;
- return thr_kill(tid, sig);
+ errno = thr_kill(tid, sig);
+ // TgKill is expected to return -1 on error, not an errno.
+ return errno != 0 ? -1 : 0;
# endif
}
# endif
More information about the llvm-commits
mailing list