Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/llvm/llvm-project.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSaleem Abdulrasool <compnerd@compnerd.org>2019-09-20 18:53:42 +0300
committerSaleem Abdulrasool <compnerd@compnerd.org>2019-09-20 18:53:42 +0300
commitae685e7aab7f278cf197b8b1b1ccf76a6e884682 (patch)
tree7c1a02632c4b2a57145e484dfddcb55eba4823aa /libunwind/src/UnwindCursor.hpp
parentaf77ca7e6e738b7963a622e4c35807ecc52f854b (diff)
Unwind: prevent unw_get_proc_info from returning stale data
If unwind info is not available at the current IP, unw_get_proc_info should return a zero-filled structure rather than the info of the previous IP. This change also makes unw_get_proc_info return UNW_ENOINFO instead of UNW_ESUCCESS. Patch by Amanieu d'Antras! llvm-svn: 372407
Diffstat (limited to 'libunwind/src/UnwindCursor.hpp')
-rw-r--r--libunwind/src/UnwindCursor.hpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/libunwind/src/UnwindCursor.hpp b/libunwind/src/UnwindCursor.hpp
index a96c9f39958d..488c3173dd7e 100644
--- a/libunwind/src/UnwindCursor.hpp
+++ b/libunwind/src/UnwindCursor.hpp
@@ -1991,7 +1991,10 @@ int UnwindCursor<A, R>::step() {
template <typename A, typename R>
void UnwindCursor<A, R>::getInfo(unw_proc_info_t *info) {
- *info = _info;
+ if (_unwindInfoMissing)
+ memset(info, 0, sizeof(*info));
+ else
+ *info = _info;
}
template <typename A, typename R>