Re: ld.lld: error: vmlinux.a(kernel/kallsyms.o):(function kallsyms_lookup_name: .text+0x90): relocation R_RISCV_PCREL_HI20 out of range: -524416 is not in [-524288, 524287]; references kallsyms_seqs_of_names

From: Yujie Liu
Date: Tue Mar 12 2024 - 02:00:48 EST


Hi Zhen,

On Tue, Feb 20, 2024 at 08:27:15PM +0800, Leizhen (ThunderTown) wrote:
> > On 2024/2/6 13:19, kernel test robot wrote:
> >> Hi Zhen,
> >>
> >> FYI, the error/warning still remains.
> >
> > I'm trying to reproduce it. But I'm having a little trouble getting
> > the environment ready.
>
> Sorry, I tried but it was not reproduced. I made the following two changes
> to the steps in the 'reproduce' link:
> 1. Put linux and lkp-tests in two directories of the same level. Because:
> $ git fetch --no-tags linus master
> error: RPC failed; HTTP 403 curl 22 The requested URL returned error: 403
> fatal: error reading section header 'acknowledgments'
> 2. Compiler was specified by following the prompts.
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang-17 ~/lkp-tests/kbuild/make.cross W=1 O=build_dir ARCH=riscv olddefconfig
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang-17 ~/lkp-tests/kbuild/make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Sorry for our late reply. We rechecked this case and noticed that this
issue can be reproduced by clang-15, but can't be reproduced by newer
version of clang. Not sure if this is a flaw in old version of LLVM
toolchain, just for your information.

$ COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang-15 ~/lkp-tests/kbuild/make.cross W=1 ARCH=riscv
..
LD .tmp_vmlinux.kallsyms1
ld.lld: error: vmlinux.a(kernel/kallsyms.o):(function kallsyms_lookup_name: .text+0x70): relocation R_RISCV_PCREL_HI20 out of range: -524416 is not in [-524288, 524287]; references kallsyms_num_syms
>>> referenced by kallsyms.c
>>> defined in vmlinux.a(kernel/kallsyms.o)

ld.lld: error: vmlinux.a(kernel/kallsyms.o):(function kallsyms_lookup_name: .text+0x90): relocation R_RISCV_PCREL_HI20 out of range: -524416 is not in [-524288, 524287]; references kallsyms_seqs_of_names
>>> referenced by kallsyms.c
>>> defined in vmlinux.a(kernel/kallsyms.o)
..

Thanks,
Yujie

>
> Image is finally generated, so there should be no problem with the above steps being adjusted:
> $ ls build_dir/arch/riscv/boot/
> dts Image loader loader.bin loader.lds loader.o
>
> By the way, all the symbols to be reported "relocation R_RISCV_PCREL_HI20 out of range" is
> generated by the tool kallsyms (scripts/kallsyms.c). So, it seems that the tool kallsyms
> have not been executed. And this error is not caused by my patches.
>
> >
> >>
> >> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> >> head: 54be6c6c5ae8e0d93a6c4641cb7528eb0b6ba478
> >> commit: 60443c88f3a89fd303a9e8c0e84895910675c316 kallsyms: Improve the performance of kallsyms_lookup_name()
> >> date: 1 year, 3 months ago
> >> config: riscv-randconfig-r064-20240120 (https://download.01.org/0day-ci/archive/20240206/202402061302.HkByW9x0-lkp@xxxxxxxxx/config)
> >> compiler: clang version 15.0.7 (https://github.com/llvm/llvm-project.git 8dfdcc7b7bf66834a761bd8de445840ef68e4d1a)
> >> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240206/202402061302.HkByW9x0-lkp@xxxxxxxxx/reproduce)
> >>
> >> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> >> the same patch/commit), kindly add following tags
> >> | Reported-by: kernel test robot <lkp@xxxxxxxxx>
> >> | Closes: https://lore.kernel.org/oe-kbuild-all/202402061302.HkByW9x0-lkp@xxxxxxxxx/
> >>
> >> All errors (new ones prefixed by >>):
> >>
> >>>> ld.lld: error: vmlinux.a(kernel/kallsyms.o):(function kallsyms_lookup_name: .text+0x90): relocation R_RISCV_PCREL_HI20 out of range: -524416 is not in [-524288, 524287]; references kallsyms_seqs_of_names
> >> >>> referenced by kallsyms.c
> >> >>> defined in vmlinux.a(kernel/kallsyms.o)
> >>
> >