<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">