Closed
Description
The kernel test robot recently reported a series of ARCH=riscv
link errors when using ld.lld
and GNU as that appear after a backport of mine. Looking into it further, these are visible in mainline when using recent binutils (I see it with 2.39):
$ make -skj"$(nproc)" ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- LLVM=1 LLVM_IAS=0 defconfig all
ld.lld: error: arch/riscv/kernel/vdso/rt_sigreturn.o:(.riscv.attributes): rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicbom1p0_zicsr2p0_zihintpause2p0: unsupported version number 2.1 for extension 'i'
ld.lld: error: arch/riscv/kernel/vdso/vgettimeofday.o:(.riscv.attributes): rv64i2p0_m2p0_a2p0_c2p0_zicbom1p0_zicsr2p0_zifencei2p0_zihintpause2p0: unsupported version number 2.0 for extension 'zicsr'
ld.lld: error: arch/riscv/kernel/vdso/getcpu.o:(.riscv.attributes): rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicbom1p0_zicsr2p0_zihintpause2p0: unsupported version number 2.1 for extension 'i'
ld.lld: error: arch/riscv/kernel/vdso/flush_icache.o:(.riscv.attributes): rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicbom1p0_zicsr2p0_zihintpause2p0: unsupported version number 2.1 for extension 'i'
ld.lld: error: arch/riscv/kernel/vdso/note.o:(.riscv.attributes): rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicbom1p0_zicsr2p0_zihintpause2p0: unsupported version number 2.1 for extension 'i'
...
ld.lld: error: net/8021q/vlan.o:(.riscv.attributes): rv64i2p0_m2p0_a2p0_c2p0_zicbom1p0_zicsr2p0_zifencei2p0_zihintpause2p0: unsupported version number 2.0 for extension 'zicsr'
ld.lld: error: net/8021q/vlan_dev.o:(.riscv.attributes): rv64i2p0_m2p0_a2p0_c2p0_zicbom1p0_zicsr2p0_zifencei2p0_zihintpause2p0: unsupported version number 2.0 for extension 'zicsr'
ld.lld: error: net/8021q/vlan_netlink.o:(.riscv.attributes): rv64i2p0_m2p0_a2p0_c2p0_zicbom1p0_zicsr2p0_zifencei2p0_zihintpause2p0: unsupported version number 2.0 for extension 'zicsr'
ld.lld: error: net/8021q/vlanproc.o:(.riscv.attributes): rv64i2p0_m2p0_a2p0_c2p0_zicbom1p0_zicsr2p0_zifencei2p0_zihintpause2p0: unsupported version number 2.0 for extension 'zicsr'
...
We do not test LLVM=1 LLVM_IAS=0
much in newer kernels and CI's version of binutils is not new enough to show this.