1(module $m 2 (memory (export "mem") 1) 3 4 (func (export "load") (param i32) (result i32) 5 local.get 0 6 i32.load8_u)) 7 8(register "m" $m) 9 10(assert_trap 11 (module 12 (memory (import "m" "mem") 1) 13 14 ;; This is in bounds, and should get written to the memory. 15 (data (i32.const 0) "abc") 16 17 ;; Partially out of bounds. None of these bytes should get written, and 18 ;; instantiation should trap. 19 (data (i32.const 65530) "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz") 20 ) 21 "out of bounds" 22) 23 24;; The first data segment got written. 25(assert_return (invoke $m "load" (i32.const 0)) (i32.const 97)) 26(assert_return (invoke $m "load" (i32.const 1)) (i32.const 98)) 27(assert_return (invoke $m "load" (i32.const 2)) (i32.const 99)) 28 29;; The second did not get partially written. 30(assert_return (invoke $m "load" (i32.const 65530)) (i32.const 0)) 31(assert_return (invoke $m "load" (i32.const 65531)) (i32.const 0)) 32(assert_return (invoke $m "load" (i32.const 65532)) (i32.const 0)) 33(assert_return (invoke $m "load" (i32.const 65533)) (i32.const 0)) 34(assert_return (invoke $m "load" (i32.const 65534)) (i32.const 0)) 35(assert_return (invoke $m "load" (i32.const 65535)) (i32.const 0)) 36