xref: /llvm-project/compiler-rt/lib/stats/stats.h (revision 2946cd701067404b99c39fb29dc9c74bd7193eb3)
15788e125SPeter Collingbourne //===-- stats.h -------------------------------------------------*- C++ -*-===//
25788e125SPeter Collingbourne //
3*2946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*2946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
5*2946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
65788e125SPeter Collingbourne //
75788e125SPeter Collingbourne //===----------------------------------------------------------------------===//
85788e125SPeter Collingbourne //
95788e125SPeter Collingbourne // Data definitions for sanitizer statistics gathering.
105788e125SPeter Collingbourne //
115788e125SPeter Collingbourne //===----------------------------------------------------------------------===//
125788e125SPeter Collingbourne 
135788e125SPeter Collingbourne #ifndef SANITIZER_STATS_STATS_H
145788e125SPeter Collingbourne #define SANITIZER_STATS_STATS_H
155788e125SPeter Collingbourne 
165788e125SPeter Collingbourne #include "sanitizer_common/sanitizer_internal_defs.h"
175788e125SPeter Collingbourne 
185788e125SPeter Collingbourne namespace __sanitizer {
195788e125SPeter Collingbourne 
205788e125SPeter Collingbourne // Number of bits in data that are used for the sanitizer kind. Needs to match
215788e125SPeter Collingbourne // llvm::kSanitizerStatKindBits in
225788e125SPeter Collingbourne // llvm/include/llvm/Transforms/Utils/SanitizerStats.h
235788e125SPeter Collingbourne enum { kKindBits = 3 };
245788e125SPeter Collingbourne 
255788e125SPeter Collingbourne struct StatInfo {
265788e125SPeter Collingbourne   uptr addr;
275788e125SPeter Collingbourne   uptr data;
285788e125SPeter Collingbourne };
295788e125SPeter Collingbourne 
305788e125SPeter Collingbourne struct StatModule {
315788e125SPeter Collingbourne   StatModule *next;
325788e125SPeter Collingbourne   u32 size;
335788e125SPeter Collingbourne   StatInfo infos[1];
345788e125SPeter Collingbourne };
355788e125SPeter Collingbourne 
CountFromData(uptr data)365788e125SPeter Collingbourne inline uptr CountFromData(uptr data) {
375788e125SPeter Collingbourne   return data & ((1ull << (sizeof(uptr) * 8 - kKindBits)) - 1);
385788e125SPeter Collingbourne }
395788e125SPeter Collingbourne 
405788e125SPeter Collingbourne }
415788e125SPeter Collingbourne 
425788e125SPeter Collingbourne #endif
43