[llvm-branch-commits] [llvm] [BOLT] Gadget scanner: account for BRK when searching for auth oracles (PR #137975)
Kristof Beyls via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Jun 24 06:08:54 PDT 2025
================
@@ -1751,6 +1750,25 @@ class AArch64MCPlusBuilder : public MCPlusBuilder {
Inst.addOperand(MCOperand::createImm(0));
}
+ bool isTrap(const MCInst &Inst) const override {
+ if (Inst.getOpcode() != AArch64::BRK)
+ return false;
+ // Only match the immediate values that are likely to indicate this BRK
+ // instruction is emitted to terminate the program immediately and not to
+ // be handled by a SIGTRAP handler, for example.
+ switch (Inst.getOperand(0).getImm()) {
+ case 0xc470:
+ case 0xc471:
+ case 0xc472:
+ case 0xc473:
+ // Explicit Pointer Authentication check failed, see
+ // AArch64AsmPrinter::emitPtrauthCheckAuthenticatedValue().
----------------
kbeyls wrote:
I'm not sure if it's a good idea to only consider pauthabi-specific BRK values in a "generic" AArch64-interface to test whether something is a trap. This "isTrap" function might get used by other analyses too...
I wonder if there would be a way to change the interface of `isTrap` to make it appropriately generic so that it could be used without confusion by other analyses too?
An example is this commit that makes the pac-ret analysis more accurate, which I guess hasn't been upstreamed yet: https://github.com/llvm/llvm-project/commit/5b3ed529abd6f6025c9012e5930375c5b577e555
https://github.com/llvm/llvm-project/pull/137975
More information about the llvm-branch-commits
mailing list