lkml.org 
[lkml]   [2021]   [Apr]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    SubjectRe: [PATCH v2] arm64: vdso32: drop -no-integrated-as flag
    On Thu, Apr 15, 2021 at 6:31 AM Vincenzo Frascino
    <vincenzo.frascino@arm.com> wrote:
    >
    >
    >
    > On 4/14/21 10:45 PM, Nick Desaulniers wrote:
    > > Clang can assemble these files just fine; this is a relic from the top
    > > level Makefile conditionally adding this. We no longer need --prefix,
    > > --gcc-toolchain, or -Qunused-arguments flags either with this change, so
    > > remove those too.
    > >
    > > To test building:
    > > $ ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- \
    > > CROSS_COMPILE_COMPAT=arm-linux-gnueabi- make LLVM=1 LLVM_IAS=1 \
    > > defconfig arch/arm64/kernel/vdso32/
    > >
    > > Suggested-by: Nathan Chancellor <nathan@kernel.org>
    > > Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    >
    > The patch looks fine, but I have one question: the kernel requires as a minimum
    > Clang/LLVM version 10.0.1. Did you verify that with that version compat vDSOs
    > still builds and works correctly?

    Hi Vincenzo,
    Great question, let's check.
    $ cd path/to/llvm-project
    $ git checkout origin/release/10.x
    $ cd llvm/build && ninja
    $ cd path/to/linux
    $ b4 am https://lore.kernel.org/lkml/20210413230609.3114365-1-ndesaulniers@google.com/
    -o - | git am -3

    We can't generally build ARCH=arm64 defconfig with LLVM_IAS=1 with
    clang-10, but dropping LLVM_IAS=1 it looks like we can still build
    without that.

    $ ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
    CROSS_COMPILE_COMPAT=arm-linux-gnueabi- make LLVM=1 -j72 defconfig
    clean all
    $ ls -l arch/arm64/kernel/vdso32
    total 116
    -rw-r----- 1 ndesaulniers primarygroup 7534 Apr 14 14:41 Makefile
    -rw-r----- 1 ndesaulniers primarygroup 387 Mar 31 10:47 note.c
    -rw-r----- 1 ndesaulniers primarygroup 2544 Apr 15 09:48 note.o
    -rw-r----- 1 ndesaulniers primarygroup 4552 Apr 15 09:48 vdso.lds
    -rw-r----- 1 ndesaulniers primarygroup 1587 Apr 1 12:55 vdso.lds.S
    -rw------- 1 ndesaulniers primarygroup 3576 Apr 15 09:48 vdso.so
    -rw------- 1 ndesaulniers primarygroup 24380 Apr 15 09:48 vdso.so.dbg
    -rwxr-x--- 1 ndesaulniers primarygroup 24380 Apr 15 09:48 vdso.so.raw
    -rw-r----- 1 ndesaulniers primarygroup 828 Apr 1 12:55 vgettimeofday.c
    -rw-r----- 1 ndesaulniers primarygroup 29084 Apr 15 09:48 vgettimeofday.o

    FWIW, clang-10 was missing support for R_AARCH64_PREL32, which affects
    building arch/arm64/kvm/hyp/nvhe/hyp-reloc.S.

    >
    > Otherwise:
    >
    > Reviewed-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
    >
    > > ---
    > > Changes V1 -> V2:
    > > * Remove --prefix, --gcc-toolchain, COMPAT_GCC_TOOLCHAIN, and
    > > COMPAT_GCC_TOOLCHAIN_DIR as per Nathan.
    > > * Credit Nathan with Suggested-by tag.
    > > * Remove -Qunused-arguments.
    > > * Update commit message.
    > >
    > > arch/arm64/kernel/vdso32/Makefile | 8 --------
    > > 1 file changed, 8 deletions(-)
    > >
    > > diff --git a/arch/arm64/kernel/vdso32/Makefile b/arch/arm64/kernel/vdso32/Makefile
    > > index 789ad420f16b..3dba0c4f8f42 100644
    > > --- a/arch/arm64/kernel/vdso32/Makefile
    > > +++ b/arch/arm64/kernel/vdso32/Makefile
    > > @@ -10,15 +10,7 @@ include $(srctree)/lib/vdso/Makefile
    > >
    > > # Same as cc-*option, but using CC_COMPAT instead of CC
    > > ifeq ($(CONFIG_CC_IS_CLANG), y)
    > > -COMPAT_GCC_TOOLCHAIN_DIR := $(dir $(shell which $(CROSS_COMPILE_COMPAT)elfedit))
    > > -COMPAT_GCC_TOOLCHAIN := $(realpath $(COMPAT_GCC_TOOLCHAIN_DIR)/..)
    > > -
    > > CC_COMPAT_CLANG_FLAGS := --target=$(notdir $(CROSS_COMPILE_COMPAT:%-=%))
    > > -CC_COMPAT_CLANG_FLAGS += --prefix=$(COMPAT_GCC_TOOLCHAIN_DIR)$(notdir $(CROSS_COMPILE_COMPAT))
    > > -CC_COMPAT_CLANG_FLAGS += -no-integrated-as -Qunused-arguments
    > > -ifneq ($(COMPAT_GCC_TOOLCHAIN),)
    > > -CC_COMPAT_CLANG_FLAGS += --gcc-toolchain=$(COMPAT_GCC_TOOLCHAIN)
    > > -endif
    > >
    > > CC_COMPAT ?= $(CC)
    > > CC_COMPAT += $(CC_COMPAT_CLANG_FLAGS)
    > >
    >
    > --
    > Regards,
    > Vincenzo



    --
    Thanks,
    ~Nick Desaulniers

    \
     
     \ /
      Last update: 2021-04-15 18:54    [W:3.913 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site