xref: /freebsd-src/contrib/llvm-project/compiler-rt/lib/msan/msan_chained_origin_depot.cpp (revision cb14a3fe5122c879eae1fb480ed7ce82a699ddb6)
1fe6060f1SDimitry Andric //===-- msan_chained_origin_depot.cpp -------------------------------------===//
268d75effSDimitry Andric //
368d75effSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
468d75effSDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
568d75effSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
668d75effSDimitry Andric //
768d75effSDimitry Andric //===----------------------------------------------------------------------===//
868d75effSDimitry Andric //
9fe6060f1SDimitry Andric // This file is a part of MemorySanitizer.
10fe6060f1SDimitry Andric //
1168d75effSDimitry Andric // A storage for chained origins.
1268d75effSDimitry Andric //===----------------------------------------------------------------------===//
1368d75effSDimitry Andric 
1468d75effSDimitry Andric #include "msan_chained_origin_depot.h"
1568d75effSDimitry Andric 
16fe6060f1SDimitry Andric #include "sanitizer_common/sanitizer_chained_origin_depot.h"
1768d75effSDimitry Andric 
1868d75effSDimitry Andric namespace __msan {
1968d75effSDimitry Andric 
20fe6060f1SDimitry Andric static ChainedOriginDepot chainedOriginDepot;
2168d75effSDimitry Andric 
ChainedOriginDepotGetStats()22349cc55cSDimitry Andric StackDepotStats ChainedOriginDepotGetStats() {
2368d75effSDimitry Andric   return chainedOriginDepot.GetStats();
2468d75effSDimitry Andric }
2568d75effSDimitry Andric 
ChainedOriginDepotPut(u32 here_id,u32 prev_id,u32 * new_id)2668d75effSDimitry Andric bool ChainedOriginDepotPut(u32 here_id, u32 prev_id, u32 *new_id) {
27fe6060f1SDimitry Andric   return chainedOriginDepot.Put(here_id, prev_id, new_id);
2868d75effSDimitry Andric }
2968d75effSDimitry Andric 
ChainedOriginDepotGet(u32 id,u32 * other)3068d75effSDimitry Andric u32 ChainedOriginDepotGet(u32 id, u32 *other) {
31fe6060f1SDimitry Andric   return chainedOriginDepot.Get(id, other);
3268d75effSDimitry Andric }
3368d75effSDimitry Andric 
ChainedOriginDepotBeforeFork()34*cb14a3feSDimitry Andric void ChainedOriginDepotBeforeFork() { chainedOriginDepot.LockBeforeFork(); }
3568d75effSDimitry Andric 
ChainedOriginDepotAfterFork(bool fork_child)36*cb14a3feSDimitry Andric void ChainedOriginDepotAfterFork(bool fork_child) {
37*cb14a3feSDimitry Andric   chainedOriginDepot.UnlockAfterFork(fork_child);
3868d75effSDimitry Andric }
3968d75effSDimitry Andric 
4068d75effSDimitry Andric } // namespace __msan
41