1
Fork 0
rust/compiler/rustc_codegen_cranelift/src/metadata.rs
2021-06-01 21:12:27 +02:00

20 lines
717 B
Rust

//! Writing of the rustc metadata for dylibs
use rustc_middle::ty::TyCtxt;
use crate::backend::WriteMetadata;
// Adapted from https://github.com/rust-lang/rust/blob/da573206f87b5510de4b0ee1a9c044127e409bd3/src/librustc_codegen_llvm/base.rs#L47-L112
pub(crate) fn write_metadata<O: WriteMetadata>(tcx: TyCtxt<'_>, object: &mut O) {
use snap::write::FrameEncoder;
use std::io::Write;
let metadata = tcx.encode_metadata();
let mut compressed = rustc_metadata::METADATA_HEADER.to_vec();
FrameEncoder::new(&mut compressed).write_all(&metadata.raw_data).unwrap();
object.add_rustc_section(
rustc_middle::middle::exported_symbols::metadata_symbol_name(tcx),
compressed,
);
}