From 6ca78590b388a5b7cb55d8836b7c5082153062ff Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Fri, 10 Nov 2017 22:41:52 +0000 Subject: [tsan] Move out more types to sanitizer_common https://github.com/google/sanitizers/issues/637 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@317946 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/tsan/rtl/tsan_interceptors.cc | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) (limited to 'lib/tsan') diff --git a/lib/tsan/rtl/tsan_interceptors.cc b/lib/tsan/rtl/tsan_interceptors.cc index 1c704e933..17daf9e50 100644 --- a/lib/tsan/rtl/tsan_interceptors.cc +++ b/lib/tsan/rtl/tsan_interceptors.cc @@ -144,13 +144,6 @@ typedef long long_t; // NOLINT # define F_TLOCK 2 /* Test and lock a region for exclusive use. */ # define F_TEST 3 /* Test a region for other processes locks. */ -typedef void (*sighandler_t)(int sig); -typedef void (*sigactionhandler_t)(int sig, __sanitizer_siginfo *siginfo, - void *uctx); - -const sighandler_t SIG_DFL = (sighandler_t)0; -const sighandler_t SIG_IGN = (sighandler_t)1; -const sighandler_t SIG_ERR = (sighandler_t)-1; #if SANITIZER_FREEBSD || SANITIZER_MAC || SANITIZER_NETBSD const int SA_SIGINFO = 0x40; const int SIG_SETMASK = 3; @@ -1827,11 +1820,11 @@ static void CallUserSignalHandler(ThreadState *thr, bool sync, bool acquire, // because the handler can reset it. volatile uptr pc = sigact ? (uptr)sigactions[sig].sigaction : (uptr)sigactions[sig].handler; - if (pc != (uptr)SIG_DFL && pc != (uptr)SIG_IGN) { + if (pc != sig_dfl && pc != sig_ign) { if (sigact) - ((sigactionhandler_t)pc)(sig, info, uctx); + ((__sanitizer_sigactionhandler_ptr)pc)(sig, info, uctx); else - ((sighandler_t)pc)(sig); + ((__sanitizer_sighandler_ptr)pc)(sig); } if (!ctx->after_multithreaded_fork) { thr->ignore_reads_and_writes = ignore_reads_and_writes; @@ -1952,14 +1945,16 @@ static void rtl_sigaction(int sig, __sanitizer_siginfo *info, void *ctx) { static int sigaction_impl(int sig, __sanitizer_sigaction *act, __sanitizer_sigaction *old); -static sighandler_t signal_impl(int sig, sighandler_t h); +static __sanitizer_sighandler_ptr signal_impl(int sig, + __sanitizer_sighandler_ptr h); TSAN_INTERCEPTOR(int, sigaction, int sig, __sanitizer_sigaction *act, __sanitizer_sigaction *old) { return sigaction_impl(sig, act, old); } -TSAN_INTERCEPTOR(sighandler_t, signal, int sig, sighandler_t h) { +TSAN_INTERCEPTOR(__sanitizer_sighandler_ptr, signal, int sig, + __sanitizer_sighandler_ptr h) { return signal_impl(sig, h); } @@ -2293,7 +2288,8 @@ int sigaction_impl(int sig, __sanitizer_sigaction *act, // and signal handler reads the handler concurrently. It it can read // some bytes from old value and some bytes from new value. // Use volatile to prevent insertion of memcpy. - sigactions[sig].handler = *(volatile sighandler_t *)&act->handler; + sigactions[sig].handler = + *(volatile __sanitizer_sighandler_ptr *)&act->handler; sigactions[sig].sa_flags = *(volatile int *)&act->sa_flags; internal_memcpy(&sigactions[sig].sa_mask, &act->sa_mask, sizeof(sigactions[sig].sa_mask)); @@ -2303,7 +2299,7 @@ int sigaction_impl(int sig, __sanitizer_sigaction *act, __sanitizer_sigaction newact; internal_memcpy(&newact, act, sizeof(newact)); internal_sigfillset(&newact.sa_mask); - if (act->handler != SIG_IGN && act->handler != SIG_DFL) { + if ((uptr)act->handler != sig_ign && (uptr)act->handler != sig_dfl) { if (newact.sa_flags & SA_SIGINFO) newact.sigaction = rtl_sigaction; else @@ -2314,14 +2310,15 @@ int sigaction_impl(int sig, __sanitizer_sigaction *act, return res; } -static sighandler_t signal_impl(int sig, sighandler_t h) { +static __sanitizer_sighandler_ptr signal_impl(int sig, + __sanitizer_sighandler_ptr h) { __sanitizer_sigaction act; act.handler = h; internal_memset(&act.sa_mask, -1, sizeof(act.sa_mask)); act.sa_flags = 0; __sanitizer_sigaction old; int res = sigaction(sig, &act, &old); - if (res) return SIG_ERR; + if (res) return (__sanitizer_sighandler_ptr)sig_err; return old.handler; } -- cgit v1.2.3