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

    <tr>
        <th>Summary</th>
        <td>
            LLD-MachO folds LSDA incorrectly
        </td>
    </tr>

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

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

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

<pre>
    Repro:

```
// Generate a .o with old-enough target version which didn't support compact-unwind:
echo 'void g() {throw 1; } void f() { try { g(); } catch(...) {} } void f2() { try { g(); } catch(...) {} }' | clang -target x86_64-apple-macos -fPIC -c -xc++ - -o /tmp/fold_lsda.o

// Link with lld-macho (post 14, ie., after eh_frame support was added ~ Feb 2022 or later):
ld64.lld /tmp/fold_lsda.o -arch x86_64 -arch x86_64 -platform_version macos 11.0 11.0 -syslibroot /mnt/ssd/repo/lld/llvm-project/lld/test/MachO/Inputs/MacOSX.sdk -lSystem -dylib -lc++  --icf=all
```

This crashed  with the following stacktrace

```
ld64.lld: /mnt/ssd/repo/lld/llvm-project/lld/MachO/InputSection.cpp:191: void lld::macho::ConcatInputSection::writeTo(uint8_t*): Assertion `!::shouldOmitFromOutput(referentIsec)' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
 #0 0x0000562703bbae12 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /mnt/ssd/repo/lld/llvm-project/llvm/lib/Support/Unix/Signals.inc:602:22
 #1 0x0000562703bbb1f8 PrintStackTraceSignalHandler(void*) /mnt/ssd/repo/lld/llvm-project/llvm/lib/Support/Unix/Signals.inc:675:1
 #2 0x0000562703bb8bd4 llvm::sys::RunSignalHandlers() /mnt/ssd/repo/lld/llvm-project/llvm/lib/Support/Signals.cpp:104:20
 #3 0x0000562703bba841 SignalHandler(int) /mnt/ssd/repo/lld/llvm-project/llvm/lib/Support/Unix/Signals.inc:413:1
 #4 0x00007f7eec85af90 (/lib/x86_64-linux-gnu/libc.so.6+0x3bf90)
 #5 0x00007f7eec8a9ccc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #6 0x00007f7eec85aef2 raise ./signal/../sysdeps/posix/raise.c:27:6
 #7 0x00007f7eec845472 abort ./stdlib/abort.c:81:7
 #8 0x00007f7eec845395 _nl_load_domain ./intl/loadmsgcat.c:1177:9
 #9 0x00007f7eec853df2 (/lib/x86_64-linux-gnu/libc.so.6+0x34df2)
#10 0x0000562704113dd9 lld::macho::ConcatInputSection::writeTo(unsigned char*) /mnt/ssd/repo/lld/llvm-project/lld/MachO/InputSection.cpp:192:49
#11 0x00005627040c60a1 lld::macho::ConcatOutputSection::writeTo(unsigned char*) const /mnt/ssd/repo/lld/llvm-project/lld/MachO/ConcatOutputSection.cpp:364:35
#12 0x000056270418a76d (anonymous namespace)::Writer::writeSections()::'lambda'(lld::macho::OutputSection const*)::operator()(lld::macho::OutputSection const*) const /mnt/ssd/repo/lld/llvm-project/lld/MachO/Writer.cpp:1156:3

```


Related bugs/patches:
- https://reviews.llvm.org/D144999 exposed this
- Chromium build hit this: https://bugs.chromium.org/p/chromium/issues/detail?id=1446967 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0V99v4ywW_WvIy5UtG_9-yEPaft4dqasZTWe1-xZhwDE7GCzATfOyf_sK7DRNvmpW7eiTKhpjOJxzLnCvibXioDjfouIOYay1cs9aI4xR8bAhsxu02a6dm06z0_Y7n4xG2Q4lDyg5t2Wy_i2PuEW4hb9xxQ1xHAjEGo7CDaAli7jS82EAR8yBO3jmxgqt4DgIOgATTCFcObDzNGnjgOpxItRFszoKxV6X5XTQgHD1rAWDA8I1wg2g6s4NRh8hRdkdoOoBwuv-8hqcOYX_65TzOEocHRCu4zheR_reCwL-DQiEK0DVPVBJ1AGiVfZLXe7LPCLTJHk0EqotRP23L_cQUYheKMJ3CN9BBJGX2bpxQrjttWR7aRmJ9ZX5i9uPQv1cTJaSecjgUD1p6yDNEb4HwWP_j_SOG-DDvjdk5K9OH4kFwhhn8F9oeQc4wRi0AUkcN0Houp5kZR5Lyd4lBhExdFjl3TxMkrhem3F_jvmiO03jZGkie7JSdEZr58FH5RBurWUIt4ZPGuFWShba5zGajP4Pp-6103HrH_5B6PAV4faLmmZnl46vT_-OLfsJkXw6WcdHiNhJig4ieTYaokjQHmUPRMr3t3RofwzCAjXEDpzBYrYbOPRaSn0U6gDWEfrTGUL5L47H2UCU7T4u80rfE6dOaBXTaULZLm1SDxm27AKPsl3YCMvPe60ocW8nLv1HIxz_oRGuZ6FcvXcI75aAw85abvxI8Oxxukywg54l-zoK1xo9fp3dNDuEa8N7brhyXyynfj6uoCdCchYvur89_rF7-gPs3I3CAYFuPoAXbBw4DYNzk_X4YTsfhBvmLqZ6XI34sx_C2pn7CANRDISicmY8xCNECLpzKNblAeEsgeQlSZKkKHGVZF1HeIohwC_CTnb58c0I5Z58MH-EYOL6MsiQ415bZzgZES7DwfIRbD4Wy0WR6BBun5YTiHD7TyVefIc4KCJtLBRF2a5MMMp2GF9UpDcqurSv4YbygvF3opj0x7f2u2KJ61_Gsyr8JrzQxDc0647l75n9fVZXbO35tv1tnmeC6_lIcm9kcmGY3W6HOk_h1rm_Nrp5ml27lq-cqr7inNYF6ZsEgiMr4Jo6pFDzS3RQ8_KCxlbHJcJ3yUvW9U3iD-ArZnGNSRpKKez3kxsMJ2z_U0i5F-Mk-ciVI-G8xwi3anIS4fbtsDhw9j5W5QW_vOXMewyGCMsDjg2KEW7j8HSyjE_-4E7aBkfCyICMK7-RLsDVNXBe5BUG0vkrI0A5tngSugJC7e-o6oJQ3yJkTQF7JfdSE7ZneiRiEStUEOu7R3ugZIFL08pTeuNlc6M1Yz3-YHxy5iuK5py-s_TqWsrTNGOs-ewVrkI9x4AOxHzmwP_fJONvo_wN-avbKE9omZD0F-SXdPEB9lQr-4l64KzhnVVXKVnp93FWXKTg6zjUpCp9mVMTpdVp1LMFRUZup5ASmoX8vzx580bIuog914e7kNQqScaOEYSrkEz-7M4Vw0X0ax5G2U5PvpbWZkX9IMbvmriIPG-BtCi9cb_6AnjTfue-hGQ-3YdD7wtlbl_Lyegm8xv-LPjRxp5PrM0B4fYhzfOmaYC_TNpyBm4Q9jz5fjB6FPMI3Swkg0G45XW2u8H1y8d0Hb0C--L13PW2omDcESFR1gqGMr962ZQVbNg2Y03WkA3fpmVdFEWFi2wzbOuuboqU5hgXTdrXGeY4r-ouq_s052WXbsQWJzhLiixNa5wUWUyaOq8qzBgmdVGVDOUJH4mQr6o3gcu2zJKs2UjScWnXL7Ql7mtgwlea2YbYBX_zRArrLu5tnHCSbx8fH6IwxdeqzMLj08POl0zaGE6dPG1mI7efr8ACzf8FAAD__11iU_U">