[Support] revert previous commit r270643

llvm-svn: 270670
This commit is contained in:
Gerolf Hoflehner 2016-05-25 05:51:05 +00:00
parent d3076ab36f
commit 7c1841a55e
1 changed files with 39 additions and 0 deletions

View File

@ -490,3 +490,42 @@ void llvm::sys::PrintStackTraceOnErrorSignal(bool DisableCrashReporting) {
}
#endif
}
/***/
// On Darwin, raise sends a signal to the main thread instead of the current
// thread. This has the unfortunate effect that assert() and abort() will end up
// bypassing our crash recovery attempts. We work around this for anything in
// the same linkage unit by just defining our own versions of the assert handler
// and abort.
#if defined(__APPLE__) && defined(ENABLE_CRASH_OVERRIDES)
#include <signal.h>
#include <pthread.h>
int raise(int sig) {
return pthread_kill(pthread_self(), sig);
}
void __assert_rtn(const char *func,
const char *file,
int line,
const char *expr) {
if (func)
fprintf(stderr, "Assertion failed: (%s), function %s, file %s, line %d.\n",
expr, func, file, line);
else
fprintf(stderr, "Assertion failed: (%s), file %s, line %d.\n",
expr, file, line);
abort();
}
void abort() {
raise(SIGABRT);
usleep(1000);
__builtin_trap();
}
#endif