aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorOliver Stannard <oliver.stannard@arm.com>2025-01-29 10:42:47 +0000
committerGitHub <noreply@github.com>2025-01-29 10:42:47 +0000
commit36b3c43524c8ca86a5050496b8773f07c5ccddff (patch)
tree5d12b1ca01bb5c2019a8f812ab6c7f211295d40c /clang/lib/Frontend/CompilerInvocation.cpp
parent5e43418e0edbc365a9fbf699b19573e0cae4bcf4 (diff)
downloadllvm-36b3c43524c8ca86a5050496b8773f07c5ccddff.zip
llvm-36b3c43524c8ca86a5050496b8773f07c5ccddff.tar.gz
llvm-36b3c43524c8ca86a5050496b8773f07c5ccddff.tar.bz2
[AArch64] PAUTH_PROLOGUE should not be duplicated with PAuthLR (#124775)
When using PAuthLR, the PAUTH_PROLOGUE expands into a sequence of instructions which takes the address of one of those instructions, and uses that address to compute the return address signature. If this is duplicated, there will be two different addresses used in calculating the signature, so the epilogue will only be correct for (at most) one of them. This change also restricts code generation when using v8.3-A return address signing, without PAuthLR. This isn't strictly needed, as duplicating the prologue there would be valid. We could fix this by having two copies of PAUTH_PROLOGUE, with and without isNotDuplicable, but I don't think it's worth adding the extra complexity to a security feature for that.
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions