@@ -1415,10 +1415,14 @@ class TargetInfo : public TransferrableTargetInfo,
1415
1415
switch (SignReturnAddr) {
1416
1416
case LangOptions::SignReturnAddressScopeKind::None:
1417
1417
return " none" ;
1418
+ case LangOptions::SignReturnAddressScopeKind::NonLeaf:
1418
1419
return " non-leaf" ;
1420
+ case LangOptions::SignReturnAddressScopeKind::All:
1421
+ return " all" ;
1419
1422
}
1420
1423
llvm_unreachable (" Unexpected SignReturnAddressScopeKind" );
1421
1424
}
1425
+
1422
1426
const char *getSignKeyStr () const {
1423
1427
switch (SignKey) {
1424
1428
case LangOptions::SignReturnAddressKeyKind::AKey:
@@ -1437,7 +1441,10 @@ class TargetInfo : public TransferrableTargetInfo,
1437
1441
? (LangOpts.isSignReturnAddressScopeAll ()
1438
1442
? LangOptions::SignReturnAddressScopeKind::All
1439
1443
: LangOptions::SignReturnAddressScopeKind::NonLeaf)
1444
+ : LangOptions::SignReturnAddressScopeKind::None;
1440
1445
SignKey = LangOpts.isSignReturnAddressWithAKey ()
1446
+ ? LangOptions::SignReturnAddressKeyKind::AKey
1447
+ : LangOptions::SignReturnAddressKeyKind::BKey;
1441
1448
BranchTargetEnforcement = LangOpts.BranchTargetEnforcement ;
1442
1449
BranchProtectionPAuthLR = LangOpts.BranchProtectionPAuthLR ;
1443
1450
GuardedControlStack = LangOpts.GuardedControlStack ;
@@ -1461,11 +1468,19 @@ class TargetInfo : public TransferrableTargetInfo,
1461
1468
if (GuardedControlStack)
1462
1469
FuncAttrs.addAttribute (" guarded-control-stack" );
1463
1470
}
1471
+ };
1464
1472
1465
1473
// / Determine if the Architecture in this TargetInfo supports branch
1466
1474
// / protection
1467
1475
virtual bool isBranchProtectionSupportedArch (StringRef Arch) const {
1468
1476
return false ;
1477
+ }
1478
+
1479
+ // / Determine if this TargetInfo supports the given branch protection
1480
+ // / specification
1481
+ virtual bool validateBranchProtection (StringRef Spec, StringRef Arch,
1482
+ BranchProtectionInfo &BPI,
1483
+ StringRef &Err) const {
1469
1484
Err = " " ;
1470
1485
return false ;
1471
1486
}
0 commit comments