xref: /openbsd-src/gnu/llvm/compiler-rt/lib/stats/stats.h (revision 3cab2bb3f667058bece8e38b12449a63a9d73c4b)
1*3cab2bb3Spatrick //===-- stats.h -------------------------------------------------*- C++ -*-===//
2*3cab2bb3Spatrick //
3*3cab2bb3Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*3cab2bb3Spatrick // See https://llvm.org/LICENSE.txt for license information.
5*3cab2bb3Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*3cab2bb3Spatrick //
7*3cab2bb3Spatrick //===----------------------------------------------------------------------===//
8*3cab2bb3Spatrick //
9*3cab2bb3Spatrick // Data definitions for sanitizer statistics gathering.
10*3cab2bb3Spatrick //
11*3cab2bb3Spatrick //===----------------------------------------------------------------------===//
12*3cab2bb3Spatrick 
13*3cab2bb3Spatrick #ifndef SANITIZER_STATS_STATS_H
14*3cab2bb3Spatrick #define SANITIZER_STATS_STATS_H
15*3cab2bb3Spatrick 
16*3cab2bb3Spatrick #include "sanitizer_common/sanitizer_internal_defs.h"
17*3cab2bb3Spatrick 
18*3cab2bb3Spatrick namespace __sanitizer {
19*3cab2bb3Spatrick 
20*3cab2bb3Spatrick // Number of bits in data that are used for the sanitizer kind. Needs to match
21*3cab2bb3Spatrick // llvm::kSanitizerStatKindBits in
22*3cab2bb3Spatrick // llvm/include/llvm/Transforms/Utils/SanitizerStats.h
23*3cab2bb3Spatrick enum { kKindBits = 3 };
24*3cab2bb3Spatrick 
25*3cab2bb3Spatrick struct StatInfo {
26*3cab2bb3Spatrick   uptr addr;
27*3cab2bb3Spatrick   uptr data;
28*3cab2bb3Spatrick };
29*3cab2bb3Spatrick 
30*3cab2bb3Spatrick struct StatModule {
31*3cab2bb3Spatrick   StatModule *next;
32*3cab2bb3Spatrick   u32 size;
33*3cab2bb3Spatrick   StatInfo infos[1];
34*3cab2bb3Spatrick };
35*3cab2bb3Spatrick 
CountFromData(uptr data)36*3cab2bb3Spatrick inline uptr CountFromData(uptr data) {
37*3cab2bb3Spatrick   return data & ((1ull << (sizeof(uptr) * 8 - kKindBits)) - 1);
38*3cab2bb3Spatrick }
39*3cab2bb3Spatrick 
40*3cab2bb3Spatrick }
41*3cab2bb3Spatrick 
42*3cab2bb3Spatrick #endif
43