LLVM 20.0.0git
|
Enumerations | |
enum class | AuthCheckMethod { None , DummyLoad , HighBitsNoTBI , XPACHint , XPAC } |
Variants of check performed on an authenticated pointer. More... | |
Functions | |
unsigned | getCheckerSizeInBytes (AuthCheckMethod Method) |
Returns the number of bytes added by checkAuthenticatedRegister. | |
|
strong |
Variants of check performed on an authenticated pointer.
In cases such as authenticating the LR value when performing a tail call or when re-signing a signed pointer with a different signing schema, a failed authentication may not generate an exception on its own and may create an authentication or signing oracle if not checked explicitly.
A number of check methods modify control flow in a similar way by rewriting the code
as follows:
Enumerator | |
---|---|
None | Do not check the value at all. |
DummyLoad | Perform a load to a temporary register. |
HighBitsNoTBI | Check by comparing bits 62 and 61 of the authenticated address. This method modifies control flow and inserts the following checker: eor Xtmp, Xn, Xn, lsl #1
tbz Xtmp, #62, on_success
|
XPACHint | Check by comparing the authenticated value with an XPAC-ed one without using PAuth instructions not encoded as HINT. Can only be applied to LR. This method modifies control flow and inserts the following checker: mov Xtmp, LR
xpaclri ; encoded as "hint #7"
; *real* result of authentication.
cmp Xtmp, LR
b.eq on_success
static bool contains(SmallPtrSetImpl< ConstantExpr * > &Cache, ConstantExpr *Expr, Constant *C) Definition: Value.cpp:469 bool succeeded(LogicalResult Result) Utility function that returns true if the provided LogicalResult corresponds to a success value. Definition: LogicalResult.h:67 |
XPAC | Similar to XPACHint but using Armv8.3-only XPAC instruction, thus not restricted to LR: mov Xtmp, Xn
xpac(i|d) Xn
cmp Xtmp, Xn
b.eq on_success
|
Definition at line 44 of file AArch64PointerAuth.h.
unsigned llvm::AArch64PAuth::getCheckerSizeInBytes | ( | AuthCheckMethod | Method | ) |
Returns the number of bytes added by checkAuthenticatedRegister.
Definition at line 237 of file AArch64PointerAuth.cpp.
References llvm_unreachable.
Referenced by llvm::AArch64InstrInfo::getInstSizeInBytes().