diff options
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/lib/libunwind/UnwindCursor.hpp | 3 | ||||
| -rw-r--r-- | sys/lib/libunwind/libunwind.cxx | 2 |
2 files changed, 2 insertions, 3 deletions
diff --git a/sys/lib/libunwind/UnwindCursor.hpp b/sys/lib/libunwind/UnwindCursor.hpp index e979646179d..763c9b21b70 100644 --- a/sys/lib/libunwind/UnwindCursor.hpp +++ b/sys/lib/libunwind/UnwindCursor.hpp @@ -61,9 +61,6 @@ public: this->setInfoBasedOnIPRegister(true); if (fUnwindInfoMissing) return UNW_STEP_END; - - if (fInfo.extra_args) - setSP(getSP() + fInfo.extra_args); return UNW_STEP_SUCCESS; } __builtin_unreachable(); diff --git a/sys/lib/libunwind/libunwind.cxx b/sys/lib/libunwind/libunwind.cxx index e1897848917..d033f7c346b 100644 --- a/sys/lib/libunwind/libunwind.cxx +++ b/sys/lib/libunwind/libunwind.cxx @@ -277,6 +277,8 @@ void _Unwind_SetIP(struct _Unwind_Context *context, uintptr_t new_value) { unw_proc_info_t info; cursor->getInfo(&info); cursor->setInfoBasedOnIPRegister(false); + if (info.extra_args) + cursor->setSP(cursor->getSP() + info.extra_args); } uintptr_t _Unwind_GetRegionStart(struct _Unwind_Context *context) { |
