From 1c525446f971ef3b20b3991b93271348a545d6bd Mon Sep 17 00:00:00 2001 From: Nick Desaulniers Date: Tue, 19 Oct 2021 15:36:46 -0700 Subject: [PATCH] arm64: vdso32: require CROSS_COMPILE_COMPAT for gcc+bfd commit 3e6f8d1fa18457d54b20917bd9174d27daf09ab9 upstream. Similar to commit 231ad7f409f1 ("Makefile: infer --target from ARCH for CC=clang") There really is no point in setting --target based on $CROSS_COMPILE_COMPAT for clang when the integrated assembler is being used, since commit ef94340583ee ("arm64: vdso32: drop -no-integrated-as flag"). Allows COMPAT_VDSO to be selected without setting $CROSS_COMPILE_COMPAT when using clang and lld together. Before: $ ARCH=arm64 CROSS_COMPILE_COMPAT=arm-linux-gnueabi- make -j72 LLVM=1 defconfig $ grep CONFIG_COMPAT_VDSO .config CONFIG_COMPAT_VDSO=y $ ARCH=arm64 make -j72 LLVM=1 defconfig $ grep CONFIG_COMPAT_VDSO .config $ After: $ ARCH=arm64 CROSS_COMPILE_COMPAT=arm-linux-gnueabi- make -j72 LLVM=1 defconfig $ grep CONFIG_COMPAT_VDSO .config CONFIG_COMPAT_VDSO=y $ ARCH=arm64 make -j72 LLVM=1 defconfig $ grep CONFIG_COMPAT_VDSO .config CONFIG_COMPAT_VDSO=y Reviewed-by: Nathan Chancellor Suggested-by: Nathan Chancellor Tested-by: Nathan Chancellor Signed-off-by: Nick Desaulniers Reviewed-by: Vincenzo Frascino Link: https://lore.kernel.org/r/20211019223646.1146945-5-ndesaulniers@google.com Signed-off-by: Will Deacon Signed-off-by: Nauval Rizky Signed-off-by: Fiqri Ardyansyah Signed-off-by: Cyber Knight --- arch/arm64/Makefile | 7 +++---- arch/arm64/kernel/vdso32/Makefile | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile index e0be61c24024..d42feb4d9006 100644 --- a/arch/arm64/Makefile +++ b/arch/arm64/Makefile @@ -71,12 +71,11 @@ ifeq ($(CONFIG_COMPAT_VDSO), y) # should be ignored. If the error is triggered and you set # CONFIG_CROSS_COMPILE_COMPAT, set CROSS_COMPILE_COMPAT to an appropriate value # when invoking make and fix CONFIG_CROSS_COMPILE_COMPAT. - ifeq ($(CROSS_COMPILE_COMPAT),) - $(error CROSS_COMPILE_COMPAT not defined or empty, the compat vDSO will not be built) - else ifeq ($(cc-name),clang) - export CROSS_COMPILE_COMPAT + ifeq ($(cc-name),clang) export CONFIG_VDSO32 := y vdso32 := -DCONFIG_VDSO32=1 + else ifeq ($(CROSS_COMPILE_COMPAT),) + $(error CROSS_COMPILE_COMPAT not defined or empty, the compat vDSO will not be built) else ifeq ($(shell which $(CROSS_COMPILE_COMPAT)$(cc-name) 2> /dev/null),) $(error $(CROSS_COMPILE_COMPAT)$(cc-name) not found, check CROSS_COMPILE_COMPAT) else diff --git a/arch/arm64/kernel/vdso32/Makefile b/arch/arm64/kernel/vdso32/Makefile index e0410c201eb4..62014bb94a1f 100644 --- a/arch/arm64/kernel/vdso32/Makefile +++ b/arch/arm64/kernel/vdso32/Makefile @@ -5,7 +5,7 @@ # A mix between the arm64 and arm vDSO Makefiles. ifeq ($(cc-name),clang) - CC_ARM32 := $(CC) --target=$(notdir $(CROSS_COMPILE_COMPAT:%-=%)) + CC_ARM32 := $(CC) --target=arm-linux-gnueabi else CC_ARM32 := $(CROSS_COMPILE_COMPAT)$(cc-name) endif