HomeFreeBSD

rtld: Annotate .rtld_start on aarch64

Description

rtld: Annotate .rtld_start on aarch64

  1. Add a stop indicator to rtld_start to satisfy unwinders on aarch64:

The right unwinding stop indicator should be CFI-undefined PC.
https://dwarfstd.org/doc/Dwarf3.pdf - page 118:
If a Return Address register is defined in the virtual unwind table,
and its rule is undefined (for example, by DW_CFA_undefined), then
there is no return address and no call address, and the virtual
unwind of stack activations is complete.

  1. Add a proper annotations for CFA.

That is allows gdb and libunwind successfully stop when unwinding stack
from global constructors and destructors.

Reviewed by:
Differential Revision: https://reviews.freebsd.org/D40844

Details

Provenance
dchaginAuthored on Jul 7 2023, 4:55 PM
Differential Revision
D40844: rtld: Add a proper annotations to .rtld_start on aarch64
Parents
rG5645dfb41ae0: rtld: Sligtly optimizing .rtld_start on aarch64
Branches
Unknown
Tags
Unknown