diff --git a/src/ext.rs b/src/ext.rs index bba1777..479d770 100644 --- a/src/ext.rs +++ b/src/ext.rs @@ -1,4 +1,5 @@ use parity_wasm::{elements, builder}; +use optimizer::import_section; type Insertion = (usize, u32, u32, String); @@ -37,6 +38,14 @@ pub fn externalize_mem(mut module: elements::Module) -> elements::Module { .pop() .expect("Own memory entry to exist in memory section"); + import_section(&mut module).expect("Import section to exist").entries_mut().push( + elements::ImportEntry::new( + "env".to_owned(), + "memory".to_owned(), + elements::External::Memory(entry), + ) + ); + module } diff --git a/src/lib.rs b/src/lib.rs index 1e994a3..6fe4b75 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -21,7 +21,7 @@ mod runtime_type; pub use optimizer::{optimize, Error as OptimizerError}; pub use gas::inject_gas_counter; pub use logger::init_log; -pub use ext::externalize; +pub use ext::{externalize, externalize_mem}; pub use pack::pack_instance; pub use nondeterminism_check::is_deterministic; pub use runtime_type::inject_runtime_type;