mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-16 23:26:32 +00:00
59 lines
1.8 KiB
C++
59 lines
1.8 KiB
C++
//===--- rtsan_stats.cpp - Realtime Sanitizer -------------------*- C++ -*-===//
|
|
//
|
|
// 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Part of the RealtimeSanitizer runtime library
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "rtsan/rtsan_stats.h"
|
|
#include "rtsan/rtsan_flags.h"
|
|
|
|
#include "sanitizer_common/sanitizer_atomic.h"
|
|
#include "sanitizer_common/sanitizer_common.h"
|
|
|
|
using namespace __sanitizer;
|
|
using namespace __rtsan;
|
|
|
|
static atomic_uint32_t total_error_count{0};
|
|
static atomic_uint32_t unique_error_count{0};
|
|
static atomic_uint32_t suppressed_count{0};
|
|
|
|
void __rtsan::IncrementTotalErrorCount() {
|
|
atomic_fetch_add(&total_error_count, 1, memory_order_relaxed);
|
|
}
|
|
|
|
void __rtsan::IncrementUniqueErrorCount() {
|
|
atomic_fetch_add(&unique_error_count, 1, memory_order_relaxed);
|
|
}
|
|
|
|
static u32 GetTotalErrorCount() {
|
|
return atomic_load(&total_error_count, memory_order_relaxed);
|
|
}
|
|
|
|
static u32 GetUniqueErrorCount() {
|
|
return atomic_load(&unique_error_count, memory_order_relaxed);
|
|
}
|
|
|
|
void __rtsan::IncrementSuppressedCount() {
|
|
atomic_fetch_add(&suppressed_count, 1, memory_order_relaxed);
|
|
}
|
|
|
|
static u32 GetSuppressedCount() {
|
|
return atomic_load(&suppressed_count, memory_order_relaxed);
|
|
}
|
|
|
|
void __rtsan::PrintStatisticsSummary() {
|
|
ScopedErrorReportLock l;
|
|
Printf("RealtimeSanitizer exit stats:\n");
|
|
Printf(" Total error count: %u\n", GetTotalErrorCount());
|
|
Printf(" Unique error count: %u\n", GetUniqueErrorCount());
|
|
|
|
if (flags().ContainsSuppresionFile())
|
|
Printf(" Suppression count: %u\n", GetSuppressedCount());
|
|
}
|