[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200213184454.GA4663@ubuntu-m2-xlarge-x86>
Date: Thu, 13 Feb 2020 11:44:54 -0700
From: Nathan Chancellor <natechancellor@...il.com>
To: Vincenzo Frascino <vincenzo.frascino@....com>
Cc: linux-arch@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
linux-kernel@...r.kernel.org, linux-mips@...r.kernel.org,
clang-built-linux@...glegroups.com, x86@...nel.org,
catalin.marinas@....com, will.deacon@....com, arnd@...db.de,
linux@...linux.org.uk, paul.burton@...s.com, tglx@...utronix.de,
luto@...nel.org, mingo@...hat.com, bp@...en8.de, sboyd@...nel.org,
salyzyn@...roid.com, pcc@...gle.com, 0x7f454c46@...il.com,
ndesaulniers@...gle.com, avagin@...nvz.org
Subject: Re: [PATCH 19/19] arm64: vdso32: Enable Clang Compilation
On Thu, Feb 13, 2020 at 04:16:14PM +0000, Vincenzo Frascino wrote:
> Enable Clang Compilation for the vdso32 library.
>
> Cc: Catalin Marinas <catalin.marinas@....com>
> Cc: Will Deacon <will@...nel.org>
> Signed-off-by: Vincenzo Frascino <vincenzo.frascino@....com>
> ---
> arch/arm64/kernel/vdso32/Makefile | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm64/kernel/vdso32/Makefile b/arch/arm64/kernel/vdso32/Makefile
> index 04df57b43cb1..209639101044 100644
> --- a/arch/arm64/kernel/vdso32/Makefile
> +++ b/arch/arm64/kernel/vdso32/Makefile
> @@ -11,8 +11,10 @@ include $(srctree)/lib/vdso/Makefile
> # Same as cc-*option, but using CC_COMPAT instead of CC
> ifeq ($(CONFIG_CC_IS_CLANG), y)
> CC_COMPAT ?= $(CC)
> +LD_COMPAT ?= $(CROSS_COMPILE_COMPAT)gcc
Well this is unfortunate :/
It looks like adding the --target flag to VDSO_LDFLAGS allows
clang to link the vDSO just fine although it does warn that -nostdinc
is unused:
clang-11: warning: argument unused during compilation: '-nostdinc'
[-Wunused-command-line-argument]
It would be nice if the logic of commit fe00e50b2db8 ("ARM: 8858/1:
vdso: use $(LD) instead of $(CC) to link VDSO") could be adopted here
but I get that this Makefile is its own beast :) at the very least, I
think that the --target flag should be added to VDSO_LDFLAGS so that gcc
is not a requirement for this but I am curious if you tried that already
and noticed any issues with it.
Cheers,
Nathan
> else
> CC_COMPAT ?= $(CROSS_COMPILE_COMPAT)gcc
> +LD_COMPAT ?= $(CC_COMPAT)
> endif
>
> cc32-option = $(call try-run,\
> @@ -171,7 +173,7 @@ quiet_cmd_vdsold_and_vdso_check = LD32 $@
> cmd_vdsold_and_vdso_check = $(cmd_vdsold); $(cmd_vdso_check)
>
> quiet_cmd_vdsold = LD32 $@
> - cmd_vdsold = $(CC_COMPAT) -Wp,-MD,$(depfile) $(VDSO_LDFLAGS) \
> + cmd_vdsold = $(LD_COMPAT) -Wp,-MD,$(depfile) $(VDSO_LDFLAGS) \
> -Wl,-T $(filter %.lds,$^) $(filter %.o,$^) -o $@
> quiet_cmd_vdsocc = CC32 $@
> cmd_vdsocc = $(CC_COMPAT) -Wp,-MD,$(depfile) $(VDSO_CFLAGS) -c -o $@ $<
> --
> 2.25.0
>
Powered by blists - more mailing lists