(module ;; Use the same internal name as in first, so $other.foo will need to be ;; deduplicated. (import "first" "foo" (func $other.foo)) ;; Use a different prefix than in first ($main instead of $other). (import "first" "bar" (func $main.bar)) (import "first" "mem" (memory $other.mem 1)) (import "first" "exn" (tag $exn)) (memory $second.mem 2) (export "mem" (memory $second.mem)) (func $second.foo (export "foo") (call $other.foo) (drop (i32.const 3) ) ) ;; Use the same internal name as in first, so this will need to be ;; deduplicated. (func $bar (export "bar") (call $main.bar) (drop (i32.const 4) ) ) (func $keepalive2 (export "keepalive2") (result i32) ;; Load from the memory imported from the second module. (i32.load $other.mem (i32.const 10) ) ) (func $keepalive3 (export "keepalive3") (throw $exn)) )