diff options
author | Matthieu Longo <matthieu.longo@arm.com> | 2024-09-23 15:03:37 +0100 |
---|---|---|
committer | Tamar Christina <tamar.christina@arm.com> | 2024-09-23 15:24:21 +0100 |
commit | bdf41d627c13bc5f0dc676991f4513daa9d9ae36 (patch) | |
tree | 560fd640adb15152e64a36a4e67da30ccc0f2777 /libobjc | |
parent | ba3e597681b640f6f9a676ec4f6cd3ca3878cefc (diff) | |
download | gcc-bdf41d627c13bc5f0dc676991f4513daa9d9ae36.zip gcc-bdf41d627c13bc5f0dc676991f4513daa9d9ae36.tar.gz gcc-bdf41d627c13bc5f0dc676991f4513daa9d9ae36.tar.bz2 |
libgcc: hide CIE and FDE data for DWARF architecture extensions behind a handler.
This patch provides a new handler MD_ARCH_FRAME_STATE_T to hide an
architecture-specific structure containing CIE and FDE data related
to DWARF architecture extensions.
Hiding the architecture-specific attributes behind a handler has the
following benefits:
1. isolating those data from the generic ones in _Unwind_FrameState
2. avoiding casts to custom types.
3. preserving typing information when debugging with GDB, and so
facilitating their printing.
This approach required to add a new header md-unwind-def.h included at
the top of libgcc/unwind-dw2.h, and redirecting to the corresponding
architecture header via a symbolic link.
An obvious drawback is the increase in complexity with macros, and
headers. It also caused a split of architecture definitions between
md-unwind-def.h (types definitions used in unwind-dw2.h) and
md-unwind.h (local types definitions and handlers implementations).
The naming of md-unwind.h with .h extension is a bit misleading as
the file is only included in the middle of unwind-dw2.c. Changing
this naming would require modification of others backends, which I
prefered to abstain from. Overall the benefits are worth the added
complexity from my perspective.
libgcc/ChangeLog:
* Makefile.in: New target for symbolic link to md-unwind-def.h
* config.host: New parameter md_unwind_def_header. Set it to
aarch64/aarch64-unwind-def.h for AArch64 targets, or no-unwind.h
by default.
* config/aarch64/aarch64-unwind.h
(aarch64_pointer_auth_key): Move to aarch64-unwind-def.h
(aarch64_cie_aug_handler): Update.
(aarch64_arch_extension_frame_init): Update.
(aarch64_demangle_return_addr): Update.
* configure.ac: New substitute variable md_unwind_def_header.
* unwind-dw2.h (defined): MD_ARCH_FRAME_STATE_T.
* config/aarch64/aarch64-unwind-def.h: New file.
* configure: Regenerate.
* config/no-unwind.h: Updated comment
Diffstat (limited to 'libobjc')
0 files changed, 0 insertions, 0 deletions