diff --git a/src/librustc_trans/back/symbol_export.rs b/src/librustc_trans/back/symbol_export.rs index 04617edf4a7..5d6717272fd 100644 --- a/src/librustc_trans/back/symbol_export.rs +++ b/src/librustc_trans/back/symbol_export.rs @@ -15,6 +15,7 @@ use back::symbol_names::symbol_name; use util::nodemap::FxHashMap; use rustc::hir::def_id::{DefId, CrateNum, LOCAL_CRATE}; use rustc::session::config; +use rustc::ty::TyCtxt; use syntax::attr; use trans_item::TransItem; @@ -72,7 +73,7 @@ impl ExportedSymbols { } if scx.sess().crate_types.borrow().contains(&config::CrateTypeDylib) { - local_crate.push((scx.metadata_symbol_name(), + local_crate.push((metadata_symbol_name(scx.tcx()), SymbolExportLevel::Rust)); } @@ -173,6 +174,12 @@ impl ExportedSymbols { } } +pub fn metadata_symbol_name(tcx: TyCtxt) -> String { + format!("rust_metadata_{}_{}", + tcx.crate_name(LOCAL_CRATE), + tcx.crate_disambiguator(LOCAL_CRATE)) +} + pub fn crate_export_threshold(crate_type: config::CrateType) -> SymbolExportLevel { match crate_type { diff --git a/src/librustc_trans/base.rs b/src/librustc_trans/base.rs index 3fd966eb73e..b364814d07e 100644 --- a/src/librustc_trans/base.rs +++ b/src/librustc_trans/base.rs @@ -776,7 +776,7 @@ fn write_metadata(cx: &SharedCrateContext, let llmeta = C_bytes_in_context(metadata_llcx, &compressed); let llconst = C_struct_in_context(metadata_llcx, &[llmeta], false); - let name = cx.metadata_symbol_name(); + let name = symbol_export::metadata_symbol_name(cx.tcx()); let buf = CString::new(name).unwrap(); let llglobal = unsafe { llvm::LLVMAddGlobal(metadata_llmod, val_ty(llconst).to_ref(), buf.as_ptr()) diff --git a/src/librustc_trans/context.rs b/src/librustc_trans/context.rs index 7e49dee498d..c3770470bfd 100644 --- a/src/librustc_trans/context.rs +++ b/src/librustc_trans/context.rs @@ -12,7 +12,7 @@ use llvm; use llvm::{ContextRef, ModuleRef, ValueRef}; use rustc::dep_graph::{DepGraph, DepGraphSafe, DepNode, DepTrackingMap, DepTrackingMapConfig}; use rustc::hir; -use rustc::hir::def_id::{DefId, LOCAL_CRATE}; +use rustc::hir::def_id::DefId; use rustc::traits; use debuginfo; use callee; @@ -430,12 +430,6 @@ impl<'b, 'tcx> SharedCrateContext<'b, 'tcx> { pub fn translation_items(&self) -> &RefCell>> { &self.translation_items } - - pub fn metadata_symbol_name(&self) -> String { - format!("rust_metadata_{}_{}", - self.tcx().crate_name(LOCAL_CRATE), - self.tcx().crate_disambiguator(LOCAL_CRATE)) - } } impl<'tcx> LocalCrateContext<'tcx> {