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:
1 parent
199d47d962
commit
54e6eacc1f
1 file changed
+10
-11
+10
-11
@@ -4,19 +4,18 @@
|
|||||||
|
|
||||||
#include <test/util/coverage.h>
|
#include <test/util/coverage.h>
|
||||||
|
|
||||||
#if defined(__clang__) && defined(__linux__)
|
#if defined(__clang__)
|
||||||
extern "C" void __llvm_profile_reset_counters(void) __attribute__((weak));
|
extern "C" __attribute__((weak)) void __llvm_profile_reset_counters(void);
|
||||||
extern "C" void __gcov_reset(void) __attribute__((weak));
|
extern "C" __attribute__((weak)) void __gcov_reset(void);
|
||||||
|
|
||||||
void ResetCoverageCounters()
|
// Fallback implementations
|
||||||
{
|
extern "C" __attribute__((weak)) void __llvm_profile_reset_counters(void) {}
|
||||||
if (__llvm_profile_reset_counters) {
|
extern "C" __attribute__((weak)) void __gcov_reset(void) {}
|
||||||
__llvm_profile_reset_counters();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (__gcov_reset) {
|
void ResetCoverageCounters() {
|
||||||
__gcov_reset();
|
// These will call the real ones if available, or our dummies if not
|
||||||
}
|
__llvm_profile_reset_counters();
|
||||||
|
__gcov_reset();
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
void ResetCoverageCounters() {}
|
void ResetCoverageCounters() {}
|
||||||
|
|||||||
Reference in new issue
Block a user