File tree Expand file tree Collapse file tree 1 file changed +3
-34
lines changed Expand file tree Collapse file tree 1 file changed +3
-34
lines changed Original file line number Diff line number Diff line change @@ -2193,41 +2193,10 @@ void AArch64AsmPrinter::LowerMOVaddrPAC(const MachineInstr &MI) {
2193
2193
if (!STI->hasFPAC ()) {
2194
2194
auto AuthKey = (AuthOpcode == AArch64::AUTIA ? AArch64PACKey::IA
2195
2195
: AArch64PACKey::DA);
2196
- unsigned XPACOpc = getXPACOpcodeForKey (AuthKey);
2197
- MCSymbol *SuccessSym = createTempSymbol (" auth_success_" );
2198
2196
2199
- // XPAC has tied src/dst: use x17 as a temporary copy.
2200
- // mov x17, x16
2201
- EmitToStreamer (MCInstBuilder (AArch64::ORRXrs)
2202
- .addReg (AArch64::X17)
2203
- .addReg (AArch64::XZR)
2204
- .addReg (AArch64::X16)
2205
- .addImm (0 ));
2206
-
2207
- // xpaci x17
2208
- EmitToStreamer (
2209
- MCInstBuilder (XPACOpc).addReg (AArch64::X17).addReg (AArch64::X17));
2210
-
2211
- // cmp x16, x17
2212
- EmitToStreamer (MCInstBuilder (AArch64::SUBSXrs)
2213
- .addReg (AArch64::XZR)
2214
- .addReg (AArch64::X16)
2215
- .addReg (AArch64::X17)
2216
- .addImm (0 ));
2217
-
2218
- // b.eq Lsuccess
2219
- EmitToStreamer (
2220
- MCInstBuilder (AArch64::Bcc)
2221
- .addImm (AArch64CC::EQ)
2222
- .addExpr (MCSymbolRefExpr::create (SuccessSym, OutContext)));
2223
-
2224
- // Trapping sequences do a 'brk'.
2225
- // brk #<0xc470 + aut key>
2226
- EmitToStreamer (MCInstBuilder (AArch64::BRK).addImm (0xc470 | AuthKey));
2227
-
2228
- // If the auth check succeeds, we can continue.
2229
- // Lsuccess:
2230
- OutStreamer->emitLabel (SuccessSym);
2197
+ emitPtrauthCheckAuthenticatedValue (AArch64::X16, AArch64::X17, AuthKey,
2198
+ /* ShouldTrap=*/ true ,
2199
+ /* OnFailure=*/ nullptr );
2231
2200
}
2232
2201
} else {
2233
2202
EmitToStreamer (MCInstBuilder (AArch64::LDRXui)
You can’t perform that action at this time.
0 commit comments