[compiler-rt] r313115 - [compiler-rt] Move *Sanitizer:DEADLYSIGNAL printing into common part

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 12 21:46:37 PDT 2017


Author: vitalybuka
Date: Tue Sep 12 21:46:37 2017
New Revision: 313115

URL: http://llvm.org/viewvc/llvm-project?rev=313115&view=rev
Log:
[compiler-rt] Move *Sanitizer:DEADLYSIGNAL printing into common part

Summary: Part of https://github.com/google/sanitizers/issues/637

Reviewers: eugenis, alekseyshl

Subscribers: kubamracek, llvm-commits, dberris

Differential Revision: https://reviews.llvm.org/D37764

Modified:
    compiler-rt/trunk/lib/asan/asan_posix.cc
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cc

Modified: compiler-rt/trunk/lib/asan/asan_posix.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_posix.cc?rev=313115&r1=313114&r2=313115&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/asan_posix.cc (original)
+++ compiler-rt/trunk/lib/asan/asan_posix.cc Tue Sep 12 21:46:37 2017
@@ -35,11 +35,7 @@ namespace __asan {
 
 void AsanOnDeadlySignal(int signo, void *siginfo, void *context) {
   ScopedDeadlySignal signal_scope(GetCurrentThread());
-  // Write the first message using fd=2, just in case.
-  // It may actually fail to write in case stderr is closed.
-  internal_write(2, SanitizerToolName, internal_strlen(SanitizerToolName));
-  static const char kDeadlySignal[] = ":DEADLYSIGNAL\n";
-  internal_write(2, kDeadlySignal, sizeof(kDeadlySignal) - 1);
+  StartReportDeadlySignal();
   SignalContext sig = SignalContext::Create(siginfo, context);
   if (IsStackOverflow(((siginfo_t *)siginfo)->si_code, sig))
     ReportStackOverflow(sig);

Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h?rev=313115&r1=313114&r2=313115&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h Tue Sep 12 21:46:37 2017
@@ -308,9 +308,11 @@ void SetSoftRssLimitExceededCallback(voi
 // Functions related to signal handling.
 typedef void (*SignalHandlerType)(int, void *, void *);
 HandleSignalMode GetHandleSignalMode(int signum);
-bool IsStackOverflow(int code, const SignalContext &sig);
 void InstallDeadlySignalHandlers(SignalHandlerType handler);
 const char *DescribeSignalOrException(int signo);
+// Signal reporting.
+void StartReportDeadlySignal();
+bool IsStackOverflow(int code, const SignalContext &sig);
 // Alternative signal stack (POSIX-only).
 void SetAlternateSignalStack();
 void UnsetAlternateSignalStack();

Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cc?rev=313115&r1=313114&r2=313115&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cc (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cc Tue Sep 12 21:46:37 2017
@@ -260,6 +260,14 @@ bool IsStackOverflow(int code, const Sig
   return IsStackAccess && (code == si_SEGV_MAPERR || code == si_SEGV_ACCERR);
 }
 
+void StartReportDeadlySignal() {
+  // Write the first message using fd=2, just in case.
+  // It may actually fail to write in case stderr is closed.
+  internal_write(2, SanitizerToolName, internal_strlen(SanitizerToolName));
+  static const char kDeadlySignal[] = ":DEADLYSIGNAL\n";
+  internal_write(2, kDeadlySignal, sizeof(kDeadlySignal) - 1);
+}
+
 #endif  // SANITIZER_GO
 
 bool IsAccessibleMemoryRange(uptr beg, uptr size) {




More information about the llvm-commits mailing list