@@ -280,29 +280,35 @@ pub unsafe fn create_module<'ll>(
280280 }
281281
282282 if let Some ( BranchProtection { bti, pac_ret } ) = sess. opts . unstable_opts . branch_protection {
283+ let behavior = if llvm_version >= ( 15 , 0 , 0 ) {
284+ llvm:: LLVMModFlagBehavior :: Min
285+ } else {
286+ llvm:: LLVMModFlagBehavior :: Error
287+ } ;
288+
283289 if sess. target . arch == "aarch64" {
284290 llvm:: LLVMRustAddModuleFlag (
285291 llmod,
286- llvm :: LLVMModFlagBehavior :: Min ,
292+ behavior ,
287293 "branch-target-enforcement\0 " . as_ptr ( ) . cast ( ) ,
288294 bti. into ( ) ,
289295 ) ;
290296 llvm:: LLVMRustAddModuleFlag (
291297 llmod,
292- llvm :: LLVMModFlagBehavior :: Min ,
298+ behavior ,
293299 "sign-return-address\0 " . as_ptr ( ) . cast ( ) ,
294300 pac_ret. is_some ( ) . into ( ) ,
295301 ) ;
296302 let pac_opts = pac_ret. unwrap_or ( PacRet { leaf : false , key : PAuthKey :: A } ) ;
297303 llvm:: LLVMRustAddModuleFlag (
298304 llmod,
299- llvm :: LLVMModFlagBehavior :: Min ,
305+ behavior ,
300306 "sign-return-address-all\0 " . as_ptr ( ) . cast ( ) ,
301307 pac_opts. leaf . into ( ) ,
302308 ) ;
303309 llvm:: LLVMRustAddModuleFlag (
304310 llmod,
305- llvm :: LLVMModFlagBehavior :: Min ,
311+ behavior ,
306312 "sign-return-address-with-bkey\0 " . as_ptr ( ) . cast ( ) ,
307313 u32:: from ( pac_opts. key == PAuthKey :: B ) ,
308314 ) ;
0 commit comments