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

Palmer Dabbelt palmer at rivosinc.com
Sun Sep 18 03:06:44 PDT 2022


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.

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