OSDN Git Service

Use _Unwind_Backtrace on Apple platforms.
authorBob Wilson <bob.wilson@apple.com>
Mon, 14 Nov 2016 17:56:18 +0000 (17:56 +0000)
committerBob Wilson <bob.wilson@apple.com>
Mon, 14 Nov 2016 17:56:18 +0000 (17:56 +0000)
commit63165f6ae3bac1623be36d4b3ce63afa1d51a30a
treebcc6e20557829dbe92a86aa028161b78cc4e96c1
parentb91d4c27dc50e3b708c841a3dcc3e0a0a84a3a5e
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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286851 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Support/Unix/Signals.inc