<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/97845>97845</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[LLD][ELF/Mach-O] Thin archives might reference objects by absolute paths in repro tarballs
</td>
</tr>
<tr>
<th>Labels</th>
<td>
lld:MachO,
lld:ELF
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
BertalanD
</td>
</tr>
</table>
<pre>
Thin archives' contents are copied verbatim into the repro tarballs; absolute paths to members don't get changed to be relative to the tarball's root.
I've only come across this problem because I was writing a test, and `%t/foo.o` expanded to an absolute path. Not sure if this could cause an issue in realistic cases.
This is a small test for it; modified from `lld/test/MachO/reproduce-thin-archives.s` (`ld.lld` is likely similarly affected by looking at the code):
```asm
# REQUIRES: x86
# RUN: rm -rf %t.dir; mkdir -p %t.dir
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-macos %s -o %t.dir/foo.o
# RUN: llvm-ar rcsT %t.dir/foo.a %t.dir/foo.o
# RUN: cd %t.dir
# RUN: %lld foo.a -o /dev/null --reproduce repro.tar
## Remove the original object to make sure we are not using it.
# RUN: rm foo.o
# RUN: tar xf repro.tar
# RUN: cd repro
# RUN: %lld @response.txt
.globl _main
_main:
nop
```
Running it gives:
```console
ld64.lld: error: /Users/dani/Source/llvm-project/build/tools/lld/test/MachO/Output/reproduce-thin-archives.s.tmp.dir/foo.a: could not get the member defining symbol _main: '/Users/dani/Source/llvm-project/build/tools/lld/test/MachO/Output/reproduce-thin-archives.s.tmp.dir/foo.o': No such file or directory
```
When inspecting the archive in the repro file, indeed, the member is referred to by an absolute path:
```console
$ llvm-ar t build/tools/lld/test/MachO/Output/reproduce-thin-archives.s.tmp.dir/repro/Users/dani/Source/llvm-project/build/tools/lld/test/MachO/Output/reproduce-thin-archives.s.tmp.dir/foo.a
/Users/dani/Source/llvm-project/build/tools/lld/test/MachO/Output/reproduce-thin-archives.s.tmp.dir/foo.o
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEVktv2zgQ_jX0ZSBBpiU_Dj4kdQ0U6LbYPrDHYkSNLDYURyApJ_73C1JO4ry6lwUCGIJMaobf982Dg97rgyXaiupaVLsZjqFjt70mF9Cg3c1qbk7bH522gE51-kheyBUotoFs8ICOQPGgqYEjuRqD7kHbwBA6AkeDYwjoajTGi8U1YO3ZjIFgwNB5CAw99TU5Dw1bIVcBDhRAdWgP1MTtOnoxGPSR4Oz17E_IlQfHHHJR7ERxNT0_Cbk6ErA1J1DcE6By7D2ETnsYHNeGeqhJ4egJPsEterh1Omh7AIRAPgj5AdA2IJaFkFUQct8y5yyWBdDdgLaZcKF9yiWHLxzAj45At9NpikfTwHQSWtDejwTagiM02getQKEn_wT-j2ioPSD4Ho1JiKBlBzpE-XpudBu1bh33EaIxjZD7Cff-L1TdVyH3SfZmVJSFTtvsPm65jySEXEe7Jo-myyIeZvQNmRN43WuDzpwA25ZUoAbqExjmm6ROSOIrbkjIjVicAUeZ0g99f16RC_j28e-fn759_C4WV3C3Xl4yTNs_v8Qd10PmWogy5412ieBNox1kw-PicyNjjn3WK8habSicBhKLHde_IQtODyb-u1svfy3LDIfBUNajYh-9ecj40et9VF_1jg6c8j-ef41vmT93opq34QtZGdPA5C8h2jd0FHJvR2Mgyx5iNxVPHvDRR3JDPcdS6AjY6YO2aIDr36RCKia8oSkJbymVpuUAo4_x0w918iQAf-IR0MFd-wqQC6Jp8y2Woiwc-YGtpzzchctj8oPh2sCvHrWdVqbX-7wCy8OzDLs0_zZaO7GCQ-pJL_JRsfVsaFo1zbJMCb-4AnKO3QRy_9OT8zEEaLWQ--88OkVC7lMaDI6jrkLu61FPdcZsfNp-peq-jmEYw5_KLw_9cJlPScLUJGKYYuOLYZ0aIjTU6kTRn_qa75VKsFfvjZwjhsUVfGHwo-ogliKwg0Y7UoHd6dXI_dORBW39QCr120j2fERsi48XRnQX27C2DVET3y500R4cteTc-X44vWjF_5ELQpYPZR7g_xdoqoh3z60z1_dOlLdLeHrOmu2i2Sw2OKPtfCULWczlYjPrtstyuWyxqDZVPZ-3KNtFsaFVNV8jVRg_0VtZyLJYFdV8VRaLTU5YLEssN-tyvlwTrkVZUI_a5JFqzu4wS1fwdrNal9XMYE3Gp7FHyqk1nGlKIT88rH38vI8r1W7mtkmyejx4URbxBvePnoMOJs1Qnz_vRLUT1XUyTMplX0W1gycjFPT60IUpkckqOrdwn9L56YiUBobLMWo2OrPtQhhS05PxlIMO3VjnivtzYF_GN1GPgZ3YH7fy3wAAAP__1CYsdQ">