aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authordergoegge <n.goeggi@gmail.com>2024-05-22 17:11:37 +0100
committerdergoegge <n.goeggi@gmail.com>2024-05-23 17:26:26 +0100
commit949abebea0059edd929b653b4b475a5880fc0a3e (patch)
treee50985b969d52db50d8ea6afdc2c005a99d41d73 /src/test
parent6f36624147dfb59603698db647b4ad612b771810 (diff)
downloadbitcoin-949abebea0059edd929b653b4b475a5880fc0a3e.tar.xz
[fuzz] Avoid collecting initialization coverage
Diffstat (limited to 'src/test')
-rw-r--r--src/test/fuzz/fuzz.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/test/fuzz/fuzz.cpp b/src/test/fuzz/fuzz.cpp
index f9915187bd..9a54a44bd3 100644
--- a/src/test/fuzz/fuzz.cpp
+++ b/src/test/fuzz/fuzz.cpp
@@ -79,6 +79,26 @@ void FuzzFrameworkRegisterTarget(std::string_view name, TypeTestOneInput target,
static std::string_view g_fuzz_target;
static const TypeTestOneInput* g_test_one_input{nullptr};
+
+#if defined(__clang__) && defined(__linux__)
+extern "C" void __llvm_profile_reset_counters(void) __attribute__((weak));
+extern "C" void __gcov_reset(void) __attribute__((weak));
+
+void ResetCoverageCounters()
+{
+ if (__llvm_profile_reset_counters) {
+ __llvm_profile_reset_counters();
+ }
+
+ if (__gcov_reset) {
+ __gcov_reset();
+ }
+}
+#else
+void ResetCoverageCounters() {}
+#endif
+
+
void initialize()
{
// Terminate immediately if a fuzzing harness ever tries to create a TCP socket.
@@ -129,6 +149,8 @@ void initialize()
Assert(!g_test_one_input);
g_test_one_input = &it->second.test_one_input;
it->second.opts.init();
+
+ ResetCoverageCounters();
}
#if defined(PROVIDE_FUZZ_MAIN_FUNCTION)