[PATCH] um: fix stub exe build with CONFIG_GCOV

Nathan Chancellor nathan at kernel.org
Sun Oct 27 15:09:13 PDT 2024


On Fri, Oct 25, 2024 at 10:27:01AM +0200, Johannes Berg wrote:
> From: Johannes Berg <johannes.berg at intel.com>
> 
> CONFIG_GCOV is special and only in UML since it builds the
> kernel with a "userspace" option. This is fine, but the stub
> is even more special and not really a full userspace process,
> so it then fails to link as reported.
> 
> For good measure, also remove the GPROF options, even though
> they don't seem to cause build failures now.
> 
> To be able to do this, export the specific options (GCOV_OPT
> and GPROF_OPT) but rename them so there's less chance of any
> conflicts.
> 
> Reported-by: kernel test robot <lkp at intel.com>
> Closes: https://lore.kernel.org/oe-kbuild-all/202410242238.SXhs2kQ4-lkp@intel.com/
> Fixes: 32e8eaf263d9 ("um: use execveat to create userspace MMs")
> Signed-off-by: Johannes Berg <johannes.berg at intel.com>

Reviewed-by: Nathan Chancellor <nathan at kernel.org>
Tested-by: Nathan Chancellor <nathan at kernel.org>

> ---
>  arch/um/Makefile-skas        | 14 +++++++-------
>  arch/um/kernel/skas/Makefile |  2 +-
>  2 files changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/arch/um/Makefile-skas b/arch/um/Makefile-skas
> index 67323b028999..1a27e65bcb9c 100644
> --- a/arch/um/Makefile-skas
> +++ b/arch/um/Makefile-skas
> @@ -3,15 +3,15 @@
>  # Licensed under the GPL
>  #
>  
> -GPROF_OPT += -pg
> +export UM_GPROF_OPT += -pg
>  
>  ifdef CONFIG_CC_IS_CLANG
> -GCOV_OPT += -fprofile-instr-generate -fcoverage-mapping
> +export UM_GCOV_OPT += -fprofile-instr-generate -fcoverage-mapping
>  else
> -GCOV_OPT += -fprofile-arcs -ftest-coverage
> +export UM_GCOV_OPT += -fprofile-arcs -ftest-coverage
>  endif
>  
> -CFLAGS-$(CONFIG_GCOV) += $(GCOV_OPT)
> -CFLAGS-$(CONFIG_GPROF) += $(GPROF_OPT)
> -LINK-$(CONFIG_GCOV) += $(GCOV_OPT)
> -LINK-$(CONFIG_GPROF) += $(GPROF_OPT)
> +CFLAGS-$(CONFIG_GCOV) += $(UM_GCOV_OPT)
> +CFLAGS-$(CONFIG_GPROF) += $(UM_GPROF_OPT)
> +LINK-$(CONFIG_GCOV) += $(UM_GCOV_OPT)
> +LINK-$(CONFIG_GPROF) += $(UM_GPROF_OPT)
> diff --git a/arch/um/kernel/skas/Makefile b/arch/um/kernel/skas/Makefile
> index f6a219074772..3384be42691f 100644
> --- a/arch/um/kernel/skas/Makefile
> +++ b/arch/um/kernel/skas/Makefile
> @@ -24,7 +24,7 @@ $(obj)/stub_exe: $(obj)/stub_exe.dbg FORCE
>  
>  quiet_cmd_stub_exe = STUB_EXE $@
>        cmd_stub_exe = $(CC) -nostdlib -o $@ \
> -			   $(KBUILD_CFLAGS) $(STUB_EXE_LDFLAGS) \
> +			   $(filter-out $(UM_GPROF_OPT) $(UM_GCOV_OPT),$(KBUILD_CFLAGS)) $(STUB_EXE_LDFLAGS) \

Not that it matters much but it might be more readable to have
$(STUB_EXE_LDFLAGS) on its own line now.

>  			   $(filter %.o,$^)
>  
>  STUB_EXE_LDFLAGS = -Wl,-n -static
> -- 
> 2.47.0
> 



More information about the linux-um mailing list