diff options
| author | Kostya Serebryany <kcc@google.com> | 2012-08-28 13:25:55 +0000 |
|---|---|---|
| committer | Kostya Serebryany <kcc@google.com> | 2012-08-28 13:25:55 +0000 |
| commit | ee92877f17aefcad752b8adc7b2e1dadc1d956e2 (patch) | |
| tree | 80365b779b99ca9a24a003295018e90cbc097782 /compiler-rt/lib/asan/asan_stack.cc | |
| parent | 9c0a807c27320735d0fd2e5f47930f611349bd4e (diff) | |
| download | bcm5719-llvm-ee92877f17aefcad752b8adc7b2e1dadc1d956e2.tar.gz bcm5719-llvm-ee92877f17aefcad752b8adc7b2e1dadc1d956e2.zip | |
[asan] more refactoring to move StackTrace to sanitizer_common
llvm-svn: 162752
Diffstat (limited to 'compiler-rt/lib/asan/asan_stack.cc')
| -rw-r--r-- | compiler-rt/lib/asan/asan_stack.cc | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/compiler-rt/lib/asan/asan_stack.cc b/compiler-rt/lib/asan/asan_stack.cc index 08fdb425543..618fc32d5aa 100644 --- a/compiler-rt/lib/asan/asan_stack.cc +++ b/compiler-rt/lib/asan/asan_stack.cc @@ -11,12 +11,8 @@ // // Code for ASan stack trace. //===----------------------------------------------------------------------===// -#include "asan_interceptors.h" #include "asan_interface.h" -#include "asan_lock.h" #include "asan_stack.h" -#include "asan_thread.h" -#include "asan_thread_registry.h" #include "sanitizer_common/sanitizer_procmaps.h" #include "sanitizer_common/sanitizer_symbolizer.h" @@ -100,19 +96,15 @@ uptr StackTrace::GetCurrentPc() { return GET_CALLER_PC(); } -void StackTrace::FastUnwindStack(uptr pc, uptr bp) { +void StackTrace::FastUnwindStack(uptr pc, uptr bp, + uptr stack_top, uptr stack_bottom) { CHECK(size == 0 && trace[0] == pc); size = 1; - if (!asan_inited) return; - AsanThread *t = asanThreadRegistry().GetCurrent(); - if (!t) return; uptr *frame = (uptr*)bp; uptr *prev_frame = frame; - uptr *top = (uptr*)t->stack_top(); - uptr *bottom = (uptr*)t->stack_bottom(); while (frame >= prev_frame && - frame < top - 2 && - frame > bottom && + frame < (uptr*)stack_top - 2 && + frame > (uptr*)stack_bottom && size < max_size) { uptr pc1 = frame[1]; if (pc1 != pc) { |

