From 54e6eacc1fccd602897d9e3025c62f83194ffd5b Mon Sep 17 00:00:00 2001 From: janb84 <608446+janb84@users.noreply.github.com> Date: Sun, 16 Mar 2025 12:01:58 +0100 Subject: [PATCH] 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. --- src/test/util/coverage.cpp | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/test/util/coverage.cpp b/src/test/util/coverage.cpp index bbf068a6fa0..c0464011a19 100644 --- a/src/test/util/coverage.cpp +++ b/src/test/util/coverage.cpp @@ -4,19 +4,18 @@ #include -#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) { - __llvm_profile_reset_counters(); - } +// Fallback implementations +extern "C" __attribute__((weak)) void __llvm_profile_reset_counters(void) {} +extern "C" __attribute__((weak)) void __gcov_reset(void) {} - if (__gcov_reset) { - __gcov_reset(); - } +void ResetCoverageCounters() { + // These will call the real ones if available, or our dummies if not + __llvm_profile_reset_counters(); + __gcov_reset(); } #else void ResetCoverageCounters() {}