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

Reply via email to