RISC-V: Don't do undefweak relaxations for the linker_def symbols.
authorNelson Chu <nelson@rivosinc.com>
Thu, 19 Oct 2023 04:10:42 +0000 (12:10 +0800)
committerNelson Chu <nelson@rivosinc.com>
Thu, 19 Oct 2023 04:19:53 +0000 (12:19 +0800)
commitd08515a68e5b44f5e0b045e371a996e4196226ed
treeb4aa5087cf2790312d76660beebaf53dc628d776
parent6f85247eec616650608b48c4393f7b93006037d0
RISC-V: Don't do undefweak relaxations for the linker_def symbols.

I get the following truncated errors recently when running riscv-gnu-toolchain
regressions,

/scratch/riscv-gnu-toolchain/regression/build/linux-rv32imafdc-ilp32d-medlow/build-glibc-linux-rv32imafdc-ilp32d/libc.a(libc-start.o): in function `elf_irela':
/scratch/riscv-gnu-toolchain/glibc/csu/../sysdeps/riscv/dl-irel.h:47:(.text+0x88): relocation truncated to fit: R_RISCV_GPREL_I against symbol `__ehdr_start' defined in .note.ABI-tag section in /scratch/riscv-gnu-toolchain/regression/build/linux-rv32imafdc-ilp32d-medlow/build-glibc-linux-rv32imafdc-ilp32d/elf/sln

The linker_def symbols like __ehdr_start that may be undefweak in early stages
of linking, including relax stage, but are guaranteed to be defined later.
Therefore, it seems like we shouldn't do the undefweak relaxations for these
kinds of symbols since they may be defined after relaxations.

bfd/
* elfnn-riscv.c (_bfd_riscv_relax_section): Don't do undefweak
relaxations for the linker_def symbols.
bfd/elfnn-riscv.c