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

    <tr>
        <th>Summary</th>
        <td>
            [lld] ld64.lld does not respect allowable-client field in .tbds
        </td>
    </tr>

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

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

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

<pre>
    Apple's linker rejects linking to libraries with allowable client lists:

```
$ cc -framework vecLib -o test test.m         
ld: cannot link directly with 'vecLib' because product being built is not an allowed client of it
clang: error: linker command failed with exit code 1 (use -v to see invocation)
```

After https://github.com/llvm/llvm-project/pull/97639, not only does ld64.lld not reject linking to vecLib.framework, it links to the library despite the binary not being an allowed client:
```
$ cc -framework vecLib -fuse-ld=lld -Bllvm-build/Release+Asserts/bin -o test test.m
$ nm -m test | grep vecLib 
                 (undefined) external _vvdiv (from vecLib)
$ grep ' clients:' $(xcrun --show-sdk-path)/System/Library/Frameworks/Accelerate.framework/Versions/Current/Frameworks/vecLib.framework/vecLib.tbd
 clients:         [ Accelerate ]
    clients:         [ vecLib ]
 clients:         [ vecLib ]
    clients:         [ vecLib ]
 clients:         [ vecLib ]
    clients:         [ Sparse, vecLib ]
```

Generating binaries that don't respect the allowable client list means applications will break if / when Apple moves symbols between libraries.


test.m:
```
#include <stdio.h>
#include <vecLib/vForce.h>

int main(int argc, char**argv) {
 fprintf(stderr, "%p\n", &vvdiv);
    return 0;
}
```

_Originally posted by @bdash in https://github.com/llvm/llvm-project/issues/97639#issuecomment-2445467330_
 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8Vk9v6zYM_zTKhXDg0E6cHHJI0nmXBwzYA3YtZImOtcqSIclJ8-0HyUndtX3D2w4zCtWmKJL6_fgn3Ht1NkR7tj6y9dOCj6Gzbt9I7rtFY-VtfxgGTQwrD1qZF3Lg6E8SYfpU5gzBglaN406Rh6sKHXCt7ZU3mkBoRSaAVj54VhxY_sTyx7rJ73_TJ5YgBGSt4z1drXuBC4lvqoHMQiAf0rLs4fFMp7RkxQEEN8aGFBBI5UgEfZsiYVhNZhhW0JDgoycYnJWjCNBQDL8ZlQ6gPEQT3EzBk3yEbltQYXImNDfn6I-csy6-3BERtu-5kdBypUlOnulVBRBWEqyA4Tb6zS4RK08Eylys4EFZw3D3NRxpPbSBHHQhDAk9rBnWZxW6sVkK2zOstb48_mWDs5EYhvUwas2w3lWbYsfwlG5mjb6BtORBy0251Fom8UTmey4nvJZvPEQDatLwcT90dOf7BpL8oAIlWaNMFEWjE7CfsJwT4Gepb0dPWeT4KcabHdM9I2GSYf07aeKeGB4P3pMLnmHdKPMhYWYXpoesn7ZYdYKzo-HhaFKCj0_kzUhqlSHJcAf0GsgZruH5cpHqEvdbZ3t4pNhudpasx6Sbrj7RVwHDkuH2VbjRQJb5zl4zL1-ygYcuHsf6-80HipR-myBmWNcPWOIFD0KQJscDvWeo_oOcV9ZEjdPoXAT7w8HPtD5EoZH3-8-xzhCsjzD7BLZ-mrH6gfoD0zfVn9X7X01-H7iLyXP6dOjLSvyVTEQgNYyY6LHXhY4HkLGGq1hIfoiVFEvhy_4HPXHjgQ-DVlPtx26pNTSO-AuoFhjWcO3IQGq50NsLefC3vrHaQ0PhSmTmVrv8WzNN6z3jf1hmhTJCj5KAFScfpLLLjhW_fLX7yOj6Ulsn6L1eWpUJ0HNlGG7jK3dnEaEUHXcMDwwP3J0vsWRYdbxT0Q5OmdAy3PogybmozxAZrge2Ppn0GiWbVFuxGorjzKKjMDoD-ZuQVf9E1_NvTp2V4VrfYLA-kITmBqzM02ADZf59U1Xej-TntlokQWz9ZEKGZbkuN1VR5M_3oBdyX8hdseML2q-qIscSd-vtotvzVraIbb7brNpNJbZ8vSkbvhF5m2_bKseF2mOO5SrHHRY5FtuloJbLHNsCCyH4ds3KnHqu9DKGuLTuvEix7FerclVuFpo3pH2a6Ig69kqMo93t7-3z7FmZp5E8Gwgq6PQjIOqvn-YhkUbGNCmmBH9L7uye3K0iLSOksZP4xej0_r-De7_CZY9_BQAA__86hKg0">