-
Notifications
You must be signed in to change notification settings - Fork 15.2k
[NFCI][sanitizer] Refactor SIGNAL_INTERCEPTOR_SIGACTION_IMPL to not immediately return #162916
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…mmediately return This enables follow-up work (llvm#162746), which will inspect the return value and do additional work before returning.
@llvm/pr-subscribers-compiler-rt-sanitizer Author: Thurston Dang (thurstond) ChangesThis enables follow-up work (#162746), which will inspect the return value and do additional work before returning. Full diff: https://github.com/llvm/llvm-project/pull/162916.diff 1 Files Affected:
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)
|
} | ||
|
||
uptr ret; | ||
SIGNAL_INTERCEPTOR_SIGACTION_IMPL(signum, act, oldact); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can we make it
return SIGNAL_INTERCEPTOR_SIGACTION_IMPL(signum, act, oldact);?
if (GetHandleSignalMode(signum) == kHandleSignalExclusive) | ||
return (uptr) nullptr; | ||
|
||
int ret; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually maybe better alternative do not change defines at all
int ret = +[](signal, signum, handler) {
SIGNAL_INTERCEPTOR_SIGNAL_IMPL(signal, signum, handler);
}(signal, signum, handler);
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ack, will close this pull request and use the lambdas in the other patch as needed
This enables follow-up work (#162746), which will inspect the return value and do additional work before returning.