diff options
author | Oliver Stannard <oliver.stannard@arm.com> | 2023-07-27 14:36:14 +0100 |
---|---|---|
committer | Oliver Stannard <oliver.stannard@arm.com> | 2023-08-03 11:45:51 +0100 |
commit | f2e7285b03fbfc263c8a2eaa2b5e2e1cfafc6abd (patch) | |
tree | 887475f66bbcc1f8f81a4915ae2df153ecc7d036 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | b3b2a9209bd6e6dbe8fbeca455361597bb485956 (diff) | |
download | llvm-f2e7285b03fbfc263c8a2eaa2b5e2e1cfafc6abd.zip llvm-f2e7285b03fbfc263c8a2eaa2b5e2e1cfafc6abd.tar.gz llvm-f2e7285b03fbfc263c8a2eaa2b5e2e1cfafc6abd.tar.bz2 |
[AArch64][PtrAuth] Fix unwind state for tail calls
When generating unwind tables for code which uses return-address
signing, we need to toggle the RA_SIGN_STATE DWARF register around any
tail-calls, because these require the return address to be authenticated
before the call, and could throw an exception. This is done using the
.cfi_negate_ra_state directive before the call, and .cfi_restore_state
at the start of the next basic block.
However, since D153098, the .cfi_restore_state isn't being inserted,
because the CFIFixup pass isn't being run. This re-enables that pass
when return-adress signing is enabled.
Reviewed By: ikudrin, MaskRay
Differential Revision: https://reviews.llvm.org/D156428
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions