summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2012-06-29 15:26:55 +0000
committerDmitry Vyukov <dvyukov@google.com>2012-06-29 15:26:55 +0000
commitef5a5a5650bd278f127933e8130733d254e4b2f3 (patch)
tree6b75e14befed6e8686f83846e3d162e5f834f4a2 /compiler-rt/lib
parent5bb47a6e0e901c3934155f8481f7fe62cbd94651 (diff)
downloadbcm5719-llvm-ef5a5a5650bd278f127933e8130733d254e4b2f3.tar.gz
bcm5719-llvm-ef5a5a5650bd278f127933e8130733d254e4b2f3.zip
tsan: replace struct copies where clang inserts memcpy() calls with explicit internal_memcpy() calls
llvm-svn: 159431
Diffstat (limited to 'compiler-rt/lib')
-rw-r--r--compiler-rt/lib/tsan/rtl/tsan_interceptors.cc11
1 files changed, 6 insertions, 5 deletions
diff --git a/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc b/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc
index 3e41e7c7020..2e9426bc16f 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc
+++ b/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc
@@ -1304,9 +1304,9 @@ static void ALWAYS_INLINE rtl_generic_sighandler(bool sigact, int sig,
signal->armed = true;
signal->sigaction = sigact;
if (info)
- signal->siginfo = *info;
+ internal_memcpy(&signal->siginfo, info, sizeof(*info));
if (ctx)
- signal->ctx = *(ucontext_t*)ctx;
+ internal_memcpy(&signal->ctx, ctx, sizeof(signal->ctx));
sctx->pending_signal_count++;
}
}
@@ -1322,11 +1322,12 @@ static void rtl_sigaction(int sig, my_siginfo_t *info, void *ctx) {
TSAN_INTERCEPTOR(int, sigaction, int sig, sigaction_t *act, sigaction_t *old) {
SCOPED_TSAN_INTERCEPTOR(sigaction, sig, act, old);
if (old)
- *old = sigactions[sig];
+ internal_memcpy(old, &sigactions[sig], sizeof(*old));
if (act == 0)
return 0;
- sigactions[sig] = *act;
- sigaction_t newact = *act;
+ internal_memcpy(&sigactions[sig], act, sizeof(*act));
+ sigaction_t newact;
+ internal_memcpy(&newact, act, sizeof(newact));
sigfillset(&newact.sa_mask);
if (act->sa_handler != SIG_IGN && act->sa_handler != SIG_DFL) {
if (newact.sa_flags & SA_SIGINFO)
OpenPOWER on IntegriCloud