[all-commits] [llvm/llvm-project] bab398: [libunwind] Add an interface for dynamic .eh_frame...

Peter S. Housel via All-commits all-commits at lists.llvm.org
Thu Nov 18 08:07:03 PST 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: bab39816085d715e52c2131fa249ccd10178764b
      https://github.com/llvm/llvm-project/commit/bab39816085d715e52c2131fa249ccd10178764b
  Author: Peter S. Housel <housel at acm.org>
  Date:   2021-11-18 (Thu, 18 Nov 2021)

  Changed paths:
    M libunwind/src/DwarfParser.hpp
    M libunwind/src/libunwind.cpp
    M libunwind/src/libunwind_ext.h

  Log Message:
  -----------
  [libunwind] Add an interface for dynamic .eh_frame registration

The libgcc runtime library provides __register_frame and
__deregister_frame functions, which can be used by dynamic code
generators to register an .eh_frame section, which contains one or
more Call Frame Information records, each consisting of a Common
Information Entry record followed by one or more Frame Description
Entry records. This libunwind library also provides __register_frame
and __deregister_frame functions, but they are aliases for
__unw_add_dynamic_fde and __unw_remove_dynamic_fde and thus can only
take a single FDE.

This patch adds __unw_add_dynamic_eh_frame_section and
__unw_remove_dynamic_eh_frame_section functions which explicitly use
the .eh_frame format. Clients such as the ORCv2 platform and runtime
can check for these functions and use them if unwinding is being
provided by libunwind, or fall back to __register_frame and
__deregister_frame if unwinding is provided by libgcc.

Reviewed By: lhames

Differential Revision: https://reviews.llvm.org/D111863




More information about the All-commits mailing list