diff options
author | Kostya Serebryany <kcc@google.com> | 2013-12-13 15:03:49 +0000 |
---|---|---|
committer | Kostya Serebryany <kcc@google.com> | 2013-12-13 15:03:49 +0000 |
commit | 0388d0116b38ee655074e3b325feb6d69f8fb1d5 (patch) | |
tree | c7bf4791e8535bed8e93992c5b0e35041c6723b6 /lib/asan/asan_fake_stack.cc | |
parent | c9486291b63fe52a9f3819780a7bfe0d746b78e3 (diff) |
[asan] add flag uar_noreserve to use noreserve mmap for fake stack. uar_noreserve=1 will save some memory but also negatively affect performance
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@197233 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/asan/asan_fake_stack.cc')
-rw-r--r-- | lib/asan/asan_fake_stack.cc | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/asan/asan_fake_stack.cc b/lib/asan/asan_fake_stack.cc index 7301c9afd..00fe2fe59 100644 --- a/lib/asan/asan_fake_stack.cc +++ b/lib/asan/asan_fake_stack.cc @@ -42,13 +42,17 @@ FakeStack *FakeStack::Create(uptr stack_size_log) { stack_size_log = kMinStackSizeLog; if (stack_size_log > kMaxStackSizeLog) stack_size_log = kMaxStackSizeLog; + uptr size = RequiredSize(stack_size_log); FakeStack *res = reinterpret_cast<FakeStack *>( - MmapOrDie(RequiredSize(stack_size_log), "FakeStack")); + flags()->uar_noreserve ? MmapNoReserveOrDie(size, "FakeStack") + : MmapOrDie(size, "FakeStack")); res->stack_size_log_ = stack_size_log; u8 *p = reinterpret_cast<u8 *>(res); - VReport(1, "T%d: FakeStack created: %p -- %p stack_size_log: %zd \n", + VReport(1, "T%d: FakeStack created: %p -- %p stack_size_log: %zd; " + "noreserve=%d \n", GetCurrentTidOrInvalid(), p, - p + FakeStack::RequiredSize(stack_size_log), stack_size_log); + p + FakeStack::RequiredSize(stack_size_log), stack_size_log, + flags()->uar_noreserve); return res; } |