<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJytVt9vm0gQ_mvwywqEF4zhwQ9ObDetcr3o6tPdG1p2B9gGA7cscfLf38xi13YVVT31IuTwa2a--eabGYpOva32HSuAiaIBZjvmJeHYHvPBQo-nzNamG6uaffq490Gx0ogDDKxrmRBG1knsK2GOuvX4PdOW6YG1IGEYhHkjZ3DAm3kOde4MGXrWrWK6LTtzEFZ3zlAMGAYMOPOOHYWzNVBpRGGY7A69kPbamB21rVmji-le4IUbL1xPvw_dEV7AkGME_ajbZ6ZM1w9MNA3GEfYdFJTQb0LWv_vCHJL4Aoro2D7sCLy3vPvSN9rayfdWVbDTr3ix3BBRvRgGZEZgGl3bvDGhFPKFeZAXBaUYG4uIEU1lRF9TxNc0yZM4YPsaE4eyBGn1C6DtQTyjq0voPxwVxkF9asYK-caIAsnyu_4m-U_jYCm0bisX-ISKTgcqAHErhktwJvoehBkI6LEzzy7zxtau5h9ZLV4AS7S0TNYgnzGhYw1Uq1PBKFvRvjF4RXRYsaaTDqTzN4x93xlLLr0t99LQWydetL6Gi2lMh9JlOd3CapNoFksoUjkPQ74oVCFFWqY8CQsVRyJOVCikiJKshJR5PH3YrjfM96It-zo2WvgHMQlStUIh4xUVbHf9KJtCrUdM1CAkthEvWrHP59eZF93LToEXh8-Nls8op6KzgbAYYzLdCAtkyLB4I9uAZFHIwhhv8cj9MB7yOYK7CzGH65TRhHmLu5M0vcWGrZuhQzHKZlTAzmLj63PtztLMJ2l-5-ovTcWyrsJt1_rvNcsPmuviiBxsH84NfttfRDIEVcCwYVgh5DNWWwKroAVz6uLsRoZUTub7FRZSIPdN83Kgf7rA3-0ryJGMti0KGTPdnbngu6tEA9n3rPgF4wkJoodXVnIR8kxFC6kWQRCrbJEWUcjLMmNYniQ-0er7_i_hPVHA76bjf4CPCsSD-ctwgYpOSFDT6Txkp2cvHUqXBkt-LROeDlZRt0XrsdX_jJD3FqV-T8E-0ACidvmAji4KYPddW-oqeDLwZMYWnpz-gn4c6pyKjj6vXp4MnNj-dCK5DMfU4zzPHzfoPc9PgswnJeETaj88orubQYBs_RSCU398H2y__Xvvwp1XzTuB_mOIy4D_YYz7G-_0l9Ls2UBjxbRJ3GlEr7LPUH27-h7cFbeoBjzYWimcrtjDft9Qv334HePvvtixGNxwCN6pXTfYnyzeExgnBPS6btXT4945vht1o8DcaMmpSAzk8gbzeXjfFjLdn8eNoMHmVk93gCNtXtwQODgVUUHD6iR-f-hB6lJLNBpG3J_l9TcDGVtNQ6kAWmvQaDW5oGl0rLXErxMa7kyOxkBrcYFKYYymbYw8WVnTpK6t7QdKxXGLk6keiwDFST1I1o-irU7t6vem-4rLGC-nbYQnSQhhPE-zmKdpGqcQLdNlKGO-jDMxF6KQkkuOVwEyNFOrSGVRJmbCbZjVZRHNRtOsfgDlPC1uUThakPvdgmd8PqtXWbyQCxknMMcZxhMu5ZIvoyRRyTIrkjnMGlFAM6xw0aBIWzhOzJJgF5vZryPQK1pvcx6FYRRlcRIomZYqK5cyTtUyyTIcTIC7tgnIT9CZamZWzmUxVgM-bHD7DJeHqCxdtQAOMCK02jawOs9GrN6VHvCbEt-mnUPD89vOOq008-177vYDdeYyWDn4_wInUXZg>52921</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            JITLink: __eh_frame emission/JIT EH frame registration on aarch64-darwin
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    To be able to `unw_step` through JIT-ed frames on aarch64-darwin, it is necessary to emit __eh_frame unwind information, as there is no way to register compact unwind info with libunwind.

However, JITLink drops all that unwind information on MachO-arm64, as the `EHFrame{Splitter, EdgeFixer}` passes are only added to the default link graph on x86_64. This effectively makes `EHFrameRegistrationPlugin` a no-op.

Just adding the passes the same way as on x86_64 appears to work, although I haven't checked whether there are any extra relocations to support, …:

```diff
commit 57eb8c10025bdbca8f8260bd43a46d0aca369fe8 (HEAD -> julia-main, dnadlinger/julia-main)
Author: David Nadlinger <code@klickverbot.at>
Date:   Thu Dec 30 04:23:23 2021 +0100

    [JITLink] Also include EHFrame* passes on MachO_arm64

    Without the non-compact unwind info there is no way to register
    the EH frames with libunwind (e.g. for backtrace generation).

diff --git a/llvm/lib/ExecutionEngine/JITLink/MachO_arm64.cpp b/llvm/lib/ExecutionEngine/JITLink/MachO_arm64.cpp
index f2a029d35cd5..4d958b302ff9 100644
--- a/llvm/lib/ExecutionEngine/JITLink/MachO_arm64.cpp
+++ b/llvm/lib/ExecutionEngine/JITLink/MachO_arm64.cpp
@@ -705,6 +705,10 @@ void link_MachO_arm64(std::unique_ptr<LinkGraph> G,
     Config.PrePrunePasses.push_back(
         CompactUnwindSplitter("__LD,__compact_unwind"));

+    Config.PrePrunePasses.push_back(EHFrameSplitter("__TEXT,__eh_frame"));
+    Config.PrePrunePasses.push_back(EHFrameEdgeFixer("__TEXT,__eh_frame",
+        8, Delta64, Delta32, NegDelta32));
+
     // Add an in-place GOT/Stubs pass.
     Config.PostPrunePasses.push_back(
         PerGraphGOTAndPLTStubsBuilder_MachO_arm64::asPass);
```

(There is also the somewhat related, non-JITLink-specific issue of __eh_frame sometimes being elided, for which Julia currently carries a patch: https://github.com/JuliaLang/llvm-project/commit/60e041894288848e37870c42749a1aabcc2c2274.)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJytVt9vm0gQ_mvwywpEAGN48IMT202rXC-6-nT3hpbdAbbGwO0ucfLf38xi13YVVT31IuTwa2a-mfnmG8pevi13PSuB8bIFZnvmpeHYHQtjYcBTZhvdj3XDPn3c-SBZpfkBDOs7xrkWTZr4kuuj6rzogSnLlGEdCDCG6zdyBge8WRTQFM6QoWfVSaa6qtcHblXvDLnBMKDBmffsyJ2thlohCs1Efxi4sNfG7Khsw1pVTvcCL1x74Wr6feyP8AKaHCPoJ9XtmdT9YBhvW4zD7TsoKKHfuGh-97k-pMkFFJVj87gl8N7i_svQKmsn3xtZw1a94sViTYUauDFYGY5p9F37xriUWC_Mg7xIqPjYWkSMaGrNh4YivmZpkSYB2zWYOFQVCKteAG0PfI-uLqH_cKXQDupzO9ZYb4zIsVh-P9wk_2k0lkKrrnaBT6jo1FADqLbcXIIzPgzAtSGgx17vXeatbVzPP7KGvwC2aGGZaEDsMaFjA9SrU8MoW969MXhFdNixthcOpPNnxmHotSWX3ibystBbpV68uoaLaUyHVFU13cJuE2nmCygzcReG0byUpeBZlUVpWMok5kkqQy54nOYVZMyLssfNas18L96wr2OruH_gEyFlxyVWvKaGba8f5VOo1YiJaoTE1vxFSfb5_Drz4gfRS_CScN8qsUc6lb0NuMUYk-maWyBDhs0b2RoEi0MWJngrit0Pi8LoDsHdh5jDdcpowrz5_Yma3nzNVq3pkYyiHSWwM9mi1bl3Z2oWEzW_c_WXomZZ1-Gu7_z3huUHw3VxRA42j-cBv50vKjIEdcBwYFjJxR67LYDV0IE-TXF-Q0NqJ_P9GhvJsfZt-3Kgf6rE380riJGMNh0SGTPdnmsRba8SDcQwsPIXjCckiB5eWRXxMMplPBdyHgSJzOdZGYdRVeUM25Mmp7L6vv9LeE8liO6n43-AjwzEg_mLcI6MTolQ0-ldyE7PXnqkLglLcU2TKDNW0rTFq7FT_4xQDBap_kDBPpAA0bh8QEcXBrCHvqtUHTxreNZjB8-Of8EwmqagpqPPq5cnA0e2Px1JLuKYeVFUFE9r9F4UJ0IWE5PwCY0fHvH9jRBgtX4KwWk-vg-22_y9c-HOq-adQP8xxEXgfxjj4cY7_WWkPWtoLZ82iTuN6VX2GepvV9-Du6otsgEPtpIS1RVn2B9amrcPv2P87Rc7lsaJQ_BO73pjf7J5z6AdEdDrqpPPTzvn-H5UrQR9wyXHIm7I5Q3ms3jfNjLbneWGk7C51dMf4EibFzcECqekUpBYncjvmwGEqpRAIzPi_qyuvxnI2CoSpRJorUGr5OSC1OjYKIFfJyTuTIxaQ2dxgQqutaJtjHWyoiGlbqwdDKXiaovK1IxlgOSkGSTrJ97Vp3H1B91_xWWMl9M2wpM0hDC5y_IkyrIsySBeZItQJNEiyfkd56UQkYjwKsAKzeQylnmc85lVtoXlecYRxVVe-G1kjNNOEoFv2nuSZv3tu-T2Q2s26nb5g1zOcnObhqsrNm87j_LobtYssygqRZTNqzhOFhCmMgFRpdkiWYhFWcXJrOUltGaJmwpZ3sFxag0xfr6eqSVtt7soDsM4zpM0kCKrZF4tRJLJRZrnqEuAq7YNCEfQ63qmlw5SOdYGH7aYobk8RGKpugNw4dA_d4t5ednfMxd96dD_C14dYR0">