diff --git a/src/librustc_trans/back/link.rs b/src/librustc_trans/back/link.rs index 4ddf8a883bc48..6bdb3ce631fb1 100644 --- a/src/librustc_trans/back/link.rs +++ b/src/librustc_trans/back/link.rs @@ -48,6 +48,13 @@ use syntax::attr; use syntax::symbol::Symbol; use syntax_pos::Span; +/// The LLVM module name containing crate-metadata. This includes a `.` on +/// purpose, so it cannot clash with the name of a user-defined module. +pub const METADATA_MODULE_NAME: &'static str = "crate.metadata"; +/// The name of the crate-metadata object file the compiler generates. Must +/// match up with `METADATA_MODULE_NAME`. +pub const METADATA_OBJ_NAME: &'static str = "crate.metadata.o"; + // RLIB LLVM-BYTECODE OBJECT LAYOUT // Version 1 // Bytes Data @@ -213,7 +220,7 @@ pub fn link_binary(sess: &Session, remove(sess, &obj); } } - remove(sess, &outputs.with_extension("metadata.o")); + remove(sess, &outputs.with_extension(METADATA_OBJ_NAME)); } out_filenames @@ -832,7 +839,7 @@ fn link_args(cmd: &mut Linker, // object file, so we link that in here. if crate_type == config::CrateTypeDylib || crate_type == config::CrateTypeProcMacro { - cmd.add_object(&outputs.with_extension("metadata.o")); + cmd.add_object(&outputs.with_extension(METADATA_OBJ_NAME)); } // Try to strip as much out of the generated object by removing unused diff --git a/src/librustc_trans/back/write.rs b/src/librustc_trans/back/write.rs index b3a2d66a07c11..fa43d94e9c114 100644 --- a/src/librustc_trans/back/write.rs +++ b/src/librustc_trans/back/write.rs @@ -866,12 +866,12 @@ pub fn run_passes(sess: &Session, // Clean up unwanted temporary files. // We create the following files by default: - // - crate.#module-name#.bc - // - crate.#module-name#.o - // - crate.metadata.bc - // - crate.metadata.o - // - crate.o (linked from crate.##.o) - // - crate.bc (copied from crate.##.bc) + // - #crate#.#module-name#.bc + // - #crate#.#module-name#.o + // - #crate#.crate.metadata.bc + // - #crate#.crate.metadata.o + // - #crate#.o (linked from crate.##.o) + // - #crate#.bc (copied from crate.##.bc) // We may create additional files if requested by the user (through // `-C save-temps` or `--emit=` flags). @@ -919,9 +919,9 @@ pub fn run_passes(sess: &Session, } // We leave the following files around by default: - // - crate.o - // - crate.metadata.o - // - crate.bc + // - #crate#.o + // - #crate#.crate.metadata.o + // - #crate#.bc // These are used in linking steps and will be cleaned up afterward. // FIXME: time_llvm_passes support - does this use a global context or diff --git a/src/librustc_trans/base.rs b/src/librustc_trans/base.rs index 9bd19d5bbb3e4..a4841a914deda 100644 --- a/src/librustc_trans/base.rs +++ b/src/librustc_trans/base.rs @@ -1146,7 +1146,7 @@ pub fn trans_crate<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, }); let metadata_module = ModuleTranslation { - name: "metadata".to_string(), + name: link::METADATA_MODULE_NAME.to_string(), symbol_name_hash: 0, // we always rebuild metadata, at least for now source: ModuleSource::Translated(ModuleLlvm { llcx: shared_ccx.metadata_llcx(),