<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/120552>120552</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
lld: syntax error in linker script triggers a sef-fault
</td>
</tr>
<tr>
<th>Labels</th>
<td>
lld
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
nickclifton
</td>
</tr>
</table>
<pre>
I was experimenting with a change to a linker script when I encountered a segmentation fault triggered by a syntax error:
ld.lld: error: kernel.ld:3: ( expected, but got 0
>>> .data : { LONG 0; }
>>> ^
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: ld.lld -melf_i386 -static -o lld.elf --emit-relocs -Tkernel.ld tst.o
#0 0x00001465ce217b7a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/lib64/libLLVM.so.19.1+0x217b7a)
#1 0x00001465ce214b24 llvm::sys::RunSignalHandlers() (/lib64/libLLVM.so.19.1+0x214b24)
#2 0x00001465ce2182eb (/lib64/libLLVM.so.19.1+0x2182eb)
#3 0x00001465cda25dd0 __restore_rt (/lib64/libc.so.6+0x19dd0)
#4 0x00001465d61a96a0 (/lib64/liblldELF.so.19.1+0x1a96a0)
#5 0x00001465d61a71e4 (/lib64/liblldELF.so.19.1+0x1a71e4)
#6 0x00001465d618dfc5 lld::elf::readLinkerScript(llvm::MemoryBufferRef) (/lib64/liblldELF.so.19.1+0x18dfc5)
#7 0x00001465d6068ce6 lld::elf::LinkerDriver::createFiles(llvm::opt::InputArgList&) (/lib64/liblldELF.so.19.1+0x68ce6)
#8 0x00001465d605cc73 lld::elf::LinkerDriver::linkerMain(llvm::ArrayRef<char const*>) (/lib64/liblldELF.so.19.1+0x5cc73)
#9 0x00001465d605c0da lld::elf::link(llvm::ArrayRef<char const*>, llvm::raw_ostream&, llvm::raw_ostream&, bool, bool) (/lib64/liblldELF.so.19.1+0x5c0da)
#10 0x00001465d5d22c5e lld::unsafeLldMain(llvm::ArrayRef<char const*>, llvm::raw_ostream&, llvm::raw_ostream&, llvm::ArrayRef<lld::DriverDef>, bool) (/lib64/liblldCommon.so.19.1+0x3c5e)
#11 0x0000556d45ff8937 lld_main(int, char**, llvm::ToolContext const&) (/usr/bin/lld+0x1937)
#12 0x0000556d45ff8f32 main (/usr/bin/lld+0x1f32)
#13 0x00001465cda0f248 __libc_start_call_main (/lib64/libc.so.6+0x3248)
#14 0x00001465cda0f30b __libc_start_main@GLIBC_2.2.5 (/lib64/libc.so.6+0x330b)
#15 0x0000556d45ff86c5 _start (/usr/bin/lld+0x16c5)
Segmentation fault (core dumped)
This was with LLD 19.1.5 running on Fedora 41.
The full linker script looks like this:
SECTIONS
{
.data : { LONG 0; }
TTT = .;
_LGROUP = .;
. = SIZEOF_HEADERS;
. = ALIGN(0x100);
.text : {
*(TEXT)
. = ALIGN(0x100);
}
}
Obviously I should have written "LONG (0)" instead of "LONG 0", but I figured that you might wish to fix the seg-fault anyway.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJycV11v4roW_TXmZYvIcT4IDzzQFuYgMdPRwL26ui_IsZ3gW2NXttOWf39lpzTAVD2cQZGC_LH22ts7KyvUOdlqIWaouEPFw4h2fm_sTEv2xJRsvNGj2vDjbAWv1IF4exZWHoT2UrfwKv0eKLA91a0Ab4CCkvpJWHDMymcPr3uhYQVCM9NpL6zgQMGJNgBQL42GhnbKg7eybeN0fQwrjtrTNxDWGouyOcLhUjxRiqNs_jEOT8JqoZI4moUBRKpIkXnBEbmHuvPQGg84QGSL_oLwSzj1FOKeyR2sH398A4yyO0CTh4u1qFggPP-5Xsw3C3BdfZAeKNRdC1Y8G-tD1nvvn13gSZaILFvp912dMHNAZKnUy-k2frbmf4J5RJbSuU44RJZANQepmeq4AL8XwCx1e6gpe_KWMpEgPN94yp6Ad4fnvhQ4QXj605rW0gNQ23ahmCE89BWC8UGoZiezqoSxC2VmMDagFE-EamA8Fgfpx1YowxyMtx81BO98YhAOVcww4DeMMU7zsmCCpJN6QiEmk81RNndH1__5aaX2keE28EWkGhZZ-rozzltBD4iU4Tik9ohMwymFmsi6zPv7ev3v74kzSTpNUkTu8FsfEJHpO530ik5ek_wzOr86vZGtpuovqrkS1sVQt0UMmENEchWxIqK-CSYsHGCycxhOScE5ht3OCueNFTvrf8dkAbCMaOmUczyA5WdgvEzptKT49_1K8cV6ecGqXzoAFVdAk1TkNwKFpQNQeQlU8YYV0D-lKJsL1bx3gqB8HYVhE3Xhok2-i4Oxx7uuaYT9JZpPj-szKjHYQGVyQQWXFRPlJ1R6Gg9WvgjbjzArqBdLqcITecbLPPv-z0o_d35u27V0PjbybQQjg4FfdcmvYGyS3cSvV9TvVOoLenNr6THUK7tne2qBGR3oRem6kWHkMDCcXjPEnH7CMPC5nck9fCUIX83VxqjhfmtGmL_LRlCNcxXjBSeEFWLIqNOONmKt-D-r7Z9n9GmADzr9mT-EwcXf5X1vDgejL1LPWCGGzE-CWRQlz4umqabZJGS-O_S5RiW-D29uG_IK1zm_rTHq3mgv3vwp-bO-75xFZFkHoGWg30tVNhnCk-vwTUYghP4KocnIgHAlnLgheQW7XdDHnfPU-h2jSu3OMD-X0Izk1YCaX6NmuL5EjfXJ8bf16u5-RxKSFF_DZ7ge4IvrtEtWQA_8VeLlScc2vzsjRCpmrIjv_-Bppr0Z2u6li4YsWrD1-gFCIyQF2E7rYM2MhqXgxlLI0-S0R0DTKXXl0ZQxTw6UfAoORLoPv7VZ3G9Xjz82QR2CSYr3vzNOYcV2uwWUPUCCstOm3frbr8d__TwfPsHFsc3qv4vH5e6vxfxh8Wsz7Otn5-vVtx-IVPgtxfEt1s8nsT3fmUTEabhCL1fbxX-2p2KF0S-BAD7Yv9s_PH-sX6TpnDrCCtzedIrDnr4IeLXSexF6jsTcA1pAIgSkdl5QDqb5mMWIkJMPXUEj2y54XL-nHo6mg4Ns9x5epdsHG9nIt-gBnWjH_eFTfXylx3B8Iz7L-DSb0pGYpZMsL3E5KavRflbQijQZb7JmyuuaVnUlKkbSCpe0SjmZjuSMYJKnJJ2maUryKmGs4ZmoJiXNs5qWBOVYHKhUSXj8E2PbUbSns5TgoiAjRWuhXPw6ICS2LAmfCXYWPW3dtQ7lWEnn3QDgpVdi9u7Wz808SH3Vfe_O38XvgqbPe9RZNftzU_1O_GVG_h8AAP__BAG9Sg">