diff options
author | Pablo Barrio <pablo.barrio@arm.com> | 2021-06-15 15:04:15 +0100 |
---|---|---|
committer | Pablo Barrio <pablo.barrio@arm.com> | 2021-06-24 18:24:32 +0100 |
commit | 571c8c5263a79293aaadae07b11feb36726eaf53 (patch) | |
tree | d3a9d72eae5398fc64413229b4a14b4831ad07b9 /clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp | |
parent | 50db987d5936260a30a1df69e6abfcb4434692ec (diff) | |
download | llvm-571c8c5263a79293aaadae07b11feb36726eaf53.zip llvm-571c8c5263a79293aaadae07b11feb36726eaf53.tar.gz llvm-571c8c5263a79293aaadae07b11feb36726eaf53.tar.bz2 |
[AArch64][v8.3A] Avoid inserting implicit landing pads (PACI*SP)
PACI*SP have the advantage that they are in HINT space, meaning
they can be run successfully in hardware without PAuth support -
they will just behave as a NOP. However, PACI*SP are also implicit
landing pads (think of an extra BTI jc). Therefore, they allow
indirect jumps of all kinds into them, potentially inserting new
gadgets. This patch replaces PACI*SP by PACI* LR, SP when
compiling explicitly for hardware with full PAuth support. PACI*
is not in the HINT space, therefore it will fault when run in
hardware without PAuth support, but it is also not a landing pad,
making programs safer in newer HW.
Differential Revision: https://reviews.llvm.org/D101920
Diffstat (limited to 'clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions