25 lines
843 B
Text
25 lines
843 B
Text
Add retguard for arm64.
|
|
|
|
Index: lib/Target/AArch64/AArch64AsmPrinter.cpp
|
|
--- lib/Target/AArch64/AArch64AsmPrinter.cpp.orig
|
|
+++ lib/Target/AArch64/AArch64AsmPrinter.cpp
|
|
@@ -1488,6 +1488,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.
|