[compiler-rt] [NFCI][sanitizer] Refactor SIGNAL_INTERCEPTOR_SIGACTION_IMPL to not immediately return (PR #162916)
Thurston Dang via llvm-commits
llvm-commits at lists.llvm.org
Fri Oct 10 13:25:12 PDT 2025
https://github.com/thurstond created https://github.com/llvm/llvm-project/pull/162916
This enables follow-up work (https://github.com/llvm/llvm-project/pull/162746), which will inspect the return value and do additional work before returning.
>From 47abf88e49a2a9394818ab1eabb442788d8931d8 Mon Sep 17 00:00:00 2001
From: Thurston Dang <thurston at google.com>
Date: Fri, 10 Oct 2025 20:04:55 +0000
Subject: [PATCH] [NFCI][sanitizer] Refactor SIGNAL_INTERCEPTOR_SIGACTION_IMPL
to not immediately return
This enables follow-up work (https://github.com/llvm/llvm-project/pull/162746), which will
inspect the return value and do additional work before returning.
---
.../sanitizer_signal_interceptors.inc | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_signal_interceptors.inc b/compiler-rt/lib/sanitizer_common/sanitizer_signal_interceptors.inc
index 94e4e2954a3b9..046e572d3c2e2 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_signal_interceptors.inc
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_signal_interceptors.inc
@@ -24,8 +24,10 @@ using namespace __sanitizer;
#endif
#ifndef SIGNAL_INTERCEPTOR_SIGNAL_IMPL
-#define SIGNAL_INTERCEPTOR_SIGNAL_IMPL(func, signum, handler) \
- { return REAL(func)(signum, handler); }
+# define SIGNAL_INTERCEPTOR_SIGNAL_IMPL(func, signum, handler) \
+ { \
+ ret = REAL(func)(signum, handler); \
+ }
#endif
#ifndef SIGNAL_INTERCEPTOR_SIGACTION_IMPL
@@ -35,9 +37,9 @@ using namespace __sanitizer;
Printf( \
"Warning: REAL(sigaction_symname) == nullptr. This may happen " \
"if you link with ubsan statically. Sigaction will not work.\n"); \
- return -1; \
+ ret = -1; \
} \
- return REAL(sigaction_symname)(signum, act, oldact); \
+ ret = REAL(sigaction_symname)(signum, act, oldact); \
}
#endif
@@ -45,7 +47,10 @@ using namespace __sanitizer;
INTERCEPTOR(uptr, bsd_signal, int signum, uptr handler) {
SIGNAL_INTERCEPTOR_ENTER();
if (GetHandleSignalMode(signum) == kHandleSignalExclusive) return 0;
+
+ int ret;
SIGNAL_INTERCEPTOR_SIGNAL_IMPL(bsd_signal, signum, handler);
+ return ret;
}
#define INIT_BSD_SIGNAL COMMON_INTERCEPT_FUNCTION(bsd_signal)
#else // SANITIZER_INTERCEPT_BSD_SIGNAL
@@ -57,7 +62,10 @@ INTERCEPTOR(uptr, signal, int signum, uptr handler) {
SIGNAL_INTERCEPTOR_ENTER();
if (GetHandleSignalMode(signum) == kHandleSignalExclusive)
return (uptr) nullptr;
+
+ int ret;
SIGNAL_INTERCEPTOR_SIGNAL_IMPL(signal, signum, handler);
+ return ret;
}
#define INIT_SIGNAL COMMON_INTERCEPT_FUNCTION(signal)
@@ -68,7 +76,10 @@ INTERCEPTOR(int, sigaction_symname, int signum,
if (!oldact) return 0;
act = nullptr;
}
+
+ uptr ret;
SIGNAL_INTERCEPTOR_SIGACTION_IMPL(signum, act, oldact);
+ return ret;
}
#define INIT_SIGACTION COMMON_INTERCEPT_FUNCTION(sigaction_symname)
More information about the llvm-commits
mailing list