<div dir="ltr">Hmm, why did this have to get reverted?</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, May 24, 2016 at 10:51 PM, Gerolf Hoflehner via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: ghoflehner<br>
Date: Wed May 25 00:51:05 2016<br>
New Revision: 270670<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=270670&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=270670&view=rev</a><br>
Log:<br>
[Support] revert previous commit r270643<br>
<br>
Modified:<br>
    llvm/trunk/lib/Support/Unix/Signals.inc<br>
<br>
Modified: llvm/trunk/lib/Support/Unix/Signals.inc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/Unix/Signals.inc?rev=270670&r1=270669&r2=270670&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/Unix/Signals.inc?rev=270670&r1=270669&r2=270670&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Support/Unix/Signals.inc (original)<br>
+++ llvm/trunk/lib/Support/Unix/Signals.inc Wed May 25 00:51:05 2016<br>
@@ -490,3 +490,42 @@ void llvm::sys::PrintStackTraceOnErrorSi<br>
   }<br>
 #endif<br>
 }<br>
+<br>
+<br>
+/***/<br>
+<br>
+// On Darwin, raise sends a signal to the main thread instead of the current<br>
+// thread. This has the unfortunate effect that assert() and abort() will end up<br>
+// bypassing our crash recovery attempts. We work around this for anything in<br>
+// the same linkage unit by just defining our own versions of the assert handler<br>
+// and abort.<br>
+<br>
+#if defined(__APPLE__) && defined(ENABLE_CRASH_OVERRIDES)<br>
+<br>
+#include <signal.h><br>
+#include <pthread.h><br>
+<br>
+int raise(int sig) {<br>
+  return pthread_kill(pthread_self(), sig);<br>
+}<br>
+<br>
+void __assert_rtn(const char *func,<br>
+                  const char *file,<br>
+                  int line,<br>
+                  const char *expr) {<br>
+  if (func)<br>
+    fprintf(stderr, "Assertion failed: (%s), function %s, file %s, line %d.\n",<br>
+            expr, func, file, line);<br>
+  else<br>
+    fprintf(stderr, "Assertion failed: (%s), file %s, line %d.\n",<br>
+            expr, file, line);<br>
+  abort();<br>
+}<br>
+<br>
+void abort() {<br>
+  raise(SIGABRT);<br>
+  usleep(1000);<br>
+  __builtin_trap();<br>
+}<br>
+<br>
+#endif<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>