On 27.03.2025 01:40, Volodymyr Babchuk wrote: > --- a/xen/Kconfig.debug > +++ b/xen/Kconfig.debug > @@ -44,6 +44,15 @@ config COVERAGE > > If unsure, say N here. > > +config CONDITION_COVERAGE > + bool "Condition coverage support" > + depends on COVERAGE && !CC_IS_CLANG > + help > + Enable condition coverage support. Used for collecting MC/DC > + (Modified Condition/Decision Coverage) metrics. > + > + If unsure, say N here. > + > config DEBUG_LOCK_PROFILE > bool "Lock Profiling" > select DEBUG_LOCKS > --- a/xen/Rules.mk > +++ b/xen/Rules.mk > @@ -138,6 +138,9 @@ ifeq ($(CONFIG_CC_IS_CLANG),y) > COV_FLAGS := -fprofile-instr-generate -fcoverage-mapping > else > COV_FLAGS := -fprofile-arcs -ftest-coverage > +ifeq ($(CONFIG_CONDITION_COVERAGE),y) > + COV_FLAGS += -fcondition-coverage > +endif > endif > > # Reset COV_FLAGS in cases where an objects has another one as prerequisite > --- a/xen/common/coverage/gcc_4_7.c > +++ b/xen/common/coverage/gcc_4_7.c > @@ -43,6 +43,10 @@ > #define GCOV_UNIT_SIZE 4 > #endif > > +#if defined(CONFIG_CONDITION_COVERAGE) && (GCC_VERSION < 140100) > +#error "GCC 14.1 or never is required to generate conditional coverage data" > +#endif
That's too late as a check. It wants to be in Kconfig (less preferred from my pov, should at most be influencing the default there) or the latest in the makefile (see [1]). After all a compiler not supporting the feature will choke already on -fcondition-coverage, and hence not even get to see this pre-processor conditional. Jan [1] https://lists.xen.org/archives/html/xen-devel/2022-09/msg01793.html