summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/Unix
diff options
context:
space:
mode:
authorBob Wilson <bob.wilson@apple.com>2016-11-14 17:56:18 +0000
committerBob Wilson <bob.wilson@apple.com>2016-11-14 17:56:18 +0000
commitd7bef6972dcf7729f95affba26f7cb9ab0a98652 (patch)
tree6d8068abdc9b7b794a456d1431f4f76b86fc209e /llvm/lib/Support/Unix
parent171a7022aa50af1d22d298ccf7251c2a0fc71100 (diff)
downloadbcm5719-llvm-d7bef6972dcf7729f95affba26f7cb9ab0a98652.tar.gz
bcm5719-llvm-d7bef6972dcf7729f95affba26f7cb9ab0a98652.zip
Use _Unwind_Backtrace on Apple platforms.
Darwin's backtrace() function does not work with sigaltstack (which was enabled when available with r270395) — it does a sanity check to make sure that the current frame pointer is within the expected stack area (which it is not when using an alternate stack) and gives up otherwise. The alternative of _Unwind_Backtrace seems to work fine on macOS, so use that when backtrace() fails. Note that we then use backtrace_symbols_fd() with the addresses from _Unwind_Backtrace, but I’ve tested that and it also seems to work fine. rdar://problem/28646552 llvm-svn: 286851
Diffstat (limited to 'llvm/lib/Support/Unix')
-rw-r--r--llvm/lib/Support/Unix/Signals.inc2
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Support/Unix/Signals.inc b/llvm/lib/Support/Unix/Signals.inc
index 9752b70644c..3750d7f4c09 100644
--- a/llvm/lib/Support/Unix/Signals.inc
+++ b/llvm/lib/Support/Unix/Signals.inc
@@ -48,7 +48,7 @@
// _Unwind_Backtrace function, but on FreeBSD the configure test passes
// despite the function not existing, and on Android, <unwind.h> conflicts
// with <link.h>.
-#ifdef __GLIBC__
+#if defined(__GLIBC__) || defined(__APPLE__)
#include <unwind.h>
#else
#undef HAVE__UNWIND_BACKTRACE
OpenPOWER on IntegriCloud