summaryrefslogtreecommitdiffstats
path: root/third_party/rust/lucet-module-wasmsbx/src/module.rs
blob: 793a9438222a24047c29928011f2eea49dc8f555 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
use crate::functions::FunctionSpec;
use crate::module_data::ModuleData;
use crate::tables::TableElement;

pub const LUCET_MODULE_SYM: &str = "lucet_module";

/// Module is the exposed structure that contains all the data backing a Lucet-compiled object.
#[derive(Debug)]
pub struct Module<'a> {
    pub module_data: ModuleData<'a>,
    pub tables: &'a [&'a [TableElement]],
    pub function_manifest: &'a [FunctionSpec],
}

/// SerializedModule is a serialization-friendly form of Module, in that the `module_data_*` fields
/// here refer to a serialized `ModuleData`, while `tables_*` and `function_manifest_*` refer to
/// the actual tables and function manifest written in the binary.
#[repr(C)]
#[derive(Debug)]
pub struct SerializedModule {
    pub module_data_ptr: u64,
    pub module_data_len: u64,
    pub tables_ptr: u64,
    pub tables_len: u64,
    pub function_manifest_ptr: u64,
    pub function_manifest_len: u64,
}