[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