@@ -8,7 +8,6 @@ use crate::llvm_util;
88use crate :: type_:: Type ;
99use crate :: value:: Value ;
1010
11- use cstr:: cstr;
1211use rustc_codegen_ssa:: base:: { wants_msvc_seh, wants_wasm_eh} ;
1312use rustc_codegen_ssa:: errors as ssa_errors;
1413use rustc_codegen_ssa:: traits:: * ;
@@ -214,13 +213,13 @@ pub unsafe fn create_module<'ll>(
214213 // If skipping the PLT is enabled, we need to add some module metadata
215214 // to ensure intrinsic calls don't use it.
216215 if !sess. needs_plt ( ) {
217- let avoid_plt = "RtLibUseGOT\0 " . as_ptr ( ) . cast ( ) ;
216+ let avoid_plt = c "RtLibUseGOT". as_ptr ( ) . cast ( ) ;
218217 llvm:: LLVMRustAddModuleFlag ( llmod, llvm:: LLVMModFlagBehavior :: Warning , avoid_plt, 1 ) ;
219218 }
220219
221220 // Enable canonical jump tables if CFI is enabled. (See https://reviews.llvm.org/D65629.)
222221 if sess. is_sanitizer_cfi_canonical_jump_tables_enabled ( ) && sess. is_sanitizer_cfi_enabled ( ) {
223- let canonical_jump_tables = "CFI Canonical Jump Tables\0 " . as_ptr ( ) . cast ( ) ;
222+ let canonical_jump_tables = c "CFI Canonical Jump Tables". as_ptr ( ) . cast ( ) ;
224223 llvm:: LLVMRustAddModuleFlag (
225224 llmod,
226225 llvm:: LLVMModFlagBehavior :: Override ,
@@ -231,7 +230,7 @@ pub unsafe fn create_module<'ll>(
231230
232231 // Enable LTO unit splitting if specified or if CFI is enabled. (See https://reviews.llvm.org/D53891.)
233232 if sess. is_split_lto_unit_enabled ( ) || sess. is_sanitizer_cfi_enabled ( ) {
234- let enable_split_lto_unit = "EnableSplitLTOUnit\0 " . as_ptr ( ) . cast ( ) ;
233+ let enable_split_lto_unit = c "EnableSplitLTOUnit". as_ptr ( ) . cast ( ) ;
235234 llvm:: LLVMRustAddModuleFlag (
236235 llmod,
237236 llvm:: LLVMModFlagBehavior :: Override ,
@@ -242,7 +241,7 @@ pub unsafe fn create_module<'ll>(
242241
243242 // Add "kcfi" module flag if KCFI is enabled. (See https://reviews.llvm.org/D119296.)
244243 if sess. is_sanitizer_kcfi_enabled ( ) {
245- let kcfi = "kcfi\0 " . as_ptr ( ) . cast ( ) ;
244+ let kcfi = c "kcfi". as_ptr ( ) . cast ( ) ;
246245 llvm:: LLVMRustAddModuleFlag ( llmod, llvm:: LLVMModFlagBehavior :: Override , kcfi, 1 ) ;
247246 }
248247
@@ -255,7 +254,7 @@ pub unsafe fn create_module<'ll>(
255254 llvm:: LLVMRustAddModuleFlag (
256255 llmod,
257256 llvm:: LLVMModFlagBehavior :: Warning ,
258- "cfguard\0 " . as_ptr ( ) as * const _ ,
257+ c "cfguard". as_ptr ( ) as * const _ ,
259258 1 ,
260259 )
261260 }
@@ -264,7 +263,7 @@ pub unsafe fn create_module<'ll>(
264263 llvm:: LLVMRustAddModuleFlag (
265264 llmod,
266265 llvm:: LLVMModFlagBehavior :: Warning ,
267- "cfguard\0 " . as_ptr ( ) as * const _ ,
266+ c "cfguard". as_ptr ( ) as * const _ ,
268267 2 ,
269268 )
270269 }
@@ -282,26 +281,26 @@ pub unsafe fn create_module<'ll>(
282281 llvm:: LLVMRustAddModuleFlag (
283282 llmod,
284283 behavior,
285- "branch-target-enforcement\0 " . as_ptr ( ) . cast ( ) ,
284+ c "branch-target-enforcement". as_ptr ( ) . cast ( ) ,
286285 bti. into ( ) ,
287286 ) ;
288287 llvm:: LLVMRustAddModuleFlag (
289288 llmod,
290289 behavior,
291- "sign-return-address\0 " . as_ptr ( ) . cast ( ) ,
290+ c "sign-return-address". as_ptr ( ) . cast ( ) ,
292291 pac_ret. is_some ( ) . into ( ) ,
293292 ) ;
294293 let pac_opts = pac_ret. unwrap_or ( PacRet { leaf : false , key : PAuthKey :: A } ) ;
295294 llvm:: LLVMRustAddModuleFlag (
296295 llmod,
297296 behavior,
298- "sign-return-address-all\0 " . as_ptr ( ) . cast ( ) ,
297+ c "sign-return-address-all". as_ptr ( ) . cast ( ) ,
299298 pac_opts. leaf . into ( ) ,
300299 ) ;
301300 llvm:: LLVMRustAddModuleFlag (
302301 llmod,
303302 behavior,
304- "sign-return-address-with-bkey\0 " . as_ptr ( ) . cast ( ) ,
303+ c "sign-return-address-with-bkey". as_ptr ( ) . cast ( ) ,
305304 u32:: from ( pac_opts. key == PAuthKey :: B ) ,
306305 ) ;
307306 } else {
@@ -317,15 +316,15 @@ pub unsafe fn create_module<'ll>(
317316 llvm:: LLVMRustAddModuleFlag (
318317 llmod,
319318 llvm:: LLVMModFlagBehavior :: Override ,
320- "cf-protection-branch\0 " . as_ptr ( ) . cast ( ) ,
319+ c "cf-protection-branch". as_ptr ( ) . cast ( ) ,
321320 1 ,
322321 )
323322 }
324323 if let CFProtection :: Return | CFProtection :: Full = sess. opts . unstable_opts . cf_protection {
325324 llvm:: LLVMRustAddModuleFlag (
326325 llmod,
327326 llvm:: LLVMModFlagBehavior :: Override ,
328- "cf-protection-return\0 " . as_ptr ( ) . cast ( ) ,
327+ c "cf-protection-return". as_ptr ( ) . cast ( ) ,
329328 1 ,
330329 )
331330 }
@@ -334,7 +333,7 @@ pub unsafe fn create_module<'ll>(
334333 llvm:: LLVMRustAddModuleFlag (
335334 llmod,
336335 llvm:: LLVMModFlagBehavior :: Error ,
337- "Virtual Function Elim\0 " . as_ptr ( ) . cast ( ) ,
336+ c "Virtual Function Elim". as_ptr ( ) . cast ( ) ,
338337 1 ,
339338 ) ;
340339 }
@@ -344,7 +343,7 @@ pub unsafe fn create_module<'ll>(
344343 llvm:: LLVMRustAddModuleFlag (
345344 llmod,
346345 llvm:: LLVMModFlagBehavior :: Warning ,
347- "ehcontguard\0 " . as_ptr ( ) as * const _ ,
346+ c "ehcontguard". as_ptr ( ) as * const _ ,
348347 1 ,
349348 )
350349 }
@@ -362,7 +361,7 @@ pub unsafe fn create_module<'ll>(
362361 ) ;
363362 llvm:: LLVMAddNamedMetadataOperand (
364363 llmod,
365- cstr ! ( "llvm.ident" ) . as_ptr ( ) ,
364+ c "llvm.ident". as_ptr ( ) ,
366365 llvm:: LLVMMDNodeInContext ( llcx, & name_metadata, 1 ) ,
367366 ) ;
368367
@@ -510,14 +509,13 @@ impl<'ll, 'tcx> CodegenCx<'ll, 'tcx> {
510509 }
511510
512511 pub ( crate ) fn create_used_variable_impl ( & self , name : & ' static CStr , values : & [ & ' ll Value ] ) {
513- let section = cstr ! ( "llvm.metadata" ) ;
514512 let array = self . const_array ( self . type_ptr ( ) , values) ;
515513
516514 unsafe {
517515 let g = llvm:: LLVMAddGlobal ( self . llmod , self . val_ty ( array) , name. as_ptr ( ) ) ;
518516 llvm:: LLVMSetInitializer ( g, array) ;
519517 llvm:: LLVMRustSetLinkage ( g, llvm:: Linkage :: AppendingLinkage ) ;
520- llvm:: LLVMSetSection ( g, section . as_ptr ( ) ) ;
518+ llvm:: LLVMSetSection ( g, c"llvm.metadata" . as_ptr ( ) ) ;
521519 }
522520 }
523521}
0 commit comments