X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Flibrustc_trans%2Flib.rs;h=42c3e620baa7f39b57f9f77c9831f3d6ca8bc7eb;hb=8821affd1523a719ffb9f6537d53f8725ab00592;hp=256200a6e9572f1d10144f1dadbedafe07f6b4c5;hpb=941e172fc1f0a2fea60100e4e0b0e658c2c97d2b;p=rust.git diff --git a/src/librustc_trans/lib.rs b/src/librustc_trans/lib.rs index 256200a6e95..42c3e620baa 100644 --- a/src/librustc_trans/lib.rs +++ b/src/librustc_trans/lib.rs @@ -64,16 +64,19 @@ extern crate gcc; // Used to locate MSVC, not gcc :) pub use base::trans_crate; -pub use back::symbol_names::provide; pub use metadata::LlvmMetadataLoader; pub use llvm_util::{init, target_features, print_version, print_passes, print, enable_llvm_debug}; use std::rc::Rc; +use std::sync::Arc; -use rustc::hir::def_id::CrateNum; -use rustc::util::nodemap::{FxHashSet, FxHashMap}; +use rustc::hir::def_id::{CrateNum, LOCAL_CRATE}; use rustc::middle::cstore::{NativeLibrary, CrateSource, LibSource}; +use rustc::ty::maps::Providers; +use rustc::util::nodemap::{FxHashSet, FxHashMap}; + +mod diagnostics; pub mod back { mod archive; @@ -87,8 +90,6 @@ pub mod back { mod rpath; } -mod diagnostics; - mod abi; mod adt; mod allocator; @@ -247,3 +248,16 @@ pub struct CrateInfo { } __build_diagnostic_array! { librustc_trans, DIAGNOSTICS } + +pub fn provide_local(providers: &mut Providers) { + back::symbol_names::provide(providers); + base::provide(providers); + providers.exported_symbol_set = |tcx, cnum| { + assert_eq!(cnum, LOCAL_CRATE); + Arc::new(back::symbol_export::compute(tcx)) + }; +} + +pub fn provide_extern(providers: &mut Providers) { + back::symbol_names::provide(providers); +}