[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <YJjo5xRF9zZnVouN@kroah.com>
Date: Mon, 10 May 2021 10:03:51 +0200
From: Greg KH <gregkh@...uxfoundation.org>
To: Nathan Chancellor <nathan@...nel.org>
Cc: Jian Cai <jiancai@...gle.com>, sashal@...nel.org, will@...nel.org,
catalin.marinas@....com, stable@...r.kernel.org,
ndesaulniers@...gle.com, manojgupta@...gle.com, llozano@...gle.com,
clang-built-linux@...glegroups.com,
Will Deacon <will.deacon@....com>,
linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 4.19 ONLY v4] arm64: vdso: remove commas between macro
name and arguments
On Thu, May 06, 2021 at 10:43:33AM -0700, Nathan Chancellor wrote:
> On 5/5/2021 6:25 PM, Jian Cai wrote:
> > LLVM's integrated assembler appears to assume an argument with default
> > value is passed whenever it sees a comma right after the macro name.
> > It will be fine if the number of following arguments is one less than
> > the number of parameters specified in the macro definition. Otherwise,
> > it fails. For example, the following code works:
> >
> > $ cat foo.s
> > .macro foo arg1=2, arg2=4
> > ldr r0, [r1, #\arg1]
> > ldr r0, [r1, #\arg2]
> > .endm
> >
> > foo, arg2=8
> >
> > $ llvm-mc -triple=armv7a -filetype=obj foo.s -o ias.o
> > arm-linux-gnueabihf-objdump -dr ias.o
> >
> > ias.o: file format elf32-littlearm
> >
> > Disassembly of section .text:
> >
> > 00000000 <.text>:
> > 0: e5910001 ldr r0, [r1, #2]
> > 4: e5910003 ldr r0, [r1, #8]
> >
> > While the the following code would fail:
> >
> > $ cat foo.s
> > .macro foo arg1=2, arg2=4
> > ldr r0, [r1, #\arg1]
> > ldr r0, [r1, #\arg2]
> > .endm
> >
> > foo, arg1=2, arg2=8
> >
> > $ llvm-mc -triple=armv7a -filetype=obj foo.s -o ias.o
> > foo.s:6:14: error: too many positional arguments
> > foo, arg1=2, arg2=8
> >
> > This causes build failures as follows:
> >
> > arch/arm64/kernel/vdso/gettimeofday.S:230:24: error: too many positional
> > arguments
> > clock_gettime_return, shift=1
> > ^
> > arch/arm64/kernel/vdso/gettimeofday.S:253:24: error: too many positional
> > arguments
> > clock_gettime_return, shift=1
> > ^
> > arch/arm64/kernel/vdso/gettimeofday.S:274:24: error: too many positional
> > arguments
> > clock_gettime_return, shift=1
> >
> > This error is not in mainline because commit 28b1a824a4f4 ("arm64: vdso:
> > Substitute gettimeofday() with C implementation") rewrote this assembler
> > file in C as part of a 25 patch series that is unsuitable for stable.
> > Just remove the comma in the clock_gettime_return invocations in 4.19 so
> > that GNU as and LLVM's integrated assembler work the same.
> >
> > Link:
> > https://github.com/ClangBuiltLinux/linux/issues/1349
> >
> > Suggested-by: Nathan Chancellor <nathan@...nel.org>
> > Signed-off-by: Jian Cai <jiancai@...gle.com>
>
> Thanks for the updated example and explanation, this looks good to me now.
>
> Reviewed-by: Nathan Chancellor <nathan@...nel.org>
Now queued up, thanks.
greg k-h
Powered by blists - more mailing lists