<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/60776>60776</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [bug] clang cannot link in mingw32 mode
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          YWtheGod
      </td>
    </tr>
</table>

<pre>
    test.c is a simple hello world program.
compile it with:
`clang -target i686-w64-windows-gnu -v test.c -o test.exe`
will get an error while linking:
```
 "D:/msys64/mingw32/bin/ld" -m i386pe -Bdynamic -o test.exe crt2.o D:/msys64/mingw32/lib/gcc/i686-w64-mingw32/12.2.0/crtbegin.o -LD:/msys64/mingw32/lib/gcc/i686-w64-mingw32/12.2.0 -LD:/msys64/mingw32/i686-w64-mingw32/lib -LD:/msys64/mingw32/i686-w64-mingw32/mingw/lib D:/msys64/tmp/test-ce9361.o -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt -lkernel32 D:/msys64/mingw32/lib/gcc/i686-w64-mingw32/12.2.0/crtend.o
D:/msys64/mingw32/bin/ld: cannot find crt2.o: No such file or directory
_clang: error: linker command failed with exit code 1 (use -v to see invocation)
```
I noticed that the crt2.o in link command don't have any path prefix.
while compiling in MINGW64 env with same clang.exe
`clang -target x86_64-w64-windows-gnu -v test.c -o test.exe`
the linking will success, here is the output of linking:
```
 "D:/msys64/mingw64/bin/ld" -m i386pep -Bdynamic -o test.exe D:/msys64/mingw64/lib/crt2.o D:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/12.2.0/crtbegin.o -LD:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/12.2.0 -LD:/msys64/mingw64/x86_64-w64-mingw32/lib -LD:/msys64/mingw64/x86_64-w64-mingw32/mingw/lib -LD:/msys64/mingw64/lib D:/msys64/tmp/test-e84f82.o -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt -lkernel32 D:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/12.2.0/crtend.o
```
clang.exe targeting mingw64 will link the crt2.o with full path but won't when targeting mingw32
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUVsGO2zYQ_Rr6MpAgk7YsH3RIunAQoM016GlBkSOJDUUKJGXZf1-Q8jruwut2t70UMOSxyHkz1Lz3LO696gxiTbafyfZpxafQW1f__j30-MXKVWPluQ7oQy5AeeDg1TBqhB61tjBbpyWMznaODzkpnkjxSdhhVBpBBZhV6An7tNwnZSE0Nx1kgbsOA6iyKrO53GSzMtLOPuvMBNkRLtUyu0R4QlIWC8astIaYyw2gc9bB3MdaWpkfynS3tS6f9BMIpU9xkR4Gf_blJgbKdDOjhB4aZQg9aEkohWwAxapyRMg-y7Phg_pLIyBcoLmFt8G0agg9dEIQerge8OfymuY0Lwg9CBca7JTJLWS__ku4hwh3srRq3puSokvq68QwjPGKPmQC96xcxzPpSy5kuhNiuT5jHxesloYP-LIHTzHyR-ECZJrLIx9VyvORYymaPLoU_EBncLn3Qfwrwn8yQjQytwvH_gG_2CcQ3BgboFVGXrgU736z4CfRQxu5bB1I5VAE684L9HPSTdyYOB-DSHh0IOwwcCOh5UqjTHoDPKkAwkqENRBaTR6TqCx4RFDmaAUPyhpC93e18hWMDUqghNDzAKG_kl6ZVPZaVEaQXYCeHxG4OcPIQw-jw1adLl6wqHNxBGW6CPHb129fvpcbQHNc-vVxVumESer3veJUlc_RKd7lFrH3izNAcg4_CYHeE_oL9OgwGlrcY6cwTgFs-2EfSdFdHxnfMJK3YRb6PTKam20LS2-ezoes5j2ADzHu5j2wm7eTbg3nb7p-ZEhYbdqK_n8N6f2jvrGkV-y9agwWUUVZXIos8kjqvhF8kmc7ab0ou5kCzBfNzz2a1zCMrmTN5J7t-QrrdbkrN9W6ZNWqr2VTMs75vtk2uwb5uhFMVBvGWrmVct2wlappQVlB19v1jhZsl7Nq27Ky2ItSFIK1kmwKHLjSudbHIbeuWynvJ6zLYrcrV5o3qH16h6HU4AxpkVAaX2lcHXOyZuo82RRa-eB_ogQVdHr5aaaObJ8WI3qx6fRAlHk5HgxW4mpyuu5DGP0yrzgZFfqpyYUd4rD08eUrG539A0WI_yOxH0_oIfX7ZwAAAP__CWL0bQ">