From b983b49fbd4b418b7b1ded4ab18357ea5069ff82 Mon Sep 17 00:00:00 2001 From: Christoph Diehl Date: Fri, 27 Feb 2026 22:33:55 -0800 Subject: [PATCH 1/3] Add Windows (clang-cl) support for continuous fuzzing --- fuzztest/internal/coverage.cc | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/fuzztest/internal/coverage.cc b/fuzztest/internal/coverage.cc index 43c25d750..329e9d03e 100644 --- a/fuzztest/internal/coverage.cc +++ b/fuzztest/internal/coverage.cc @@ -23,6 +23,10 @@ #include #include +#if defined(_WIN32) +#include // For _aligned_malloc / _aligned_free. +#endif + #include "absl/base/attributes.h" #include "absl/strings/str_format.h" #include "absl/types/span.h" @@ -173,15 +177,16 @@ void ExecutionCoverage::UpdateMaxStack(uintptr_t PC) { } } -// Coverage only available in Clang, but only for Linux, macOS, and newer -// versions of Android. Windows might not have what we need. +// Coverage only available in Clang for Linux, macOS, newer versions of +// Android, and Windows (clang-cl). #if /* Supported compilers */ \ defined(__clang__) && \ (/* Supported platforms */ \ (defined(__linux__) && !defined(__ANDROID__)) || \ (defined(__ANDROID_MIN_SDK_VERSION__) && \ __ANDROID_MIN_SDK_VERSION__ >= 28) || \ - defined(__APPLE__)) + defined(__APPLE__) || \ + defined(_WIN32)) #define FUZZTEST_COVERAGE_IS_AVAILABLE #endif @@ -281,11 +286,21 @@ CorpusCoverage::CorpusCoverage(size_t map_size) { // necessary space. map_size += alignment; corpus_map_size_ = map_size; +#if defined(_WIN32) + corpus_map_ = static_cast(_aligned_malloc(map_size, alignment)); +#else corpus_map_ = static_cast(std::aligned_alloc(alignment, map_size)); +#endif std::fill(corpus_map_, corpus_map_ + corpus_map_size_, 0); } -CorpusCoverage::~CorpusCoverage() { std::free(corpus_map_); } +CorpusCoverage::~CorpusCoverage() { +#if defined(_WIN32) + _aligned_free(corpus_map_); +#else + std::free(corpus_map_); +#endif +} bool CorpusCoverage::Update(ExecutionCoverage* execution_coverage) { absl::Span execution_map = execution_coverage->GetCounterMap(); From ec74f22cd7d08e03d0c80853e0c55d791a3872ed Mon Sep 17 00:00:00 2001 From: Christoph Diehl Date: Fri, 13 Mar 2026 17:58:00 -0700 Subject: [PATCH 2/3] Update fuzztest/internal/coverage.cc Co-authored-by: Filip Niksic --- fuzztest/internal/coverage.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fuzztest/internal/coverage.cc b/fuzztest/internal/coverage.cc index 329e9d03e..5aa7e02fe 100644 --- a/fuzztest/internal/coverage.cc +++ b/fuzztest/internal/coverage.cc @@ -185,7 +185,7 @@ void ExecutionCoverage::UpdateMaxStack(uintptr_t PC) { (defined(__linux__) && !defined(__ANDROID__)) || \ (defined(__ANDROID_MIN_SDK_VERSION__) && \ __ANDROID_MIN_SDK_VERSION__ >= 28) || \ - defined(__APPLE__) || \ + defined(__APPLE__) || defined(_WIN32)) \ defined(_WIN32)) #define FUZZTEST_COVERAGE_IS_AVAILABLE #endif From cb17c8674e95e893ce98cd3224b8cc13deda391a Mon Sep 17 00:00:00 2001 From: Christoph Diehl Date: Fri, 13 Mar 2026 18:02:00 -0700 Subject: [PATCH 3/3] Fix macro definition for coverage availability --- fuzztest/internal/coverage.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fuzztest/internal/coverage.cc b/fuzztest/internal/coverage.cc index 5aa7e02fe..20deebc9f 100644 --- a/fuzztest/internal/coverage.cc +++ b/fuzztest/internal/coverage.cc @@ -185,8 +185,7 @@ void ExecutionCoverage::UpdateMaxStack(uintptr_t PC) { (defined(__linux__) && !defined(__ANDROID__)) || \ (defined(__ANDROID_MIN_SDK_VERSION__) && \ __ANDROID_MIN_SDK_VERSION__ >= 28) || \ - defined(__APPLE__) || defined(_WIN32)) \ - defined(_WIN32)) + defined(__APPLE__) || defined(_WIN32)) #define FUZZTEST_COVERAGE_IS_AVAILABLE #endif