Check for `__unw_add_dynamic_eh_frame_section` in non-ORC-runtime exception registration paths.
#55,681 opened on 2022年5月24日
Repository metrics
- Stars
- (26,378 stars)
- PR merge metrics
- (平均マージ 1d 2h) (30d で 1,000 merged PRs)
説明
Background:
LLVM JIT clients using libunwind on Linux have historically encountered "FDE is really a CIE" errors and associated issues with exception handling (see e.g. https://github.com/llvm/llvm-project/issues/86).
To address these issues @housel added new dynamic registration functions for eh-frame-sections to libunwind in bab39816085d7 (__unw_add_dynamic_eh_frame_section registers a section, __unw_remove_dynamic_eh_frame_section deregisters it), and updated the ORC runtime was updated to check for and use these registration functions in 981523b2e4675d4be496a333583b2f728c057d02.
@housel's patch fixes the issue for JIT clients who use the ORC runtime, but the LLVM-only registration paths are still hardcoded to use the __register_frame and __deregister_frame functions. We should update the LLVM-only paths to check and use these functions too.