lkml.org 
[lkml]   [2021]   [Dec]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 02/76] arm64: vdso32: require CROSS_COMPILE_COMPAT for gcc+bfd
    Date
    From: Nick Desaulniers <ndesaulniers@google.com>

    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 <nathan@kernel.org>
    Suggested-by: Nathan Chancellor <nathan@kernel.org>
    Tested-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Reviewed-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
    Link: https://lore.kernel.org/r/20211019223646.1146945-5-ndesaulniers@google.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/arm64/Kconfig | 3 ++-
    arch/arm64/kernel/vdso32/Makefile | 17 +++++------------
    2 files changed, 7 insertions(+), 13 deletions(-)

    --- a/arch/arm64/Kconfig
    +++ b/arch/arm64/Kconfig
    @@ -1265,7 +1265,8 @@ config KUSER_HELPERS

    config COMPAT_VDSO
    bool "Enable vDSO for 32-bit applications"
    - depends on !CPU_BIG_ENDIAN && "$(CROSS_COMPILE_COMPAT)" != ""
    + depends on !CPU_BIG_ENDIAN
    + depends on (CC_IS_CLANG && LD_IS_LLD) || "$(CROSS_COMPILE_COMPAT)" != ""
    select GENERIC_COMPAT_VDSO
    default y
    help
    --- a/arch/arm64/kernel/vdso32/Makefile
    +++ b/arch/arm64/kernel/vdso32/Makefile
    @@ -10,18 +10,15 @@ include $(srctree)/lib/vdso/Makefile

    # Same as cc-*option, but using CC_COMPAT instead of CC
    ifeq ($(CONFIG_CC_IS_CLANG), y)
    -CC_COMPAT_CLANG_FLAGS := --target=$(notdir $(CROSS_COMPILE_COMPAT:%-=%))
    -
    CC_COMPAT ?= $(CC)
    -CC_COMPAT += $(CC_COMPAT_CLANG_FLAGS)
    -
    -ifneq ($(LLVM),)
    -LD_COMPAT ?= $(LD)
    +CC_COMPAT += --target=arm-linux-gnueabi
    else
    -LD_COMPAT ?= $(CROSS_COMPILE_COMPAT)ld
    +CC_COMPAT ?= $(CROSS_COMPILE_COMPAT)gcc
    endif
    +
    +ifeq ($(CONFIG_LD_IS_LLD), y)
    +LD_COMPAT ?= $(LD)
    else
    -CC_COMPAT ?= $(CROSS_COMPILE_COMPAT)gcc
    LD_COMPAT ?= $(CROSS_COMPILE_COMPAT)ld
    endif

    @@ -47,10 +44,6 @@ VDSO_CPPFLAGS += $(LINUXINCLUDE)
    # Common C and assembly flags
    # From top-level Makefile
    VDSO_CAFLAGS := $(VDSO_CPPFLAGS)
    -ifneq ($(shell $(CC_COMPAT) --version 2>&1 | head -n 1 | grep clang),)
    -VDSO_CAFLAGS += --target=$(notdir $(CROSS_COMPILE_COMPAT:%-=%))
    -endif
    -
    VDSO_CAFLAGS += $(call cc32-option,-fno-PIE)
    ifdef CONFIG_DEBUG_INFO
    VDSO_CAFLAGS += -g

    \
     
     \ /
      Last update: 2021-12-27 16:42    [W:4.053 / U:0.384 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site