28 lines
937 B
Plaintext
28 lines
937 B
Plaintext
$OpenBSD: patch-lib_Target_AArch64_AArch64AsmPrinter_cpp,v 1.4 2020/08/05 06:49:48 jca Exp $
|
|
|
|
Add retguard for arm64.
|
|
|
|
Index: lib/Target/AArch64/AArch64AsmPrinter.cpp
|
|
--- lib/Target/AArch64/AArch64AsmPrinter.cpp.orig
|
|
+++ lib/Target/AArch64/AArch64AsmPrinter.cpp
|
|
@@ -1308,6 +1308,19 @@ void AArch64AsmPrinter::EmitInstruction(const MachineI
|
|
case AArch64::SEH_EpilogEnd:
|
|
TS->EmitARM64WinCFIEpilogEnd();
|
|
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.
|