[PATCH v2/RESEND] riscv: Pass -mno-relax only on lld < 15.0.0

Palmer Dabbelt palmer at dabbelt.com
Fri Sep 23 04:15:35 PDT 2022


On Sun, 18 Sep 2022 03:06:44 PDT (-0700), Palmer Dabbelt wrote:
> On Sun, 18 Sep 2022 02:57:11 PDT (-0700), conor at kernel.org wrote:
>> On Sun, Sep 18, 2022 at 02:29:34AM -0700, Palmer Dabbelt wrote:
>>> From: Fangrui Song <maskray at google.com>
>>>
>>> lld since llvm:6611d58f5bbc ("[ELF] Relax R_RISCV_ALIGN"), which will be
>>> included in the 15.0.0 release, has implemented some RISC-V linker
>>> relaxation.  -mno-relax is no longer needed in
>>> KBUILD_CFLAGS/KBUILD_AFLAGS to suppress R_RISCV_ALIGN which older lld
>>> can not handle:
>>>
>>>     ld.lld: error: capability.c:(.fixup+0x0): relocation R_RISCV_ALIGN
>>>     requires unimplemented linker relaxation; recompile with -mno-relax
>>>     but the .o is already compiled with -mno-relax
>>>
>>> Signed-off-by: Fangrui Song <maskray at google.com>
>>> Link: https://lore.kernel.org/r/20220710071117.446112-1-maskray@google.com/
>>> Reviewed-by: Nick Desaulniers <ndesaulniers at google.com>
>>> Tested-by: Nick Desaulniers <ndesaulniers at google.com>
>>> Signed-off-by: Palmer Dabbelt <palmer at rivosinc.com>
>>> ---
>>> Fanguri poked me about this one on IRC, I'm not sure what happened but
>>> it didn't make it to my inbox (and neither did the replies, which is
>>> kind of scary).  Rather that trying to resurrect that thread from lore,
>>> I figured it would be best to just send the v2 as the commit message
>>> needed a bit of cleanup.
>>
>> One of the replies was a T-b from Nathan:
>> https://lore.kernel.org/linux-riscv/YsxfiKC%2FZBr7U7qI@dev-arch.thelio-3990X/
>> dunno if you wanna pick that up or he wants to resend..
>>
>> I gave it a whirl too, so:
>> Tested-by: Conor Dooley <conor.dooley at microchip.com>
>
> Thanks, I just picked both up.

and turns out I'd forgotten the stable tag, so I'm gonig to hold this 
one off until next week.

>
>>
>>>
>>> Changes since v1 <20220710071117.446112-1-maskray at google.com>:
>>>
>>> * Clean up the commit message a bit.
>>> ---
>>>  arch/riscv/Makefile | 2 ++
>>>  1 file changed, 2 insertions(+)
>>>
>>> diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile
>>> index 3fa8ef336822..e7d52a2301e2 100644
>>> --- a/arch/riscv/Makefile
>>> +++ b/arch/riscv/Makefile
>>> @@ -37,6 +37,7 @@ else
>>>  endif
>>>
>>>  ifeq ($(CONFIG_LD_IS_LLD),y)
>>> +ifeq ($(shell test $(CONFIG_LLD_VERSION) -lt 150000; echo $$?),0)
>>>  	KBUILD_CFLAGS += -mno-relax
>>>  	KBUILD_AFLAGS += -mno-relax
>>>  ifndef CONFIG_AS_IS_LLVM
>>> @@ -44,6 +45,7 @@ ifndef CONFIG_AS_IS_LLVM
>>>  	KBUILD_AFLAGS += -Wa,-mno-relax
>>>  endif
>>>  endif
>>> +endif
>>>
>>>  # ISA string setting
>>>  riscv-march-$(CONFIG_ARCH_RV32I)	:= rv32ima
>>> --
>>> 2.34.1
>>>
>>>
>>> _______________________________________________
>>> linux-riscv mailing list
>>> linux-riscv at lists.infradead.org
>>> http://lists.infradead.org/mailman/listinfo/linux-riscv



More information about the linux-riscv mailing list