llvm/llvm-project

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

Open

#55,681 opened on May 24, 2022

View on GitHub
 (4 comments) (3 reactions) (0 assignees)C++ (10,782 forks)batch import
good first issueorcjit

Repository metrics

Stars
 (26,378 stars)
PR merge metrics
 (Avg merge 1d 2h) (1,000 merged PRs in 30d)

Description

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.

Contributor guide