| d51fa0a9 | 17-Apr-2024 |
Andrew Turner <andrew@FreeBSD.org> |
rtld: Add support for arm64 variant pcs
The aarch64 ELF spec has support for a variant of the normal procedure call standard that doesn't follow the normal register convention, e.g. using more regis
rtld: Add support for arm64 variant pcs
The aarch64 ELF spec has support for a variant of the normal procedure call standard that doesn't follow the normal register convention, e.g. using more registers as arguments, or different register state is preserved.
Add support to rtld to handle this. As we don't know which registers need to be preserved disable lazy binding for these functions.
Reviewed by: kib Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D44869
show more ...
|
| ac7759f5 | 07-Jul-2023 |
Dmitry Chagin <dchagin@FreeBSD.org> |
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/D
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.
2. 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
show more ...
|