Most patch merges inspired from patrick's work on base-clang. Consumer ports fixed/marked BROKEN as discussed with bcallah@ and rsadowski@. powerpc tests and PLIST fixes from cwen@, thanks! rust-1.36 tests by semarie@
28 lines
935 B
Plaintext
28 lines
935 B
Plaintext
$OpenBSD: patch-lib_Target_AArch64_AArch64AsmPrinter_cpp,v 1.3 2019/07/06 15:06:36 jca Exp $
|
|
|
|
Add retguard for arm64.
|
|
|
|
Index: lib/Target/AArch64/AArch64AsmPrinter.cpp
|
|
--- lib/Target/AArch64/AArch64AsmPrinter.cpp.orig
|
|
+++ lib/Target/AArch64/AArch64AsmPrinter.cpp
|
|
@@ -986,6 +986,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.
|