llvm/llvm-project

Check for `__unw_add_dynamic_eh_frame_section` in non-ORC-runtime exception registration paths.

Open

#55,681 建立於 2022年5月24日

在 GitHub 查看
 (4 留言) (3 反應) (0 負責人)C++ (10,782 fork)batch import
good first issueorcjit

倉庫指標

Star
 (26,378 star)
PR 合併指標
 (平均合併 1天 2小時) (30 天內合併 1,000 個 PR)

描述

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.

貢獻者指南