HomeFreeBSD

rtld: Annotate .rtld_start on i386

Description

rtld: Annotate .rtld_start on i386

Add a stop indicator to rtld_start to satisfy unwinders:
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.

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

Reviewed by: kib
Differential Revision: https://reviews.freebsd.org/D40949

Details

Provenance
dchaginAuthored on Jul 11 2023, 12:10 PM
Reviewer
kib
Differential Revision
D40949: rtld: Annotate .rtld_start on i386
Parents
rG86c63225ea21: rtld: Microoptimize rtld_start on i386
Branches
Unknown
Tags
Unknown