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 Collingbourneinline 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