diff options
| author | bors <bors@rust-lang.org> | 2016-04-07 15:40:47 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2016-04-07 15:40:47 -0700 |
| commit | dde35e75a30129fdc61bb179023a9f0dbdc7a79a (patch) | |
| tree | fb2b3936d3a0aa04dde650139e46f46133e99cd1 /src/libstd/sys/common | |
| parent | 7979dd6089ee5cba39cfbe6e880a3edeb7fff788 (diff) | |
| parent | 1d59b91ed4ba0e832846c9cbe1188e374e1056f3 (diff) | |
| download | rust-dde35e75a30129fdc61bb179023a9f0dbdc7a79a.tar.gz rust-dde35e75a30129fdc61bb179023a9f0dbdc7a79a.zip | |
Auto merge of #32800 - Manishearth:rollup, r=Manishearth
Rollup of 7 pull requests - Successful merges: #32687, #32729, #32731, #32732, #32734, #32737, #32741 - Failed merges:
Diffstat (limited to 'src/libstd/sys/common')
| -rw-r--r-- | src/libstd/sys/common/unwind/gcc.rs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/libstd/sys/common/unwind/gcc.rs b/src/libstd/sys/common/unwind/gcc.rs index ff6a11951dc..da7a340af35 100644 --- a/src/libstd/sys/common/unwind/gcc.rs +++ b/src/libstd/sys/common/unwind/gcc.rs @@ -224,8 +224,13 @@ pub mod eabi { context: *mut uw::_Unwind_Context ) -> uw::_Unwind_Reason_Code { + // Backtraces on ARM will call the personality routine with + // state == _US_VIRTUAL_UNWIND_FRAME | _US_FORCE_UNWIND. In those cases + // we want to continue unwinding the stack, otherwise all our backtraces + // would end at __rust_try. if (state as c_int & uw::_US_ACTION_MASK as c_int) - == uw::_US_VIRTUAL_UNWIND_FRAME as c_int { // search phase + == uw::_US_VIRTUAL_UNWIND_FRAME as c_int + && (state as c_int & uw::_US_FORCE_UNWIND as c_int) == 0 { // search phase uw::_URC_HANDLER_FOUND // catch! } else { // cleanup phase |
