1414#include " AArch64Subtarget.h"
1515#include " llvm/CodeGen/CFIInstBuilder.h"
1616#include " llvm/CodeGen/MachineBasicBlock.h"
17+ #include " llvm/CodeGen/MachineFrameInfo.h"
1718#include " llvm/CodeGen/MachineInstrBuilder.h"
1819#include " llvm/CodeGen/MachineModuleInfo.h"
20+ #include " llvm/IR/CallingConv.h"
1921
2022using namespace llvm ;
2123using namespace llvm ::AArch64PAuth;
@@ -96,6 +98,9 @@ static void emitPACCFI(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI,
9698 if (!EmitCFI)
9799 return ;
98100
101+ if (MBB.getParent ()->getTarget ().getTargetTriple ().isOSDarwin ())
102+ return ;
103+
99104 auto &MF = *MBB.getParent ();
100105 auto &MFnI = *MF.getInfo <AArch64FunctionInfo>();
101106
@@ -116,7 +121,7 @@ void AArch64PointerAuth::signLR(MachineFunction &MF,
116121 // Debug location must be unknown, see AArch64FrameLowering::emitPrologue.
117122 DebugLoc DL;
118123
119- if (UseBKey) {
124+ if (UseBKey && !MF. getTarget (). getTargetTriple (). isOSDarwin () ) {
120125 BuildMI (MBB, MBBI, DL, TII->get (AArch64::EMITBKEY))
121126 .setMIFlag (MachineInstr::FrameSetup);
122127 }
@@ -133,17 +138,15 @@ void AArch64PointerAuth::signLR(MachineFunction &MF,
133138 if (MFnI.branchProtectionPAuthLR () && Subtarget->hasPAuthLR ()) {
134139 emitPACCFI (MBB, MBBI, MachineInstr::FrameSetup, EmitCFI);
135140 BuildMI (MBB, MBBI, DL,
136- TII->get (MFnI.shouldSignWithBKey () ? AArch64::PACIBSPPC
137- : AArch64::PACIASPPC))
141+ TII->get (UseBKey ? AArch64::PACIBSPPC : AArch64::PACIASPPC))
138142 .setMIFlag (MachineInstr::FrameSetup)
139143 ->setPreInstrSymbol (MF, MFnI.getSigningInstrLabel ());
140144 } else {
141145 BuildPACM (*Subtarget, MBB, MBBI, DL, MachineInstr::FrameSetup);
142146 if (MFnI.branchProtectionPAuthLR ())
143147 emitPACCFI (MBB, MBBI, MachineInstr::FrameSetup, EmitCFI);
144148 BuildMI (MBB, MBBI, DL,
145- TII->get (MFnI.shouldSignWithBKey () ? AArch64::PACIBSP
146- : AArch64::PACIASP))
149+ TII->get (UseBKey ? AArch64::PACIBSP : AArch64::PACIASP))
147150 .setMIFlag (MachineInstr::FrameSetup)
148151 ->setPreInstrSymbol (MF, MFnI.getSigningInstrLabel ());
149152 if (!MFnI.branchProtectionPAuthLR ())
0 commit comments