tsan: replace struct copies where clang inserts memcpy() calls with explicit internal_memcpy() calls


git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@159431 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/tsan/rtl/tsan_interceptors.cc b/lib/tsan/rtl/tsan_interceptors.cc
index 3e41e7c..2e9426b 100644
--- a/lib/tsan/rtl/tsan_interceptors.cc
+++ b/lib/tsan/rtl/tsan_interceptors.cc
@@ -1304,9 +1304,9 @@
     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 @@
 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)