<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/88061>88061</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[LLD] Unreachable executed with `-fsplit-stack`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
lld
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
patrick-rivos
</td>
</tr>
</table>
<pre>
Testcase:
```c
int strcmp();
int main(int a, char *b[]) { strcmp(b[1], ""); }
```
Backtrace:
```
Target doesn't support split stacks.
UNREACHABLE executed at /scratch/tc-testing/tc-apr-4/llvm/lld/ELF/Target.cpp:144!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
#0 0x000057fbb776f630 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/ld.lld+0x6a7630)
#1 0x000057fbb776ca3f llvm::sys::RunSignalHandlers() (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/ld.lld+0x6a4a3f)
#2 0x000057fbb776cb95 SignalHandler(int) Signals.cpp:0:0
#3 0x000073eaf8a42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x000073eaf8a969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x000073eaf8a969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x000073eaf8a969fc pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x000073eaf8a42476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
#8 0x000073eaf8a287f3 abort ./stdlib/abort.c:81:7
#9 0x000057fbb770890e (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/ld.lld+0x64090e)
#10 0x000057fbb79f5672 (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/ld.lld+0x92d672)
#11 0x000057fbb7944ce3 void lld::elf::InputSectionBase::adjustSplitStackFunctionPrologues<llvm::object::ELFType<(llvm::endianness)1, true>>(unsigned char*, unsigned char*) (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/ld.lld+0x87cce3)
#12 0x000057fbb7945145 void lld::elf::InputSectionBase::relocate<llvm::object::ELFType<(llvm::endianness)1, true>>(unsigned char*, unsigned char*) (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/ld.lld+0x87d145)
#13 0x000057fbb796cc4c std::_Function_handler<void (), void lld::elf::OutputSection::writeTo<llvm::object::ELFType<(llvm::endianness)1, true>>(unsigned char*, llvm::parallel::TaskGroup&)::'lambda1'()>::_M_invoke(std::_Any_data const&) (/scratch/tc-testing/tc-apr-4/build-rv64gcv/build-llvm-linux/bin/ld.lld+0x8a4c4c)
#14 0x000057fbba3d9eaa std::_Function_handler<void (), llvm::parallel::TaskGroup::spawn(std::function<void ()>, bool)::'lambda'()>::_M_invoke(std::_Any_data const&) Parallel.cpp:0:0
#15 0x000057fbba3da0c8 llvm::parallel::detail::(anonymous namespace)::ThreadPoolExecutor::work(llvm::ThreadPoolStrategy, unsigned int) Parallel.cpp:0:0
#16 0x000073eaf8edc253 (/lib/x86_64-linux-gnu/libstdc++.so.6+0xdc253)
#17 0x000073eaf8a94ac3 start_thread ./nptl/pthread_create.c:442:8
#18 0x000073eaf8b26850 ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:83:0
clang: error: unable to execute command: Aborted (core dumped)
clang: error: linker command failed due to signal (use -v to see invocation)
```
Currently targets that don't support split stacks panic and ask the user to report a bug. I think this should be downgraded to a simple "ld.lld: error". I'll send a PR shortly.
Godbolt: https://godbolt.org/z/zv63a9s4x
Found via fuzzer
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWF9z4jgS_zTiRRXKlvz3gQcgsDtVubvUJPtMtSUBWoTkkmQmzKe_kuwETDJzs3eVe9gqSCxZ-qn7163-Azgnd1qIGcoXKL-fQOf3xs5a8Fayw52VJ-MmjeHn2bNwnoETiM5Rco-SOSqS_sP6sdQeO2_ZsUWkQqRGdHF5cQSpEanCIyCyxGwPFiMyb_pzEakxKheX_WE-jS-WGBESPwERo_L-5vhhGP8ugB28BfaBlP3wGexOeMyNcBqR0mPXta2xHrtWySA_sIOb9mv_-OfX1Xz5-3zxsMLiRbDOC47BY0TWjlnwbI_I2rM7L5yXetcPoLV3GSJrpU7H-I8jsl49rBFZ92dPWdsiOk-zDJG0P-jxYTV_WmHXNUfpMeCm22Erolje4L33rQv6kACyk37fNVNmjteHnI53rTV_CuYRWUvnOuEQWWPQHEvNVMcF9nuBmQW3x80rSYOeGBGa4OQlSZIkL7dNU5bFtqAJjvB0jujcnV3_8Gil9k-BpedIM6kuiyx82xjnrYAjIkWwnNQ-Wjb4wy9w1nRS8Tt7KrIdO72No3ZK6u4lTAU3Wis-jcQukpcCyoImwTnedElvdGFAtx_p8rXTT3KnQf0OmithXe-3nyxuBnQ7EpfcitvUOR4J1l-cIFo_7QYfSuL3DYgOQCUVsK0gIzlJBmWUbBBZv1TFpsh64e52uutfsKkz0yJKF7eMhMvGmHVRbxnebFq_twL45iCV2shjq8RRaA9eGo2niKx16xUi6-tlU4boPMsQnZfFBT__FXzthdWgfopcVuFSXbFRfIR8ve2ncFV9A1fekpuVBd65aI-I1D8isp7G0dlx0YZL2BongytYkE5EbFIiOr_ioBpDk6rcUgxNuP4RyvPefHGqly4NGl8Q6rELJVWdiM914yypE_HmKeHSjSNIvc2LknyqDDXhRUlGMoxvfp1lTFB8MpLjsCleeqG2_cMX3Xb-SbDgs4shr9E58D87559CMohRbt3puOLRGmV2IazS5SWUmCaG3Pi8elg_n1uB6HIUFIXmErQWziFSpyEoetsJRFfhQ6pOx_zLY0JEZB4WvJ_73JhUlYwJOiKS3BCZp1n-14i0QhkGXvwt-eJplo_4omO-CsYyhp0fqNq8etFmPwR0uoxkDoUSWf6I2391_kJuP_XNSi-ezf-B18vmFiwoJVQ_egZ3-M2aro1Zvu4nESkVHBsOKSLlawG4GvT_x0bqkzmEcuFCylyfNxw8YGa08z3W59oNMpaxkd2ya7sB5bUA-Et2-88c9TVHC9_0tfbbAfkGMdhiiRtj1Hti_ydeHwfp3lcOgYb8hgZIWPVD1bjwINWrcBVoo89H0zms4ShcG6vCQfbnmFUfjVGrWD8bO_iwsYeRd14WPnkLXuzOo4s9VD8_V2Kc8AVnJKe_UP44zxkiC0QWlzoo7h05yk36rzNgNHQL1m_60uGjaoJZAV4MhQ8JefsCOE76DSmqPIkYR-nY-yqi07GIcGd3imL3Lt5rhMiaKaMFnT6FM-iFFqZA7xCdY2Ft5B53GholQlsxdDSYmeMRdHAePA8FhojOyIwVmHfHVvA3Ht6jKakPwr5C4C1IJTjmXTxgqI1CcHEC353inBA4uCyLpeKF4Y96uWVnrdBenbGPjZPDfg-hdftx44Zb0JLFtgfcIbY8nRM2nDz0U7G5muIv2O-lDiukw25vOsVxIzA33_TOAhc8bAHsYmkbGtAhjLwpT8gUfwlXU2EnwnH48WsAsl6dp9da_GZ4Y1SIzbeNXP9iamwIbd_D91RQqF32cr1_bTrN8UkC3nbfvws74TPKa1rDRMzSMiVFWpRpOtnPEuA0zQsh0oJvGRUVT4DzqqZpU3LCYSJnJCFZkiUVIXmap9OScpE3WcrTqskJa1CWiCNINQ33Msg1iZ3krKqSIp0oaIRy8XcCQmJIJSi_n9hZDLpNt3MoS5R03l32e-lV_Gnh4eEe5ff4D20FsH10wbeO-pv0e4yK5G4bTXkXTYmKZNJZNfvvm98o9b8DAAD__3mHH-s">