28 lines
951 B
Plaintext
28 lines
951 B
Plaintext
$OpenBSD: patch-lib_Target_AArch64_AArch64AsmPrinter_cpp,v 1.1 2018/08/21 06:56:09 ajacoutot Exp $
|
|
|
|
Add retguard for arm64.
|
|
|
|
Index: lib/Target/AArch64/AArch64AsmPrinter.cpp
|
|
--- lib/Target/AArch64/AArch64AsmPrinter.cpp.orig
|
|
+++ lib/Target/AArch64/AArch64AsmPrinter.cpp
|
|
@@ -708,6 +708,19 @@ void AArch64AsmPrinter::EmitInstruction(const MachineI
|
|
case TargetOpcode::PATCHABLE_TAIL_CALL:
|
|
LowerPATCHABLE_TAIL_CALL(*MI);
|
|
return;
|
|
+
|
|
+ case AArch64::RETGUARD_JMP_TRAP:
|
|
+ {
|
|
+ MCSymbol *RGSuccSym = OutContext.createTempSymbol();
|
|
+ /* Compare and branch */
|
|
+ EmitToStreamer(*OutStreamer, MCInstBuilder(AArch64::CBZX)
|
|
+ .addReg(MI->getOperand(0).getReg())
|
|
+ .addExpr(MCSymbolRefExpr::create(RGSuccSym, OutContext)));
|
|
+ EmitToStreamer(*OutStreamer, MCInstBuilder(AArch64::BRK).addImm(1));
|
|
+ OutStreamer->EmitLabel(RGSuccSym);
|
|
+ return;
|
|
+ }
|
|
+
|
|
}
|
|
|
|
// Finally, do the automated lowerings for everything else.
|