From 1fc08f5e9ef733ef1ce6f363fecedc2260e78974 Mon Sep 17 00:00:00 2001 From: dim <dim@FreeBSD.org> Date: Sat, 14 Apr 2012 13:54:10 +0000 Subject: Vendor import of llvm trunk r154661: http://llvm.org/svn/llvm-project/llvm/trunk@r154661 --- lib/Support/Unix/Signals.inc | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'lib/Support/Unix/Signals.inc') diff --git a/lib/Support/Unix/Signals.inc b/lib/Support/Unix/Signals.inc index e286869..c9ec9fc 100644 --- a/lib/Support/Unix/Signals.inc +++ b/lib/Support/Unix/Signals.inc @@ -30,6 +30,10 @@ #include <dlfcn.h> #include <cxxabi.h> #endif +#if HAVE_MACH_MACH_H +#include <mach/mach.h> +#endif + using namespace llvm; static RETSIGTYPE SignalHandler(int Sig); // defined below. @@ -261,6 +265,22 @@ static void PrintStackTrace(void *) { /// SIGSEGV) is delivered to the process, print a stack trace and then exit. void llvm::sys::PrintStackTraceOnErrorSignal() { AddSignalHandler(PrintStackTrace, 0); + +#if defined(__APPLE__) + // Environment variable to disable any kind of crash dialog. + if (getenv("LLVM_DISABLE_CRASH_REPORT")) { + mach_port_t self = mach_task_self(); + + exception_mask_t mask = EXC_MASK_CRASH; + + kern_return_t ret = task_set_exception_ports(self, + mask, + MACH_PORT_NULL, + EXCEPTION_STATE_IDENTITY | MACH_EXCEPTION_CODES, + THREAD_STATE_NONE); + (void)ret; + } +#endif } -- cgit v1.1