================
@@ -483,11 +483,54 @@ Error LongJmpPass::relaxStub(BinaryBasicBlock &StubBB,
bool &Modified) {
~((1ULL << (RangeSingleInstr - 1)) - 1);
const MCSymbol *RealTargetSym = BC.MIB->getTargetSymbol(*StubBB.begin());
- const BinaryBasicBlock *TgtBB = Func.getBasicBlockForLabel(RealTargetSym);
+ BinaryBasicBlock *TgtBB = Func.getBasicBlockForLabel(RealTargetSym);
+ BinaryFunction *TargetFunction = BC.getFunctionForSymbol(RealTargetSym);
uint64_t TgtAddress = getSymbolAddress(BC, RealTargetSym, TgtBB);
uint64_t DotAddress = BBAddresses[&StubBB];
uint64_t PCRelTgtAddress = DotAddress > TgtAddress ? DotAddress - TgtAddress
: TgtAddress - DotAddress;
+
+ auto applyBTIFixup = [&](BinaryFunction *TargetFunction,
+ BinaryBasicBlock *RealTgtBB) {
+ // TODO: add support for editing each type, and remove errors.
+ if (!TargetFunction && !RealTgtBB) {
+ BC.errs() << "BOLT-ERROR: Cannot add BTI to function with symbol "
+ << RealTargetSym->getName() << "\n";
+ exit(1);
+ }
+ if (TargetFunction && TargetFunction->isIgnored()) {
+ BC.errs() << "BOLT-ERROR: Cannot add BTI landing pad to ignored function
"
+ << TargetFunction->getPrintName() << "\n";
+ exit(1);
+ }
+ if (TargetFunction && !TargetFunction->hasCFG()) {
+ auto FirstII = TargetFunction->instrs().begin();
+ MCInst FirstInst = FirstII->second;
+ if (BC.MIB->isBTIVariantCoveringCall(FirstInst,
+ *StubBB.getLastNonPseudoInstr()))
----------------
peterwaller-arm wrote:
Are these parameters the wrong way around?
https://github.com/llvm/llvm-project/pull/171149
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits