Author: Fangrui Song Date: 2022-07-19T21:20:02-07:00 New Revision: 23ba688f02ea72b0af3480cd95d31e9a79f2d92a
URL: https://github.com/llvm/llvm-project/commit/23ba688f02ea72b0af3480cd95d31e9a79f2d92a DIFF: https://github.com/llvm/llvm-project/commit/23ba688f02ea72b0af3480cd95d31e9a79f2d92a.diff LOG: [X86] Use Min behavior for cf-protection-{return,branch}/ibt-seal module flags These features require that all object files are compiled with the support. When the feature is disabled for an object file, the merge behavior should treat the file having a value of 0 (see D129911). Reviewed By: xiangzhangllvm Differential Revision: https://reviews.llvm.org/D130065 Added: Modified: clang/lib/CodeGen/CodeGenModule.cpp clang/test/CodeGen/X86/x86-cf-protection.c Removed: ################################################################################ diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index 4daf4120e0cae..2ec71fa297659 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -743,19 +743,19 @@ void CodeGenModule::Release() { if (CodeGenOpts.CFProtectionReturn && Target.checkCFProtectionReturnSupported(getDiags())) { // Indicate that we want to instrument return control flow protection. - getModule().addModuleFlag(llvm::Module::Override, "cf-protection-return", + getModule().addModuleFlag(llvm::Module::Min, "cf-protection-return", 1); } if (CodeGenOpts.CFProtectionBranch && Target.checkCFProtectionBranchSupported(getDiags())) { // Indicate that we want to instrument branch control flow protection. - getModule().addModuleFlag(llvm::Module::Override, "cf-protection-branch", + getModule().addModuleFlag(llvm::Module::Min, "cf-protection-branch", 1); } if (CodeGenOpts.IBTSeal) - getModule().addModuleFlag(llvm::Module::Override, "ibt-seal", 1); + getModule().addModuleFlag(llvm::Module::Min, "ibt-seal", 1); if (CodeGenOpts.FunctionReturnThunks) getModule().addModuleFlag(llvm::Module::Override, "function_return_thunk_extern", 1); diff --git a/clang/test/CodeGen/X86/x86-cf-protection.c b/clang/test/CodeGen/X86/x86-cf-protection.c index 815ef3f8479e2..de6906ec51812 100644 --- a/clang/test/CodeGen/X86/x86-cf-protection.c +++ b/clang/test/CodeGen/X86/x86-cf-protection.c @@ -8,7 +8,7 @@ // RETURN: #define __CET__ 2 // BRANCH: #define __CET__ 1 // FULL: #define __CET__ 3 -// CFPROT: "cf-protection-branch", i32 1 -// IBTSEAL: "ibt-seal", i32 1 +// CFPROT: !{i32 8, !"cf-protection-branch", i32 1} +// IBTSEAL: !{i32 8, !"ibt-seal", i32 1} // NOIBTSEAL-NOT: "ibt-seal", i32 1 void foo() {} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits