From 9c231325e77b1989c006daf083a3e9bd143c3d07 Mon Sep 17 00:00:00 2001 From: Ed Maste Date: Fri, 4 Nov 2022 11:59:49 -0400 Subject: [PATCH] Clang: Add Diags for targets pre to i686 for -fcf-protection Intel Control-flow Enforcement Technology (CET) provides new instructions `endbr32/64` for the indirect branch control. They are NOPs on i686 and new targets. We need to check for that in case it crashes on older targets. PR: 264497 Reviewed by: dim MFC after: 1 week Obtained from: LLVM commit 52516782972730ff065a34123a9d8876da08c254 Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D37268 --- contrib/llvm-project/clang/lib/Basic/Targets/X86.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/contrib/llvm-project/clang/lib/Basic/Targets/X86.h b/contrib/llvm-project/clang/lib/Basic/Targets/X86.h index d1b66432e38b..b34a16bb5f5b 100644 --- a/contrib/llvm-project/clang/lib/Basic/Targets/X86.h +++ b/contrib/llvm-project/clang/lib/Basic/Targets/X86.h @@ -223,12 +223,16 @@ class LLVM_LIBRARY_VISIBILITY X86TargetInfo : public TargetInfo { virtual bool checkCFProtectionReturnSupported(DiagnosticsEngine &Diags) const override { - return true; + if (CPU == llvm::X86::CK_None || CPU >= llvm::X86::CK_PentiumPro) + return true; + return TargetInfo::checkCFProtectionReturnSupported(Diags); }; virtual bool checkCFProtectionBranchSupported(DiagnosticsEngine &Diags) const override { - return true; + if (CPU == llvm::X86::CK_None || CPU >= llvm::X86::CK_PentiumPro) + return true; + return TargetInfo::checkCFProtectionBranchSupported(Diags); }; virtual bool validateOperandSize(const llvm::StringMap &FeatureMap,