Issue |
147771
|
Summary |
LLD assertion failure for `RISCV_ALIGN` relaxation
|
Labels |
lld
|
Assignees |
|
Reporter |
jwnrt
|
LLD hits this assertion when doing the alignment relaxation following some padding bytes.
Here's a reproduction on 8905b1c38f15d7f7b31e741222ae1de0a11222d8:
```asm
.balign 4
.global _start
_start:
.fill 3
.balign 4
```
```console
$ ~/toolchain/bin/clang -fuse-ld=lld -nostdlib ~/linker-bug/repro.S --target=riscv32
ld.lld: /home/jw/llvm-project/lld/ELF/Arch/RISCV.cpp:1012: virtual void {anonymous}::RISCV::finalizeRelax(int) const: Assertion `j + 2 == skip' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /home/jw/toolchain/bin/ld.lld -Bstatic -m elf32lriscv -X -L/home/jw/toolchain/bin/../lib/clang-runtimes/riscv32/lib -L/home/jw/toolchain/lib/clang/21/lib/riscv32 -L/home/jw/toolchain/bin/../lib/clang-runtimes/riscv32/lib /tmp/repro-01dd63.o -X -o a.out
#0 0x000056424b4055ec llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/jw/llvm-project/llvm/lib/Support/Unix/Signals.inc:819:22
#1 0x000056424b405a79 PrintStackTraceSignalHandler(void*) /home/jw/llvm-project/llvm/lib/Support/Unix/Signals.inc:903:1
#2 0x000056424b402d42 llvm::sys::RunSignalHandlers() /home/jw/llvm-project/llvm/lib/Support/Signals.cpp:104:20
#3 0x000056424b404ea7 SignalHandler(int, siginfo_t*, void*) /home/jw/llvm-project/llvm/lib/Support/Unix/Signals.inc:418:13
#4 0x00007fdd1d728ef0 (/usr/lib/libc.so.6+0x3def0)
#5 0x00007fdd1d78274c (/usr/lib/libc.so.6+0x9774c)
#6 0x00007fdd1d728dc0 raise (/usr/lib/libc.so.6+0x3ddc0)
#7 0x00007fdd1d71057a abort (/usr/lib/libc.so.6+0x2557a)
#8 0x00007fdd1d7104e3 __assert_perror_fail (/usr/lib/libc.so.6+0x254e3)
#9 0x000056424b6c7228 (anonymous namespace)::RISCV::finalizeRelax(int) const /home/jw/llvm-project/lld/ELF/Arch/RISCV.cpp:1013:29
#10 0x000056424b9b9ff0 (anonymous namespace)::Writer<llvm::object::ELFType<(llvm::endianness)1, false>>::finalizeAddressDependentContent() /home/jw/llvm-project/lld/ELF/Writer.cpp:1620:7
#11 0x000056424b9a3bd4 (anonymous namespace)::Writer<llvm::object::ELFType<(llvm::endianness)1, false>>::finalizeSections() /home/jw/llvm-project/lld/ELF/Writer.cpp:2153:15
#12 0x000056424b99f263 (anonymous namespace)::Writer<llvm::object::ELFType<(llvm::endianness)1, false>>::run() /home/jw/llvm-project/lld/ELF/Writer.cpp:324:19
#13 0x000056424b9e4188 void lld::elf::writeResult<llvm::object::ELFType<(llvm::endianness)1, false>>(lld::elf::Ctx&) /home/jw/llvm-project/lld/ELF/Writer.cpp:100:3
#14 0x000056424b6583a5 void lld::elf::LinkerDriver::link<llvm::object::ELFType<(llvm::endianness)1, false>>(llvm::opt::InputArgList&) /home/jw/llvm-project/lld/ELF/Driver.cpp:3497:1
#15 0x000056424b6305bc lld::elf::LinkerDriver::linkerMain(llvm::ArrayRef<char const*>) /home/jw/llvm-project/lld/ELF/Driver.cpp:729:5
#16 0x000056424b62b22f lld::elf::link(llvm::ArrayRef<char const*>, llvm::raw_ostream&, llvm::raw_ostream&, bool, bool) /home/jw/llvm-project/lld/ELF/Driver.cpp:142:18
#17 0x000056424b40d05a lld::unsafeLldMain(llvm::ArrayRef<char const*>, llvm::raw_ostream&, llvm::raw_ostream&, llvm::ArrayRef<lld::DriverDef>, bool) /home/jw/llvm-project/lld/Common/DriverDispatcher.cpp:163:11
#18 0x000056424b2e1570 lld_main(int, char**, llvm::ToolContext const&) /home/jw/llvm-project/lld/tools/lld/lld.cpp:90:27
#19 0x000056424b2e4264 main /home/jw/llvm-project/build/tools/lld/tools/lld/lld-driver.cpp:17:18
#20 0x00007fdd1d7126b5 (/usr/lib/libc.so.6+0x276b5)
#21 0x00007fdd1d712769 __libc_start_main (/usr/lib/libc.so.6+0x27769)
#22 0x000056424b2e1325 _start (/home/jw/toolchain/bin/ld.lld+0x4f31325)
clang: error: unable to execute command: Aborted (core dumped)
clang: error: linker command failed due to signal (use -v to see invocation)
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs