diff options
author | Alexey Samsonov <samsonov@google.com> | 2013-10-12 12:23:00 +0000 |
---|---|---|
committer | Alexey Samsonov <samsonov@google.com> | 2013-10-12 12:23:00 +0000 |
commit | 80175018541984bdcfe6a304bb189bd30592fa8a (patch) | |
tree | 74bd6e190fc6b06439646881fc201a3262082cd6 /lib/sanitizer_common/sanitizer_win.cc | |
parent | 70db33e143303752c7fe8800d15b5b31066b1e0d (diff) | |
download | compiler-rt-80175018541984bdcfe6a304bb189bd30592fa8a.tar.gz compiler-rt-80175018541984bdcfe6a304bb189bd30592fa8a.tar.bz2 compiler-rt-80175018541984bdcfe6a304bb189bd30592fa8a.tar.xz |
[Sanitizer] Turn GetStackTrace() into StackTrace::Unwind()
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@192533 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/sanitizer_common/sanitizer_win.cc')
-rw-r--r-- | lib/sanitizer_common/sanitizer_win.cc | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/lib/sanitizer_common/sanitizer_win.cc b/lib/sanitizer_common/sanitizer_win.cc index 49028bc2..f42e92f1 100644 --- a/lib/sanitizer_common/sanitizer_win.cc +++ b/lib/sanitizer_common/sanitizer_win.cc @@ -376,18 +376,18 @@ void GetThreadStackAndTls(bool main, uptr *stk_addr, uptr *stk_size, #endif } -void GetStackTrace(StackTrace *stack, uptr max_s, uptr pc, uptr bp, - uptr stack_top, uptr stack_bottom, bool fast) { +void StackTrace::Unwind(uptr max_depth, uptr pc, uptr bp, uptr stack_top, + uptr stack_bottom, bool fast) { (void)fast; (void)stack_top; (void)stack_bottom; - stack->max_size = max_s; + max_size = max_depth; void *tmp[kStackTraceMax]; // FIXME: CaptureStackBackTrace might be too slow for us. // FIXME: Compare with StackWalk64. // FIXME: Look at LLVMUnhandledExceptionFilter in Signals.inc - uptr cs_ret = CaptureStackBackTrace(1, stack->max_size, tmp, 0); + uptr cs_ret = CaptureStackBackTrace(1, max_size, tmp, 0); uptr offset = 0; // Skip the RTL frames by searching for the PC in the stacktrace. // FIXME: this doesn't work well for the malloc/free stacks yet. @@ -398,9 +398,7 @@ void GetStackTrace(StackTrace *stack, uptr max_s, uptr pc, uptr bp, break; } - stack->size = cs_ret - offset; - for (uptr i = 0; i < stack->size; i++) - stack->trace[i] = (uptr)tmp[i + offset]; + CopyFrom((uptr*)&tmp[offset], cs_ret - offset); } void MaybeOpenReportFile() { |