aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm-project/compiler-rt/lib/msan/msan_chained_origin_depot.cpp
diff options
context:
space:
mode:
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.cpp40
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