On Tue, Feb 21, 2023 at 09:15:11AM +0000, Conor Dooley wrote:
On Tue, Feb 21, 2023 at 02:30:17PM +0530, Naresh Kamboju wrote:
The riscv defconfig and tinyconfig builds failed with clang-nightly due to below build warnings / errors on latest stable-rc 5.10.
Regression on riscv:
- build/clang-nightly-tinyconfig - FAILED
- build/clang-nightly-defconfig - FAILED
Build log:
make --silent --keep-going --jobs=8 O=/home/tuxbuild/.cache/tuxmake/builds/1/build ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- HOSTCC=clang CC=clang LLVM=1 LLVM_IAS=1 LD=riscv64-linux-gnu-ld riscv64-linux-gnu-ld: -march=rv64i2p0_m2p0_a2p0_zicsr2p0_zifencei2p0: Invalid or unknown z ISA extension: 'zifencei' riscv64-linux-gnu-ld: failed to merge target specific data of file init/version.o riscv64-linux-gnu-ld: -march=rv64i2p0_m2p0_a2p0_zicsr2p0_zifencei2p0: Invalid or unknown z ISA extension: 'zifencei' riscv64-linux-gnu-ld: failed to merge target specific data of file init/do_mounts.o riscv64-linux-gnu-ld: -march=rv64i2p0_m2p0_a2p0_zicsr2p0_zifencei2p0: Invalid or unknown z ISA extension: 'zifencei' riscv64-linux-gnu-ld: failed to merge target specific data of file init/noinitramfs.o riscv64-linux-gnu-ld: -march=rv64i2p0_m2p0_a2p0_zicsr2p0_zifencei2p0: Invalid or unknown z ISA extension: 'zifencei' riscv64-linux-gnu-ld: failed to merge target specific data of file init/calibrate.o riscv64-linux-gnu-ld: -march=rv64i2p0_m2p0_a2p0_zicsr2p0_zifencei2p0: Invalid or unknown z ISA extension: 'zifencei'
Build details, https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-5.10.y/build/v5.10....
binutils 2.35 by the looks of things, I **think** that zifencei didn't land until 2.36. zicsr and zifence get added via cc-option-yn, which, IIRC, doesn't do anything with the linker. I dunno if anyone in RISC-V land cares this much about "odd" configurations back in 5.10, but while a fix is outstanding, you could use a newer binutils?
This is new in clang-17 so I bisected LLVM down to commit 22e199e6afb1 ("[RISCV] Accept zicsr and zifencei command line options"), so I think we need something like commit aae538cd03bc ("riscv: fix detection of toolchain Zihintpause support") for zifencei to make sure all three tools stay in sync, since I suspect that this is reproducible in mainline with GNU ld. We just happen not to notice when using LLVM=1 LLVM_IAS=1 since the tools have symmetrical support.
I can work up something like that change tomorrow if that seems like the path worth taking.
Cheers, Nathan