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

    <tr>
        <th>Summary</th>
        <td>
            llvm-ar fails to handle long paths on Windows
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    It appears that `llvm-ar.exe` fails to accept [long paths](https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation) on Windows. For instance, `clang` can output to a long path without any trouble:

```python
#!/usr/bin/env python
from pathlib import Path
tmp = Path('/'.join('a'*32 for j in range(16)))
tmp.mkdir(True, True)
Path('hi.c').write_text('int main() { return 0; }')

import subprocess
subprocess.run(['clang', '-o', tmp / 'out.o', 'hi.c'])
```

whereas asking `ar` to write an archive to a long path fails:
```python
#!/usr/bin/env python
from pathlib import Path
tmp = Path('/'.join('a'*32 for j in range(16)))
tmp.mkdir(True, True)
Path('hi.c').write_text('int main() { return 0; }')

import subprocess
subprocess.run(['llvm-ar', 'rc', tmp / 'out.a', 'hi.c'])
```

```
$ python test.py
Traceback (most recent call last):
  File "C:\msys64\home\ben\ghc-2\test2.py", line 4, in <module>
    tmp.mkdir(True, True)
  File "C:/msys64/mingw64/lib/python3.9/pathlib.py", line 1325, in mkdir
    self._accessor.mkdir(self, mode)
FileExistsError: [WinError 183] Cannot create a file when that file already exists: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztVkGP4yoM_jXpxWqUkKZpDznstFPp3d5hpT2uHEIaZghEQKbTf_8MSaez1Uqrld5xqgiMMfZnPnBpTHut__GA4yjQOvA9eki2mVJvwxptKt4FjaBDqWjSAHIuRrIon5TRZxjR9y4pjwnb9d6PLim-JexEX2u4SwfJrXGm8yk3AymFXk-O-ovUrbksUsGo76QS0pAw4LscpmEdFOvgfa3kID16aXTC9mA0_JhXp3AyFqR2HjUXCTsE2FyhPgfAHDWYyY-Tj6jhAy1cpO9pBlBfwVszNUoE1NkxyW7tNpu_8UqmelGyImE5IZycpbaROib0Bp-NOmuGGEXJBuQwGuvhXxrOs34YISmOs4btElbFvarSFxO8BQVG5beCQUfJvVB6YCkjSm-Xbyn_5bu5S4fXVhKc3Xc7xS2Y-8XgHqeXKY-e9-nFSi9-evHu5ympPQy4xN9DUj2BFX6yGrKkeKLxcV74eYOWzNzUjNZw4dysvo9TO0WH5RMtnjkJTogiVq3NIsftYKegIz5Scze5wQ3nav_AyWccl15YgQ7QvUqil2bRBvKJ8ZgmcQxoeS_fxOMpiAf6zvsX4_8n40vxuBNq-e85x7_n_FHJNgsf4IXz6Xid9d8tctEgfyXfu8E4TzlyQZlzVAoUOh_C3PgHOFG9IVN2CLryMLir225I6M0gqGuEpvbc8zWjPkRiIRRjAb2SWsAmSEReUhwG006hqDzfnAP8kbkHBFQIZwQk0NG-RImOGLVztkW6D_J88B6g5AUrFzRzzA8YTqgu_RlquHPGfiAK6rCAgN8RBTzP79J592ytsYQqVH0qvnEI-a4gruCAWhvaVbqH4b5BqNtA91LP_yRxiIpm2yuI6C06onP_hx9l92XyZXIzqR5u_6qti3Zf7HHlpVeiXkrO_aHSo27p7N1fKZ-eDqvJqvrX98qZXgVTs7xTgrOlW1N9exGcqsVJOjeJ8GgpN2W5X_X1VlRNmzGsirJhfNNuqk2TlWLX7coSeZGvFDZCuToUxfK4kjXLGMvocuZVTsU9zUST5byt8rbrBC8x2WSCCrNKQ-DU2PPKznk109nRpArX5z6JzsmzFuLmHycqDLZuzjiglasIt45Y_wNnghnm">