]> git.lizzy.rs Git - rust.git/blob - src/metadata.rs
Fold `vtable_trait_upcasting_coercion_new_vptr_slot` logic into obligation processing.
[rust.git] / src / metadata.rs
1 //! Writing of the rustc metadata for dylibs
2
3 use rustc_middle::ty::TyCtxt;
4
5 use crate::backend::WriteMetadata;
6
7 // Adapted from https://github.com/rust-lang/rust/blob/da573206f87b5510de4b0ee1a9c044127e409bd3/src/librustc_codegen_llvm/base.rs#L47-L112
8 pub(crate) fn write_metadata<O: WriteMetadata>(tcx: TyCtxt<'_>, object: &mut O) {
9     use snap::write::FrameEncoder;
10     use std::io::Write;
11
12     let metadata = tcx.encode_metadata();
13     let mut compressed = rustc_metadata::METADATA_HEADER.to_vec();
14     FrameEncoder::new(&mut compressed).write_all(&metadata.raw_data).unwrap();
15
16     object.add_rustc_section(
17         rustc_middle::middle::exported_symbols::metadata_symbol_name(tcx),
18         compressed,
19     );
20 }