From ac63a3868d0079ed93660b89b2c6e6dbf67aea16 Mon Sep 17 00:00:00 2001 From: Patrick Wildt Date: Sat, 2 Jan 2021 17:10:12 +0000 Subject: Import compiler-rt 11.0.0 release. ok kettenis@ --- gnu/llvm/compiler-rt/lib/gwp_asan/random.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'gnu/llvm/compiler-rt/lib/gwp_asan/random.cpp') diff --git a/gnu/llvm/compiler-rt/lib/gwp_asan/random.cpp b/gnu/llvm/compiler-rt/lib/gwp_asan/random.cpp index 90493da7e03..2180f920408 100644 --- a/gnu/llvm/compiler-rt/lib/gwp_asan/random.cpp +++ b/gnu/llvm/compiler-rt/lib/gwp_asan/random.cpp @@ -7,14 +7,22 @@ //===----------------------------------------------------------------------===// #include "gwp_asan/random.h" -#include "gwp_asan/guarded_pool_allocator.h" +#include "gwp_asan/common.h" #include +// Initialised to a magic constant so that an uninitialised GWP-ASan won't +// regenerate its sample counter for as long as possible. The xorshift32() +// algorithm used below results in getRandomUnsigned32(0xff82eb50) == +// 0xfffffea4. +GWP_ASAN_TLS_INITIAL_EXEC uint32_t RandomState = 0xff82eb50; + namespace gwp_asan { +void initPRNG() { + RandomState = time(nullptr) + getThreadID(); +} + uint32_t getRandomUnsigned32() { - thread_local uint32_t RandomState = - time(nullptr) + GuardedPoolAllocator::getThreadID(); RandomState ^= RandomState << 13; RandomState ^= RandomState >> 17; RandomState ^= RandomState << 5; -- cgit v1.2.3