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