summaryrefslogtreecommitdiff
path: root/lib/asan/asan_thread.cc
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2013-09-18 10:35:12 +0000
committerKostya Serebryany <kcc@google.com>2013-09-18 10:35:12 +0000
commit230e52f4e91b53f05ce19dbbf11047f4a0113483 (patch)
tree192044531c0e867be0744c13956acaf3aafbdd89 /lib/asan/asan_thread.cc
parent608609429a2202e0342c13bc037368c8d678591c (diff)
[asan] add a run-time option detect_stack_use_after_return, add verbosity output for fake stack
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@190932 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/asan/asan_thread.cc')
-rw-r--r--lib/asan/asan_thread.cc8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/asan/asan_thread.cc b/lib/asan/asan_thread.cc
index 322caa8ac..5c2289491 100644
--- a/lib/asan/asan_thread.cc
+++ b/lib/asan/asan_thread.cc
@@ -123,8 +123,14 @@ FakeStack *AsanThread::AsyncSignalSafeLazyInitFakeStack() {
if (atomic_compare_exchange_strong(
reinterpret_cast<atomic_uintptr_t *>(&fake_stack_), &old_val, 1UL,
memory_order_relaxed)) {
- fake_stack_ = FakeStack::Create(Log2(RoundUpToPowerOfTwo(stack_size)));
+ uptr stack_size_log = Log2(RoundUpToPowerOfTwo(stack_size));
+ fake_stack_ = FakeStack::Create(stack_size_log);
SetTLSFakeStack(fake_stack_);
+ if (flags()->verbosity) {
+ u8 *p = reinterpret_cast<u8 *>(fake_stack_);
+ Report("T%d: FakeStack created: %p -- %p\n", tid(), p,
+ p + FakeStack::RequiredSize(stack_size_log));
+ }
return fake_stack_;
}
return 0;