rustc_codegen_ssa::back::metadata

Function create_metadata_file_for_wasm

source
pub fn create_metadata_file_for_wasm(
    sess: &Session,
    data: &[u8],
    section_name: &str,
) -> Vec<u8>
Expand description

Creates a simple WebAssembly object file, which is itself a wasm module, that contains a custom section of the name section_name with contents data.

NB: the object crate does not yet have support for writing the wasm object file format. In lieu of that the wasm-encoder crate is used to build a wasm file by hand.

The wasm object file format is defined at https://github.com/WebAssembly/tool-conventions/blob/main/Linking.md and mainly consists of a linking custom section. In this case the custom section there is empty except for a version marker indicating what format it’s in.

The main purpose of this is to contain a custom section with section_name, which is then appended after linking.

As a further detail the object needs to have a 64-bit memory if wasm64 is the target or otherwise it’s interpreted as a 32-bit object which is incompatible with 64-bit ones.