test: Enable ResetCoverageCounters beyond Linux

Non-Linux linkers require a fallback implementation for when coverage is not enabled.
The fallbacks are marked weak to have lower precedence than built-in implementations when available, removing ambiguity from the linker.
This commit is contained in:
janb84 2025-03-16 12:01:58 +01:00
parent 199d47d962
commit 54e6eacc1f

View file

@ -4,20 +4,19 @@
#include <test/util/coverage.h>
#if defined(__clang__) && defined(__linux__)
extern "C" void __llvm_profile_reset_counters(void) __attribute__((weak));
extern "C" void __gcov_reset(void) __attribute__((weak));
#if defined(__clang__)
extern "C" __attribute__((weak)) void __llvm_profile_reset_counters(void);
extern "C" __attribute__((weak)) void __gcov_reset(void);
void ResetCoverageCounters()
{
if (__llvm_profile_reset_counters) {
// Fallback implementations
extern "C" __attribute__((weak)) void __llvm_profile_reset_counters(void) {}
extern "C" __attribute__((weak)) void __gcov_reset(void) {}
void ResetCoverageCounters() {
// These will call the real ones if available, or our dummies if not
__llvm_profile_reset_counters();
}
if (__gcov_reset) {
__gcov_reset();
}
}
#else
void ResetCoverageCounters() {}
#endif