@@ -1041,24 +1041,18 @@ unsafe fn embed_bitcode(
1041
1041
{
1042
1042
// We don't need custom section flags, create LLVM globals.
1043
1043
let llconst = common:: bytes_in_context ( llcx, bitcode) ;
1044
- let llglobal = llvm:: LLVMAddGlobal (
1045
- llmod,
1046
- common:: val_ty ( llconst) ,
1047
- c"rustc.embedded.module" . as_ptr ( ) ,
1048
- ) ;
1049
- llvm:: LLVMSetInitializer ( llglobal, llconst) ;
1044
+ let llglobal =
1045
+ llvm:: add_global ( llmod, common:: val_ty ( llconst) , c"rustc.embedded.module" ) ;
1046
+ llvm:: set_initializer ( llglobal, llconst) ;
1050
1047
1051
1048
llvm:: set_section ( llglobal, bitcode_section_name ( cgcx) ) ;
1052
1049
llvm:: set_linkage ( llglobal, llvm:: Linkage :: PrivateLinkage ) ;
1053
1050
llvm:: LLVMSetGlobalConstant ( llglobal, llvm:: True ) ;
1054
1051
1055
1052
let llconst = common:: bytes_in_context ( llcx, cmdline. as_bytes ( ) ) ;
1056
- let llglobal = llvm:: LLVMAddGlobal (
1057
- llmod,
1058
- common:: val_ty ( llconst) ,
1059
- c"rustc.embedded.cmdline" . as_ptr ( ) ,
1060
- ) ;
1061
- llvm:: LLVMSetInitializer ( llglobal, llconst) ;
1053
+ let llglobal =
1054
+ llvm:: add_global ( llmod, common:: val_ty ( llconst) , c"rustc.embedded.cmdline" ) ;
1055
+ llvm:: set_initializer ( llglobal, llconst) ;
1062
1056
let section = if cgcx. target_is_like_osx {
1063
1057
c"__LLVM,__cmdline"
1064
1058
} else if cgcx. target_is_like_aix {
@@ -1098,31 +1092,29 @@ fn create_msvc_imps(
1098
1092
// underscores added in front).
1099
1093
let prefix = if cgcx. target_arch == "x86" { "\x01 __imp__" } else { "\x01 __imp_" } ;
1100
1094
1101
- unsafe {
1102
- let ptr_ty = Type :: ptr_llcx ( llcx) ;
1103
- let globals = base:: iter_globals ( llmod)
1104
- . filter ( |& val| {
1105
- llvm:: get_linkage ( val) == llvm:: Linkage :: ExternalLinkage
1106
- && llvm:: LLVMIsDeclaration ( val) == 0
1107
- } )
1108
- . filter_map ( |val| {
1109
- // Exclude some symbols that we know are not Rust symbols.
1110
- let name = llvm:: get_value_name ( val) ;
1111
- if ignored ( name) { None } else { Some ( ( val, name) ) }
1112
- } )
1113
- . map ( move |( val, name) | {
1114
- let mut imp_name = prefix. as_bytes ( ) . to_vec ( ) ;
1115
- imp_name. extend ( name) ;
1116
- let imp_name = CString :: new ( imp_name) . unwrap ( ) ;
1117
- ( imp_name, val)
1118
- } )
1119
- . collect :: < Vec < _ > > ( ) ;
1095
+ let ptr_ty = Type :: ptr_llcx ( llcx) ;
1096
+ let globals = base:: iter_globals ( llmod)
1097
+ . filter ( |& val| {
1098
+ llvm:: get_linkage ( val) == llvm:: Linkage :: ExternalLinkage && llvm:: is_declaration ( val)
1099
+ } )
1100
+ . filter_map ( |val| {
1101
+ // Exclude some symbols that we know are not Rust symbols.
1102
+ let name = llvm:: get_value_name ( val) ;
1103
+ if ignored ( name) { None } else { Some ( ( val, name) ) }
1104
+ } )
1105
+ . map ( move |( val, name) | {
1106
+ let mut imp_name = prefix. as_bytes ( ) . to_vec ( ) ;
1107
+ imp_name. extend ( name) ;
1108
+ let imp_name = CString :: new ( imp_name) . unwrap ( ) ;
1109
+ ( imp_name, val)
1110
+ } )
1111
+ . collect :: < Vec < _ > > ( ) ;
1120
1112
1121
- for ( imp_name, val) in globals {
1122
- let imp = llvm:: LLVMAddGlobal ( llmod, ptr_ty, imp_name. as_ptr ( ) ) ;
1123
- llvm :: LLVMSetInitializer ( imp , val ) ;
1124
- llvm:: set_linkage ( imp, llvm :: Linkage :: ExternalLinkage ) ;
1125
- }
1113
+ for ( imp_name, val) in globals {
1114
+ let imp = llvm:: add_global ( llmod, ptr_ty, & imp_name) ;
1115
+
1116
+ llvm:: set_initializer ( imp, val ) ;
1117
+ llvm :: set_linkage ( imp , llvm :: Linkage :: ExternalLinkage ) ;
1126
1118
}
1127
1119
1128
1120
// Use this function to exclude certain symbols from `__imp` generation.
0 commit comments