[PATCH] D73896: [GWP-ASan] Allow late initialisation if single-threaded.
Mitch Phillips via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 3 12:36:52 PST 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rG0d6fccb460e5: [GWP-ASan] Allow late initialisation if single-threaded. (authored by hctim).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D73896/new/
https://reviews.llvm.org/D73896
Files:
compiler-rt/lib/gwp_asan/guarded_pool_allocator.cpp
compiler-rt/lib/gwp_asan/tests/CMakeLists.txt
compiler-rt/lib/gwp_asan/tests/late_init.cpp
Index: compiler-rt/lib/gwp_asan/tests/late_init.cpp
===================================================================
--- /dev/null
+++ compiler-rt/lib/gwp_asan/tests/late_init.cpp
@@ -0,0 +1,25 @@
+//===-- late_init.cpp -------------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "gwp_asan/guarded_pool_allocator.h"
+#include "gwp_asan/options.h"
+#include "gtest/gtest.h"
+
+TEST(LateInit, CheckLateInitIsOK) {
+ gwp_asan::GuardedPoolAllocator GPA;
+
+ for (size_t i = 0; i < 0x100; ++i)
+ EXPECT_FALSE(GPA.shouldSample());
+
+ gwp_asan::options::Options Opts;
+ Opts.Enabled = true;
+ Opts.SampleRate = 1;
+
+ GPA.init(Opts);
+ EXPECT_TRUE(GPA.shouldSample());
+}
Index: compiler-rt/lib/gwp_asan/tests/CMakeLists.txt
===================================================================
--- compiler-rt/lib/gwp_asan/tests/CMakeLists.txt
+++ compiler-rt/lib/gwp_asan/tests/CMakeLists.txt
@@ -20,7 +20,8 @@
slot_reuse.cpp
thread_contention.cpp
harness.cpp
- enable_disable.cpp)
+ enable_disable.cpp
+ late_init.cpp)
set(GWP_ASAN_UNIT_TEST_HEADERS
${GWP_ASAN_HEADERS}
Index: compiler-rt/lib/gwp_asan/guarded_pool_allocator.cpp
===================================================================
--- compiler-rt/lib/gwp_asan/guarded_pool_allocator.cpp
+++ compiler-rt/lib/gwp_asan/guarded_pool_allocator.cpp
@@ -164,6 +164,9 @@
else
AdjustedSampleRatePlusOne = 2;
+ ThreadLocals.NextSampleCounter =
+ (getRandomUnsigned32() % (AdjustedSampleRatePlusOne - 1)) + 1;
+
GuardedPagePool = reinterpret_cast<uintptr_t>(GuardedPoolMemory);
GuardedPagePoolEnd =
reinterpret_cast<uintptr_t>(GuardedPoolMemory) + PoolBytesRequired;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D73896.242160.patch
Type: text/x-patch
Size: 1982 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200203/14763b6a/attachment-0001.bin>
More information about the llvm-commits
mailing list