<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/59127>59127</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
lld: binary created with static linking of openblas64 in ubuntu 22.04 results in crash.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
shivaramaarao
</td>
</tr>
</table>
<pre>
environment: ubuntu 22.04 (works fine with other ubuntu versions)
The openblas package used is : libopenblas64-pthread-dev
compiler: clang-16
testcase:
extern void dcopy_(long*, double*, long*, double*, long*);
double arr1[9][48];
double arr2[9][48];
int main()
{
long a1, a2, a3;
a1=18;
a2=1;
a3=1;
dcopy_(&a1,&arr1[0][0],&a2,&arr2[0][0],&a3);
}
compilation line (for fail): clang t.c /usr/lib/x86_64-linux-gnu/libopenblas64.a -fuse-ld=lld
./a.out
Program received signal SIGSEGV, Segmentation fault.
0x0000555555650166 in dcopy_ ()
(gdb) disas
Dump of assembler code for function dcopy_:
0x0000555555650140 <+0>: endbr64
0x0000555555650144 <+4>: mov (%rdi),%rdi
0x0000555555650147 <+7>: test %rdi,%rdi
0x000055555565014a <+10>: jle 0x5555556501b0 <dcopy_+112>
0x000055555565014c <+12>: mov (%rdx),%rdx
0x000055555565014f <+15>: test %rdx,%rdx
0x0000555555650152 <+18>: js 0x555555650190 <dcopy_+80>
0x0000555555650154 <+20>: mov (%r8),%r8
0x0000555555650157 <+23>: test %r8,%r8
0x000055555565015a <+26>: js 0x555555650170 <dcopy_+48>
0x000055555565015c <+28>: lea 0x188e34d(%rip),%rax # 0x555556ede4b0 <gotoblas>
0x0000555555650163 <+35>: mov (%rax),%rax
=> 0x0000555555650166 <+38>: jmp *0x348(%rax)
0x000055555565016c <+44>: nopl 0x0(%rax)
0x0000555555650170 <+48>: lea -0x1(%rdi),%rax
0x0000555555650174 <+52>: imul %r8,%rax
0x0000555555650178 <+56>: shl $0x3,%rax
0x000055555565017c <+60>: sub %rax,%rcx
0x000055555565017f <+63>: lea 0x188e32a(%rip),%rax # 0x555556ede4b0 <gotoblas>
0x0000555555650186 <+70>: mov (%rax),%rax
0x0000555555650189 <+73>: jmp *0x348(%rax)
0x000055555565018f <+79>: nop
0x0000555555650190 <+80>: lea -0x1(%rdi),%rax
0x0000555555650194 <+84>: mov (%r8),%r8
0x0000555555650197 <+87>: imul %rdx,%rax
0x000055555565019b <+91>: shl $0x3,%rax
0x000055555565019f <+95>: sub %rax,%rsi
0x00005555556501a2 <+98>: test %r8,%r8
0x00005555556501a5 <+101>: jns 0x55555565015c <dcopy_+28>
0x00005555556501a7 <+103>: jmp 0x555555650170 <dcopy_+48>
0x00005555556501a9 <+105>: nopl 0x0(%rax)
0x00005555556501b0 <+112>: ret
End of assembler dump.
Analysis:
there are few initialization routines such as **gotoblas_init** is not being called when lld is used. These functions are called when ld is used.
with ld, the linking and execution works fine and the issue is only when lld is used.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy1V1tzqzYQ_jX4RWMGxP3BD0mTnOlbZ9Lpa0aADEpkySOB4_TXdyUQxrFxTnNaJiMcafVpL5-W3VLWHxsqDkxJsaOi86I71Je96HqEsR_EyMP5u1RvGm2ZoOiddS2SXUuVkzpQpZkU2sOFFzx4wd2fLUVyT0XJiUZ7Ur2RhqJe0xoxjQw8Z6VbT-P1vmsVJfW6pgeEBoRK7vaMU2WEK05Esw7TYaWjuquIprAyTAwjPXZUCXSQrEZ1JfcfL6A1l6Lx8J2Hf0O17EtOx3--nC-86H7AHdYRUSr0kvvCSx7gFefmfSmCl0SGkYkO7QgToNnkKi8bRdD4GB0QCY06BNsxmmCcDCxHD2F-OY_N_OV0dHV6cpOHU3ugeQ92BoMR9jXM42kdX12P5k7zsoe53UMwSQccgcgDheDMrVRoSxi320AlG2TU-RUsPvVawQgkgfGYpy_AEdjXH9eN6IeFE3t8gtZb4Naa12Alh9Ge6YMc8WXfDf_-oWSjyA4pWlF2ACJq1gjC0fPvP54ff_xl_PxMG8P-Qc0t6XnnD3uDYwBPYp80CcI0RUyM3kNnscR5U4POBaqZJnqYfOh3eyS3iGhNd8AThSpZU2Tt70VlTxsj4RgNsfl8ZhzAvQFHg8ujR-sweKioS5XGy5vicVM827STB_OyeieqZkZ7E0L7exEpG5GyGZK5iRZpgPkSg4wY4cyGV7g4VvYkV1pTHTnvwxAb8UXUyqHiE-onG48zG4_LSFuHlJyQ5jYev8ZIsMPIZzZq9NnG4tzGPLhlYuLCiIMlE_OThfkyjgsijq4amH-N4EKI05vmZefmxflN81wE8cxnnJIBNMxzGsX1aCfbnwwlR5fIPBy541Na03hgUCM7aVLErbPTaDw7SpZcS47zI8eLHkFqf7xESx3aPPpw_S0a5JEIPDFHXVTLuSSe3Vwh93yQ_SmMzGWM-NKta_DrlQRAlomdOQ4ms2vGdj3_xJ1bELmDmJFHt3zwTgze-QkM55h0dhV0X6JRDeLuaHUDw93zNFriGyb_E99yx5Bs8Spf49s1pMIhRb_Gtdy5IyvOuLa4oXDEyoP_gFiFI1Ye_1JyK1xyy7OrBJ2y9y1dyhGjCL_N0MK5s0huM1QvfymJ-4oU-TcTNUmmb-3JlFehPyfqIfdOiRrfTNQkm0BPnBsp9-3sT4oJ9OSwf5nqSsfIcFYEKDqWfo-iPq-_aqjI_Hl9egeV4IdmeirATHNjCnoo0-g7FHusY4Szv4fSUEFRCUWshqhWLcAi2zHcuev_YsSHKdPtCNmhkjKobSvCORSe7y2FKpjbVsi0RD6CbknTqRjU9twz4ZPsXGvbh0G5C6Ur6GsK6zdzDAFz6ZFWvVV21reZBSPItO7NiKTgH5fqzI9Y0Q181IoQ50merOpNVBdRQVYd6zjdmFIbPF0yQdQHqqCD64zGRittquhqUgm8f6rXTe181l0qqqHW1ma-UkS3_qpXfNN23d4GBD_BXwOofelDI2HKf35wr_VeyVdagb-frFnQgj4loG-2ajdBmmVVVtQFKbdJGkVBmW5LnG6LsMqjKq5WnJSU6w30MR7GwgTaQMBv6GpWbIMDjIFQGMroIsp8SitAi2iZkSDAdezFAYVmjvtGD1-qZqU2VqWybzQscqY7fVoE-kHHQak9DvBJ37VSbXTLDgQaEwKDXFkFNtaAfwAz4QLW">