Only use fast stack unwinding for sanitizers failure reports on FreeBSD
authorViktor Kutuzov <vkutuzov@accesssoftek.com>
Thu, 10 Jul 2014 09:11:15 +0000 (09:11 +0000)
committerViktor Kutuzov <vkutuzov@accesssoftek.com>
Thu, 10 Jul 2014 09:11:15 +0000 (09:11 +0000)
Differential Revision: http://reviews.llvm.org/D4420

llvm-svn: 212691

compiler-rt/lib/sanitizer_common/sanitizer_stacktrace.h

index c3ba193..fcaa777 100644 (file)
@@ -52,9 +52,12 @@ struct StackTrace {
 
   static bool WillUseFastUnwind(bool request_fast_unwind) {
     // Check if fast unwind is available. Fast unwind is the only option on Mac.
+    // It is also the only option on FreeBSD as the slow unwinding that
+    // leverages _Unwind_Backtrace() yields the call stack of the signal's
+    // handler and not of the code that raised the signal (as it does on Linux).
     if (!SANITIZER_CAN_FAST_UNWIND)
       return false;
-    else if (SANITIZER_MAC)
+    else if (SANITIZER_MAC != 0 || SANITIZER_FREEBSD != 0)
       return true;
     return request_fast_unwind;
   }