forked from OSchip/llvm-project
[Support] Cleanup of an ancient Darwin work-around in Signals.inc (PR26174)
Patch by Jeremy Huddleston Sequoia llvm-svn: 270643
This commit is contained in:
parent
debfed9ef0
commit
1ac739b2b5
|
@ -490,42 +490,3 @@ 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
|
||||
|
|
Loading…
Reference in New Issue