diff options
Diffstat (limited to 'contrib/llvm-project/compiler-rt/lib/msan/msan_chained_origin_depot.cpp')
| -rw-r--r-- | contrib/llvm-project/compiler-rt/lib/msan/msan_chained_origin_depot.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/contrib/llvm-project/compiler-rt/lib/msan/msan_chained_origin_depot.cpp b/contrib/llvm-project/compiler-rt/lib/msan/msan_chained_origin_depot.cpp new file mode 100644 index 000000000000..b98b0e6b14b5 --- /dev/null +++ b/contrib/llvm-project/compiler-rt/lib/msan/msan_chained_origin_depot.cpp @@ -0,0 +1,40 @@ +//===-- msan_chained_origin_depot.cpp -------------------------------------===// +// +// 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 +// +//===----------------------------------------------------------------------===// +// +// This file is a part of MemorySanitizer. +// +// A storage for chained origins. +//===----------------------------------------------------------------------===// + +#include "msan_chained_origin_depot.h" + +#include "sanitizer_common/sanitizer_chained_origin_depot.h" + +namespace __msan { + +static ChainedOriginDepot chainedOriginDepot; + +StackDepotStats ChainedOriginDepotGetStats() { + return chainedOriginDepot.GetStats(); +} + +bool ChainedOriginDepotPut(u32 here_id, u32 prev_id, u32 *new_id) { + return chainedOriginDepot.Put(here_id, prev_id, new_id); +} + +u32 ChainedOriginDepotGet(u32 id, u32 *other) { + return chainedOriginDepot.Get(id, other); +} + +void ChainedOriginDepotBeforeFork() { chainedOriginDepot.LockBeforeFork(); } + +void ChainedOriginDepotAfterFork(bool fork_child) { + chainedOriginDepot.UnlockAfterFork(fork_child); +} + +} // namespace __msan |
