diff options
| author | bjorn3 <bjorn3@users.noreply.github.com> | 2018-06-18 18:13:00 +0200 |
|---|---|---|
| committer | bjorn3 <bjorn3@users.noreply.github.com> | 2018-07-07 10:52:15 +0200 |
| commit | 097de536e43e0040e5966ee8e4c75e84c973b2e0 (patch) | |
| tree | f5b729033ce52ce9e88cfaf1efc7f1030d7a51ff /src/librustc_codegen_utils/codegen_backend.rs | |
| parent | d7bc2937464b760d69ae8fc1146b660dc867e802 (diff) | |
| download | rust-097de536e43e0040e5966ee8e4c75e84c973b2e0.tar.gz rust-097de536e43e0040e5966ee8e4c75e84c973b2e0.zip | |
Fix metadata_only metadata encoding
Diffstat (limited to 'src/librustc_codegen_utils/codegen_backend.rs')
| -rw-r--r-- | src/librustc_codegen_utils/codegen_backend.rs | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/librustc_codegen_utils/codegen_backend.rs b/src/librustc_codegen_utils/codegen_backend.rs index 25d01ace4ca..c8cb92b7782 100644 --- a/src/librustc_codegen_utils/codegen_backend.rs +++ b/src/librustc_codegen_utils/codegen_backend.rs @@ -29,6 +29,8 @@ use std::sync::{mpsc, Arc}; use rustc_data_structures::owning_ref::OwningRef; use rustc_data_structures::sync::Lrc; +use flate2::Compression; +use flate2::write::DeflateEncoder; use syntax::symbol::Symbol; use rustc::hir::def_id::LOCAL_CRATE; @@ -97,6 +99,7 @@ impl MetadataLoader for NoLlvmMetadataLoader { pub struct MetadataOnlyCodegenBackend(()); pub struct OngoingCodegen { metadata: EncodedMetadata, + metadata_version: Vec<u8>, crate_name: Symbol, } @@ -184,6 +187,7 @@ impl CodegenBackend for MetadataOnlyCodegenBackend { box OngoingCodegen { metadata: metadata, + metadata_version: tcx.metadata_encoding_version().to_vec(), crate_name: tcx.crate_name(LOCAL_CRATE), } } @@ -203,7 +207,15 @@ impl CodegenBackend for MetadataOnlyCodegenBackend { } let output_name = out_filename(sess, crate_type, &outputs, &ongoing_codegen.crate_name.as_str()); - let metadata = &ongoing_codegen.metadata.raw_data; + let mut compressed = ongoing_codegen.metadata_version.clone(); + let metadata = if crate_type == CrateType::CrateTypeDylib { + DeflateEncoder::new(&mut compressed, Compression::fast()) + .write_all(&ongoing_codegen.metadata.raw_data) + .unwrap(); + &compressed + } else { + &ongoing_codegen.metadata.raw_data + }; let mut file = File::create(&output_name).unwrap(); file.write_all(metadata).unwrap(); } |
