[libunwind] [libunwind][AArch64] Disable ZA before resuming from unwinding (on Linux) (PR #165451)
Benjamin Maxwell via cfe-commits
cfe-commits at lists.llvm.org
Mon Nov 10 03:57:21 PST 2025
================
@@ -827,6 +827,54 @@ DEFINE_LIBUNWIND_FUNCTION(__unw_getcontext)
ret
#endif
+//
+// extern "C" bool __libunwind_Registers_arm64_za_disable()
+//
+// On return:
+// success (true/false) is returned in x0
+//
+ .p2align 2
+DEFINE_LIBUNWIND_FUNCTION(__libunwind_Registers_arm64_za_disable)
+ // If TPIDR2_EL0 is null, the subroutine just disables ZA.
----------------
MacDue wrote:
The `BTI_C` macro used in `compiler-rt` (which may not expand to a `bti` instruction) does not exist in `libunwind`. Other functions add `pacibsp/retab` based on `__has_feature(ptrauth_calls)`, so I've updated `__libunwind_Registers_arm64_za_disable` to do the same (IIRC, `pacibsp` also acts like a `bti`).
I'm not sure what `.variant_pcs` would mean/do here. I believe this function should comply with the standard C calling convention (which it is called with), as the declaration in `Registers.hpp` does not indicate any alternate calling convention.
https://github.com/llvm/llvm-project/pull/165451
More information about the cfe-commits
mailing list