| Issue |
184757
|
| Summary |
[lld][LoongArch][RISCV] Crash when relaxation pass encounters synthetic sections
|
| Labels |
|
| Assignees |
|
| Reporter |
wangleiat
|
```
# REQUIRES: loongarch, riscv
# RUN: rm -rf %t && split-file %s %t
## Test LoongArch
# RUN: llvm-mc --filetype=obj -triple=loongarch64 %t/la.s -o %t/la.o
# RUN: ld.lld -T %t/a.ld %t/la.o -o %t/la.out
## Test RISC-V
# RUN: llvm-mc --filetype=obj -triple=riscv64 %t/rv.s -o %t/rv.o
# RUN: ld.lld -T %t/a.ld %t/rv.o -o %t/rv.out
#--- la.s
.global _start
_start:
pcalau12i $a0, %got_pc_hi20(sym)
ld.d $a0, $a0, %got_pc_lo12(sym)
.data
sym:
.word 0
#--- rv.s
.global _start
_start:
1:
auipc a0, %got_pcrel_hi(sym)
ld a0, %pcrel_lo(1b)(a0)
.data
sym:
.word 0
#--- a.ld
SECTIONS {
.text : {
*(.text)
*(.got)
}
}
```
error message:
```
#0 0x00007fee135405a8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/wanglei/llvm-clang/22.x/_build/bin/../lib/libLLVM.so.22.1+0x5b405a8)
#1 0x00007fee1353dbc5 llvm::sys::RunSignalHandlers() (/home/wanglei/llvm-clang/22.x/_build/bin/../lib/libLLVM.so.22.1+0x5b3dbc5)
#2 0x00007fee13541381 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#3 0x00007fee0d45a050 (/lib/x86_64-linux-gnu/libc.so.6+0x3c050)
#4 0x00007fee0d570a22 __memcpy_avx_unaligned_erms ./string/../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:350:0
#5 0x00005639ff7d4b4b (anonymous namespace)::RISCV::finalizeRelax(int) const RISCV.cpp:0:0
#6 0x00005639ff9ba071 (anonymous namespace)::Writer<llvm::object::ELFType<(llvm::endianness)1, true>>::finalizeSections() Writer.cpp:0:0
#7 0x00005639ff991845 void lld::elf::writeResult<llvm::object::ELFType<(llvm::endianness)1, true>>(lld::elf::Ctx&) (/home/wanglei/llvm-clang/22.x/_build/bin/ld.lld+0x55d845)
#8 0x00005639ff78462c void lld::elf::LinkerDriver::link<llvm::object::ELFType<(llvm::endianness)1, true>>(llvm::opt::InputArgList&) (/home/wanglei/llvm-clang/22.x/_build/bin/ld.lld+0x35062c)
#9 0x00005639ff765a65 lld::elf::LinkerDriver::linkerMain(llvm::ArrayRef<char const*>) (/home/wanglei/llvm-clang/22.x/_build/bin/ld.lld+0x331a65)
#10 0x00005639ff762077 lld::elf::link(llvm::ArrayRef<char const*>, llvm::raw_ostream&, llvm::raw_ostream&, bool, bool) (/home/wanglei/llvm-clang/22.x/_build/bin/ld.lld+0x32e077)
#11 0x00005639ff672fad lld::unsafeLldMain(llvm::ArrayRef<char const*>, llvm::raw_ostream&, llvm::raw_ostream&, llvm::ArrayRef<lld::DriverDef>, bool) (/home/wanglei/llvm-clang/22.x/_build/bin/ld.lld+0x23efad)
#12 0x00005639ff67215d lld_main(int, char**, llvm::ToolContext const&) (/home/wanglei/llvm-clang/22.x/_build/bin/ld.lld+0x23e15d)
#13 0x00005639ff6726d7 main (/home/wanglei/llvm-clang/22.x/_build/bin/ld.lld+0x23e6d7)
#14 0x00007fee0d44524a __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#15 0x00007fee0d445305 call_init ./csu/../csu/libc-start.c:128:20
#16 0x00007fee0d445305 __libc_start_main ./csu/../csu/libc-start.c:347:5
#17 0x00005639ff671d81 _start (/home/wanglei/llvm-clang/22.x/_build/bin/ld.lld+0x23dd81)
[1] 2267788 segmentation fault /home/wanglei/llvm-clang/22.x/_build/bin/ld.lld -T -o
```
Note:Such a linker script layout—merging .text and .got into a single output section—is typically used in bootloaders or standalone bare-metal binaries where a simple memory layout is required.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs