@@ -10,6 +10,7 @@ use std::sync::{mpsc, Mutex};
1010use cranelift_codegen:: binemit:: { NullStackMapSink , NullTrapSink } ;
1111use rustc_codegen_ssa:: CrateInfo ;
1212use rustc_middle:: mir:: mono:: MonoItem ;
13+ use rustc_session:: Session ;
1314
1415use cranelift_jit:: { JITBuilder , JITModule } ;
1516
@@ -65,7 +66,8 @@ fn create_jit_module<'tcx>(
6566 backend_config : & BackendConfig ,
6667 hotswap : bool ,
6768) -> ( JITModule , CodegenCx < ' tcx > ) {
68- let imported_symbols = load_imported_symbols_for_jit ( tcx) ;
69+ let crate_info = CrateInfo :: new ( tcx) ;
70+ let imported_symbols = load_imported_symbols_for_jit ( tcx. sess , crate_info) ;
6971
7072 let isa = crate :: build_isa ( tcx. sess , backend_config) ;
7173 let mut jit_builder = JITBuilder :: with_isa ( isa, cranelift_module:: default_libcall_names ( ) ) ;
@@ -255,14 +257,16 @@ fn jit_fn(instance_ptr: *const Instance<'static>, trampoline_ptr: *const u8) ->
255257 } )
256258}
257259
258- fn load_imported_symbols_for_jit ( tcx : TyCtxt < ' _ > ) -> Vec < ( String , * const u8 ) > {
260+ fn load_imported_symbols_for_jit (
261+ sess : & Session ,
262+ crate_info : CrateInfo ,
263+ ) -> Vec < ( String , * const u8 ) > {
259264 use rustc_middle:: middle:: dependency_format:: Linkage ;
260265
261266 let mut dylib_paths = Vec :: new ( ) ;
262267
263- let crate_info = CrateInfo :: new ( tcx) ;
264- let formats = tcx. dependency_formats ( ( ) ) ;
265- let data = & formats
268+ let data = & crate_info
269+ . dependency_formats
266270 . iter ( )
267271 . find ( |( crate_type, _data) | * crate_type == rustc_session:: config:: CrateType :: Executable )
268272 . unwrap ( )
@@ -272,9 +276,8 @@ fn load_imported_symbols_for_jit(tcx: TyCtxt<'_>) -> Vec<(String, *const u8)> {
272276 match data[ cnum. as_usize ( ) - 1 ] {
273277 Linkage :: NotLinked | Linkage :: IncludedFromDylib => { }
274278 Linkage :: Static => {
275- let name = tcx. crate_name ( cnum) ;
276- let mut err =
277- tcx. sess . struct_err ( & format ! ( "Can't load static lib {}" , name. as_str( ) ) ) ;
279+ let name = & crate_info. crate_name [ & cnum] ;
280+ let mut err = sess. struct_err ( & format ! ( "Can't load static lib {}" , name. as_str( ) ) ) ;
278281 err. note ( "rustc_codegen_cranelift can only load dylibs in JIT mode." ) ;
279282 err. emit ( ) ;
280283 }
@@ -314,7 +317,7 @@ fn load_imported_symbols_for_jit(tcx: TyCtxt<'_>) -> Vec<(String, *const u8)> {
314317 std:: mem:: forget ( lib)
315318 }
316319
317- tcx . sess . abort_if_errors ( ) ;
320+ sess. abort_if_errors ( ) ;
318321
319322 imported_symbols
320323}
0 commit comments