@@ -215,16 +215,19 @@ pub unsafe fn create_module<'ll>(
215215 // to ensure intrinsic calls don't use it.
216216 if !sess. needs_plt ( ) {
217217 let avoid_plt = "RtLibUseGOT\0 " . as_ptr ( ) . cast ( ) ;
218- llvm:: LLVMRustAddModuleFlag ( llmod, avoid_plt, 1 ) ;
218+ llvm:: LLVMRustAddModuleFlag ( llmod, llvm :: LLVMModFlagBehavior :: Warning , avoid_plt, 1 ) ;
219219 }
220220
221221 if sess. is_sanitizer_cfi_enabled ( ) {
222222 // FIXME(rcvalle): Add support for non canonical jump tables.
223223 let canonical_jump_tables = "CFI Canonical Jump Tables\0 " . as_ptr ( ) . cast ( ) ;
224- // FIXME(rcvalle): Add it with Override behavior flag--LLVMRustAddModuleFlag adds it with
225- // Warning behavior flag. Add support for specifying the behavior flag to
226- // LLVMRustAddModuleFlag.
227- llvm:: LLVMRustAddModuleFlag ( llmod, canonical_jump_tables, 1 ) ;
224+ // FIXME(rcvalle): Add it with Override behavior flag.
225+ llvm:: LLVMRustAddModuleFlag (
226+ llmod,
227+ llvm:: LLVMModFlagBehavior :: Warning ,
228+ canonical_jump_tables,
229+ 1 ,
230+ ) ;
228231 }
229232
230233 // Control Flow Guard is currently only supported by the MSVC linker on Windows.
@@ -233,11 +236,21 @@ pub unsafe fn create_module<'ll>(
233236 CFGuard :: Disabled => { }
234237 CFGuard :: NoChecks => {
235238 // Set `cfguard=1` module flag to emit metadata only.
236- llvm:: LLVMRustAddModuleFlag ( llmod, "cfguard\0 " . as_ptr ( ) as * const _ , 1 )
239+ llvm:: LLVMRustAddModuleFlag (
240+ llmod,
241+ llvm:: LLVMModFlagBehavior :: Warning ,
242+ "cfguard\0 " . as_ptr ( ) as * const _ ,
243+ 1 ,
244+ )
237245 }
238246 CFGuard :: Checks => {
239247 // Set `cfguard=2` module flag to emit metadata and checks.
240- llvm:: LLVMRustAddModuleFlag ( llmod, "cfguard\0 " . as_ptr ( ) as * const _ , 2 )
248+ llvm:: LLVMRustAddModuleFlag (
249+ llmod,
250+ llvm:: LLVMModFlagBehavior :: Warning ,
251+ "cfguard\0 " . as_ptr ( ) as * const _ ,
252+ 2 ,
253+ )
241254 }
242255 }
243256 }
@@ -247,24 +260,28 @@ pub unsafe fn create_module<'ll>(
247260
248261 llvm:: LLVMRustAddModuleFlag (
249262 llmod,
263+ llvm:: LLVMModFlagBehavior :: Error ,
250264 "branch-target-enforcement\0 " . as_ptr ( ) . cast ( ) ,
251265 bti. into ( ) ,
252266 ) ;
253267
254268 llvm:: LLVMRustAddModuleFlag (
255269 llmod,
270+ llvm:: LLVMModFlagBehavior :: Error ,
256271 "sign-return-address\0 " . as_ptr ( ) . cast ( ) ,
257272 pac. is_some ( ) . into ( ) ,
258273 ) ;
259274 let pac_opts = pac. unwrap_or ( PacRet { leaf : false , key : PAuthKey :: A } ) ;
260275 llvm:: LLVMRustAddModuleFlag (
261276 llmod,
277+ llvm:: LLVMModFlagBehavior :: Error ,
262278 "sign-return-address-all\0 " . as_ptr ( ) . cast ( ) ,
263279 pac_opts. leaf . into ( ) ,
264280 ) ;
265281 let is_bkey = if pac_opts. key == PAuthKey :: A { false } else { true } ;
266282 llvm:: LLVMRustAddModuleFlag (
267283 llmod,
284+ llvm:: LLVMModFlagBehavior :: Error ,
268285 "sign-return-address-with-bkey\0 " . as_ptr ( ) . cast ( ) ,
269286 is_bkey. into ( ) ,
270287 ) ;
0 commit comments