mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-26 12:36:07 +00:00

In LLVM the MachOPlatform class is modified to identify unwind info sections and the address ranges of the functions these sections cover. These address ranges are then communicated to the ORC runtime by attaching them to the register-object-platform-sections allocation action. In the ORC runtime the unwind-info section addresses are recorded and used to support lookup of unwind info via the new `findDynamicUnwindSections` function. At bootstrap time the ORC runtime checks for the presence of new unwind-info-lookup-registration functions in libunwind (see https://reviews.llvm.org/D142176), and if available uses them to register the `findDynamicUnwindSections` function with libunwind to enable callback-based lookup. If the new unwind-info-lookup-registration functions are not available then the ORC runtime falls back to using the existing libunwind registration APIs. The callback-based scheme is intended to address three shortcomings in the current registration scheme for JIT'd unwind info on Darwin: (1) Lack of compact-unwind support, (2) inability to describe the subarchitecture of JIT'd frames, and (3) lack of efficient address-based lookup data structures in libunwind. For more details see the proposed libunwind changes in https://reviews.llvm.org/D142176.