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

Conor Dooley conor at kernel.org
Sun Sep 18 02:57:11 PDT 2022


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>

> 
> 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