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