Add CFLAGS_KCOV_DATAFLOW and RUSTFLAGS_KCOV_DATAFLOW exports to
scripts/Makefile.kcov, containing:
  -fsanitize-coverage=dataflow-args,dataflow-ret -g
  (with optional -fno-inline via CONFIG_KCOV_DATAFLOW_NO_INLINE)

scripts/Makefile.lib applies these flags when a module's Makefile sets:
  KCOV_DATAFLOW_file.o := y   (per-file)
  KCOV_DATAFLOW := y          (per-directory)

Also supports CONFIG_KCOV_DATAFLOW_INSTRUMENT_ALL for global enablement.
The flags are only applied to kernel objects (same guard as basic KCOV).

Signed-off-by: Yunseong Kim <[email protected]>
---
 scripts/Makefile.kcov | 6 ++++++
 scripts/Makefile.lib  | 7 +++++++
 2 files changed, 13 insertions(+)

diff --git a/scripts/Makefile.kcov b/scripts/Makefile.kcov
index 78305a84ba9d..101173fe194b 100644
--- a/scripts/Makefile.kcov
+++ b/scripts/Makefile.kcov
@@ -2,10 +2,16 @@
 kcov-flags-y                                   += -fsanitize-coverage=trace-pc
 kcov-flags-$(CONFIG_KCOV_ENABLE_COMPARISONS)   += -fsanitize-coverage=trace-cmp
 
+# KCOV dataflow: trace function args and return values
+kcov-dataflow-flags-y := -fsanitize-coverage=dataflow-args,dataflow-ret -g
+kcov-dataflow-flags-$(CONFIG_KCOV_DATAFLOW_NO_INLINE) += -fno-inline
+
 kcov-rflags-y                                  += -Cpasses=sancov-module
 kcov-rflags-y                                  += 
-Cllvm-args=-sanitizer-coverage-level=3
 kcov-rflags-y                                  += 
-Cllvm-args=-sanitizer-coverage-trace-pc
 kcov-rflags-$(CONFIG_KCOV_ENABLE_COMPARISONS)  += 
-Cllvm-args=-sanitizer-coverage-trace-compares
 
 export CFLAGS_KCOV := $(kcov-flags-y)
+export CFLAGS_KCOV_DATAFLOW := $(kcov-dataflow-flags-y)
+export RUSTFLAGS_KCOV_DATAFLOW := -Cpasses=sancov-module 
-Cllvm-args=-sanitizer-coverage-level=3 
-Cllvm-args=-sanitizer-coverage-dataflow-args 
-Cllvm-args=-sanitizer-coverage-dataflow-ret -Cdebuginfo=2
 export RUSTFLAGS_KCOV := $(kcov-rflags-y)
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 80e127c75a93..519bf651cdcf 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -88,6 +88,13 @@ _c_flags += $(if $(patsubst n%,, \
 _rust_flags += $(if $(patsubst n%,, \
        $(KCOV_INSTRUMENT_$(target-stem).o)$(KCOV_INSTRUMENT)$(if 
$(is-kernel-object),$(CONFIG_KCOV_INSTRUMENT_ALL))), \
        $(RUSTFLAGS_KCOV))
+# KCOV dataflow: per-file opt-in or global via 
CONFIG_KCOV_DATAFLOW_INSTRUMENT_ALL
+_c_flags += $(if $(patsubst n%,, \
+       $(KCOV_DATAFLOW_$(target-stem).o)$(KCOV_DATAFLOW)$(if 
$(is-kernel-object),$(CONFIG_KCOV_DATAFLOW_INSTRUMENT_ALL))), \
+       $(CFLAGS_KCOV_DATAFLOW))
+_rust_flags += $(if $(patsubst n%,, \
+       $(KCOV_DATAFLOW_$(target-stem).o)$(KCOV_DATAFLOW)$(if 
$(is-kernel-object),$(CONFIG_KCOV_DATAFLOW_INSTRUMENT_ALL))), \
+       $(RUSTFLAGS_KCOV_DATAFLOW))
 endif
 
 #

-- 
2.43.0


Reply via email to