<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJzFVUuPozgQ_jXOpQQCMzRwyCGdTPYyu33YvUfGGPC0sSPbdDr_fsuGnnRGo559SRtFEL-qvkeV05ruuv0iPKGVg4k9C2DQXZVsCd2DnNggtQA_SgetkHrAVXd1XkzLJiC0vm1iHshD1huDT7iYWXVgtLqCeJXOg9S4RUCepxm8COuk0WD6OPctYTv728RyzmEMyLM0L8EbA0kCX2eMpo2HkInWhDYhtkQKTUqyA8l26_MhW7_LkJbAWTyVcvh7nyXCi5Hdu6SkeiTV4V1wxVCgxI3Mig4SEzMtTJacyTQxbtxrstJPJqlJcYjkfgw5Pr9z52zNYNm06K2kfnbABiZ1kNiTYvcXJGAvTCoEtMyeTsx7K1F7cTpFbnXcwFqppL_iMMKOBaG9Nd3MRRdwo5Oow_KFe3FI8bgExxMIHHneNIvzALIP1XM6tbNUXurTmlOJt4SwJNjjtt2aZz0KP0h0Z4WZUbLjgFmPbch9XLx5430z5iNLIJFY69ZgpRH6CdO9cjvrYLC5JK57Ts7Mj4FU0s9OJCpoorDmP7ASh6e1P7CjrOiFFRrVBIYmwkWwZyx6L6xm6udO6gnhA0uRLOq6h8GKM8Tw32S6L2Jaz7oTPTZrF2DfpYsHw5bemmmRt_mAyG_mAmqty87EnnVsEnCRfgTlzc_R_68WJX3EeMCLTf93gv5DLd8A1J9fvWXcYznEg6P3ZxeEpMcg0jy4lI-4IOcpNXbAuXOQbZ3Cn9K5WWCfHjvhUUVSHGXsU1pnDS0ILfgDzGfnrcDrg3ympM5IU5A9JbssXvET6wT8YsygBOxDXHwxzewVuGVuDDcxevH0-3ofGwtGdcIC65E41hP42aIWYd-XP55SpL3ptkXXFA3bsNmPxm615GYzW7W9Zzdg3cxtyk3godTL2yvB2-6r4P49u5JWVb0Zt33OmzzneVOLqqFN3vddIeqy7HlfZbzpN3ibCOW2pHwklKpg_u5XxscnHJHysPn3GOSWZjTPaV7lZVFlWdrmJc-aMmvrDrv6QZBPmZhCQYc4wbSN3caQwU1cVOEP7rbInJODFiJCRoReehUHATw9ovY4G6TFnhMOm6by4Obz2Vi_dLO7Tq1RbhNxbiPIPwGWMFeD>52778</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [lld/mac] LTO doesn't support weak symbols
        </td>
    </tr>

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

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

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

<pre>
    Let's make a dylib, imagine this being a system dylib (imagine that `foo` would only exist in the 11.0 version of the dylib, but the dylib exists on 10.15 too -- just not foo() in it).

```
% cat foo.c                                               
void foo() {}
% clang -shared -o foo.dylib foo.c -mmacosx-version-min=10.15
```

Let's make a program that links against it:

```
% cat avail.c 
__attribute__((availability(macos, introduced=11.0))) void foo();
int main() {
  if (__builtin_available(macos 11.0, *))
    foo();
}
% out/gn/bin/clang avail.c foo.dylib -mmacosx-version-min=10.15 -isysroot $(xcrun -show-sdk-path) -fuse-ld=lld 
```

`_foo` is referenced as a weak external:

```
% nm -m a.out | grep _foo
                 (undefined) weak external _foo (from foo)
```

Now let's do the same with lto:

```
% out/gn/bin/clang avail.c foo.dylib -mmacosx-version-min=10.15 -isysroot $(xcrun -show-sdk-path) -fuse-ld=lld -flto=thin
% nm -m a.out | grep _foo
                 (undefined) external _foo (from foo)
```


(Extracted from https://bugs.chromium.org/p/chromium/issues/detail?id=1280923#c6 upstream – this made Google Chrome Canary crash on macOS 10.15 or older after we turned on LTO.)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzFVU2P4zYM_TXKhbAhy_lwDjlkkk0v286hvQeyJdvakaVAkieTf19K9mwmxWK2LQo0COxIosjHx0emtuK2-yoDYRsPA3-RwEHctKoJO4AaeKeMhNArD7VUpsNTf_NBDpMREFbdjXgAsqattfiEqx21AGv0DeSb8gGUQRMJRZFTeJXOK2vAtmnve8B6DPeN6Z5HH1DQvFhBsBayDL6N6M3YADESqwjbRt8KU9jmhB4J3c_PNZ2_05KtoOHpVt7AP_tMHl6tEh-Cks0T2Rw_ONccCcp8z50UkNkUacpkipkNA2-sf8vm9LNBGVIeU3I_hpyef6nOxdnO8WHiWyvz4oF3XJlIcSDl_m9QwF-50gho2j2feQhOIffyfE65VcmA10qrcMNlgp0EYYKzYmykiLixksjD9IVHckj5NDnHGwgc87xzlvYBVBvVcz7Xo9JBmfMcU8v3gDAFOKDZfo4zX4UfBHoohR2RslOHUU91jH2aavOe970wn5UEMoVadxaVRtgSw701bjSxwPaaefGSXXjoY1JZO3qZ6ciJRs1_Ukpcnuf-wI5yspVOGmQTOBYRrpK_oOiDdIbrn1fSDAgfeI7JIq8H6Jy8QHL_naZHEbNqNEK22Kwiwn4Ily5Gk9bZYaJ3-0kiv9kr6FmXwqae9XyQcFWhBx3sz9H_ryXK2oTxiIPN_HeE_ksu3wFUX96C401AOaSLfQgXH4lkp0jS2Pm86fFAjUNuXYd7l0jbvIU_lfejxD49CRmQRVKeVOpTVtEtKwkrmzWMFx-cxPFBvjBSUbItyYGRPU0jfuBCwi_WdlrCIfrFFzfc3aBx3PdxEmMtnn-f57F1YLWQDniLiaOeIIwOuYh2X_94zjHthdiVYltu-SKooOWOrJ6Qf4SIfsjqGM1QP9KjADYB_Hi5WBcmZfrbUFvtF6PTu0cqOhTZWOeNjUlr_fr-ynA0fpNN-EjFim021aLfSbEqxZrSNS1ExRsm6XJJN4xXLW3Ycs0WOHqk9hEgYSxiLPe_8qZ_xhUCXagdo6woWLEpVuWG0rwuVg3drmhdCWzgtSRLKoeo3Ygk1mfhdglULBwe6vhfdj_k3qvOyMRI9M_H0Fu3M6qxiwR-l5D_CdaFQUQ">