https://github.com/mgcarrasco updated https://github.com/llvm/llvm-project/pull/228039
>From ff7aed5385f1b3bb1b9a86ee0958f6fc13e2d2bb Mon Sep 17 00:00:00 2001 From: Manuel Carrasco <[email protected]> Date: Thu, 1 Oct 2026 06:06:01 -0500 Subject: [PATCH 1/2] [compiler-rt] Add print_coverage_summary to silence SanitizerCoverage dump logs Coverage dumps still write .sancov files; only the "PCs written" summary is optional. --- clang/docs/SanitizerCoverage.md | 4 +++ .../sanitizer_coverage_fuchsia.cpp | 5 +-- .../sanitizer_coverage_libcdep_new.cpp | 3 +- .../lib/sanitizer_common/sanitizer_flags.inc | 2 ++ .../TestCases/sanitizer_coverage_summary.cpp | 33 +++++++++++++++++++ 5 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_summary.cpp diff --git a/clang/docs/SanitizerCoverage.md b/clang/docs/SanitizerCoverage.md index 5630d46900f1764..ae074d13f5322aa 100644 --- a/clang/docs/SanitizerCoverage.md +++ b/clang/docs/SanitizerCoverage.md @@ -530,6 +530,10 @@ SanitizerCoverage: ./a.out.7316.sancov 3 PCs written 32 a.out.7316.sancov ``` +Set `print_coverage_summary=0` (for example, +`ASAN_OPTIONS=coverage=1:print_coverage_summary=0`) to suppress the +`SanitizerCoverage:` summary line. Coverage files are still written. + Every time you run an executable instrumented with SanitizerCoverage one `*.sancov` file is created during the process shutdown. If the executable is dynamically linked against instrumented DSOs, diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_coverage_fuchsia.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_coverage_fuchsia.cpp index 73668a56218cf0f..284784aa924b6fc 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_coverage_fuchsia.cpp +++ b/compiler-rt/lib/sanitizer_common/sanitizer_coverage_fuchsia.cpp @@ -105,8 +105,9 @@ class TracePcGuardController final { // uses the `dumpfile` symbolizer markup element to highlight the // dump. See the explanation for this in: // https://fuchsia.googlesource.com/zircon/+/master/docs/symbolizer_markup.md - Printf("SanitizerCoverage: " FORMAT_DUMPFILE " with up to %u PCs\n", - kSancovSinkName, vmo_name_, next_index_ - 1); + if (common_flags()->print_coverage_summary) + Printf("SanitizerCoverage: " FORMAT_DUMPFILE " with up to %u PCs\n", + kSancovSinkName, vmo_name_, next_index_ - 1); } } diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_coverage_libcdep_new.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_coverage_libcdep_new.cpp index 506659a58c45ecb..2f5b6f68afa4131 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_coverage_libcdep_new.cpp +++ b/compiler-rt/lib/sanitizer_common/sanitizer_coverage_libcdep_new.cpp @@ -53,7 +53,8 @@ static void WriteModuleCoverage(char* file_path, const char* module_name, WriteToFile(fd, &Magic, sizeof(Magic)); WriteToFile(fd, pcs, len * sizeof(*pcs)); CloseFile(fd); - Printf("SanitizerCoverage: %s: %zd PCs written\n", file_path, len); + if (common_flags()->print_coverage_summary) + Printf("SanitizerCoverage: %s: %zd PCs written\n", file_path, len); } static void SanitizerDumpCoverage(const uptr* unsorted_pcs, uptr len) { diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc b/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc index 5f449907f6011f7..c094ce544eaa7d5 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc @@ -170,6 +170,8 @@ COMMON_FLAG( COMMON_FLAG(const char *, coverage_dir, ".", "Target directory for coverage dumps. Defaults to the current " "directory.") +COMMON_FLAG(bool, print_coverage_summary, true, + "Print the SanitizerCoverage dump summary.") COMMON_FLAG(const char *, cov_8bit_counters_out, "", "If non-empty, write 8bit counters to this file. ") COMMON_FLAG(const char *, cov_pcs_out, "", diff --git a/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_summary.cpp b/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_summary.cpp new file mode 100644 index 000000000000000..76177d7fad2359a --- /dev/null +++ b/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_summary.cpp @@ -0,0 +1,33 @@ +// Tests print_coverage_summary for SanitizerCoverage dumps. + +// REQUIRES: has_sancovcc +// UNSUPPORTED: ubsan,i386-darwin,target={{(powerpc64|s390x|sparc|thumb).*}} +// This test is failing for lsan on darwin on x86_64h. +// UNSUPPORTED: x86_64h-darwin && lsan +// XFAIL: tsan +// XFAIL: android && asan +// XFAIL: darwin-remote +// UNSUPPORTED: rtsan + +// RUN: rm -rf %t_workdir +// RUN: mkdir -p %t_workdir +// RUN: cd %t_workdir +// RUN: %clangxx -O0 -fsanitize-coverage=trace-pc-guard %s -o %t +// RUN: %env_tool_opts=coverage=1 %t 2>&1 | FileCheck %s --check-prefix=CHECK-DEFAULT +// RUN: rm -f *.sancov +// RUN: %env_tool_opts=coverage=1:print_coverage_summary=0 %t 2>&1 | FileCheck %s --check-prefix=CHECK-QUIET +// RUN: ls *.sancov +// RUN: rm -rf %t_workdir + +#include <stdio.h> + +int main() { + fprintf(stderr, "main\n"); + return 0; +} + +// CHECK-DEFAULT: main +// CHECK-DEFAULT: SanitizerCoverage: {{.*}}.sancov: {{[0-9]+}} PCs written + +// CHECK-QUIET: main +// CHECK-QUIET-NOT: SanitizerCoverage >From b5a62d149d74566eb6edb810b4e56d684f96dc47 Mon Sep 17 00:00:00 2001 From: Manuel Carrasco <[email protected]> Date: Fri, 2 Oct 2026 04:18:28 -0500 Subject: [PATCH 2/2] [reviews] Update test. --- .../sanitizer_common/TestCases/sanitizer_coverage_summary.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_summary.cpp b/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_summary.cpp index 76177d7fad2359a..3657d03ffc478f1 100644 --- a/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_summary.cpp +++ b/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_summary.cpp @@ -15,7 +15,7 @@ // RUN: %clangxx -O0 -fsanitize-coverage=trace-pc-guard %s -o %t // RUN: %env_tool_opts=coverage=1 %t 2>&1 | FileCheck %s --check-prefix=CHECK-DEFAULT // RUN: rm -f *.sancov -// RUN: %env_tool_opts=coverage=1:print_coverage_summary=0 %t 2>&1 | FileCheck %s --check-prefix=CHECK-QUIET +// RUN: %env_tool_opts=coverage=1:print_coverage_summary=0 %t 2>&1 | FileCheck %s --check-prefix=CHECK-QUIET --implicit-check-not='SanitizerCoverage' // RUN: ls *.sancov // RUN: rm -rf %t_workdir @@ -30,4 +30,3 @@ int main() { // CHECK-DEFAULT: SanitizerCoverage: {{.*}}.sancov: {{[0-9]+}} PCs written // CHECK-QUIET: main -// CHECK-QUIET-NOT: SanitizerCoverage _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
