mirror of
https://github.com/fluencelabs/wasmer
synced 2024-12-14 22:55:40 +00:00
74875ed554
* Move wasmer-runtime to wasmer-runtime-core * Add the runtime library * Fix issue with macros using wasmer_runtime, fmt * Make default compiler dependency optional * Add instantiate and validate functions
271 lines
18 KiB
Plaintext
271 lines
18 KiB
Plaintext
(module
|
|
(memory 1)
|
|
|
|
(func $addr_limit (result i32)
|
|
(i32.mul (memory.size) (i32.const 0x10000))
|
|
)
|
|
|
|
(func (export "store") (param $i i32) (param $v i32)
|
|
(i32.store (i32.add (call $addr_limit) (get_local $i)) (get_local $v))
|
|
)
|
|
|
|
(func (export "load") (param $i i32) (result i32)
|
|
(i32.load (i32.add (call $addr_limit) (get_local $i)))
|
|
)
|
|
|
|
(func (export "memory.grow") (param i32) (result i32)
|
|
(memory.grow (get_local 0))
|
|
)
|
|
)
|
|
|
|
(assert_return (invoke "store" (i32.const -4) (i32.const 42)))
|
|
(assert_return (invoke "load" (i32.const -4)) (i32.const 42))
|
|
(assert_trap (invoke "store" (i32.const -3) (i32.const 13)) "out of bounds memory access")
|
|
(assert_trap (invoke "load" (i32.const -3)) "out of bounds memory access")
|
|
(assert_trap (invoke "store" (i32.const -2) (i32.const 13)) "out of bounds memory access")
|
|
(assert_trap (invoke "load" (i32.const -2)) "out of bounds memory access")
|
|
(assert_trap (invoke "store" (i32.const -1) (i32.const 13)) "out of bounds memory access")
|
|
(assert_trap (invoke "load" (i32.const -1)) "out of bounds memory access")
|
|
(assert_trap (invoke "store" (i32.const 0) (i32.const 13)) "out of bounds memory access")
|
|
(assert_trap (invoke "load" (i32.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "store" (i32.const 0x80000000) (i32.const 13)) "out of bounds memory access")
|
|
(assert_trap (invoke "load" (i32.const 0x80000000)) "out of bounds memory access")
|
|
(assert_return (invoke "memory.grow" (i32.const 0x10001)) (i32.const -1))
|
|
|
|
(module
|
|
(memory 1)
|
|
(data (i32.const 0) "abcdefgh")
|
|
(data (i32.const 0xfff8) "abcdefgh")
|
|
|
|
(func (export "i32.load") (param $a i32) (result i32)
|
|
(i32.load (get_local $a))
|
|
)
|
|
(func (export "i64.load") (param $a i32) (result i64)
|
|
(i64.load (get_local $a))
|
|
)
|
|
(func (export "f32.load") (param $a i32) (result f32)
|
|
(f32.load (get_local $a))
|
|
)
|
|
(func (export "f64.load") (param $a i32) (result f64)
|
|
(f64.load (get_local $a))
|
|
)
|
|
(func (export "i32.load8_s") (param $a i32) (result i32)
|
|
(i32.load8_s (get_local $a))
|
|
)
|
|
(func (export "i32.load8_u") (param $a i32) (result i32)
|
|
(i32.load8_u (get_local $a))
|
|
)
|
|
(func (export "i32.load16_s") (param $a i32) (result i32)
|
|
(i32.load16_s (get_local $a))
|
|
)
|
|
(func (export "i32.load16_u") (param $a i32) (result i32)
|
|
(i32.load16_u (get_local $a))
|
|
)
|
|
(func (export "i64.load8_s") (param $a i32) (result i64)
|
|
(i64.load8_s (get_local $a))
|
|
)
|
|
(func (export "i64.load8_u") (param $a i32) (result i64)
|
|
(i64.load8_u (get_local $a))
|
|
)
|
|
(func (export "i64.load16_s") (param $a i32) (result i64)
|
|
(i64.load16_s (get_local $a))
|
|
)
|
|
(func (export "i64.load16_u") (param $a i32) (result i64)
|
|
(i64.load16_u (get_local $a))
|
|
)
|
|
(func (export "i64.load32_s") (param $a i32) (result i64)
|
|
(i64.load32_s (get_local $a))
|
|
)
|
|
(func (export "i64.load32_u") (param $a i32) (result i64)
|
|
(i64.load32_u (get_local $a))
|
|
)
|
|
(func (export "i32.store") (param $a i32) (param $v i32)
|
|
(i32.store (get_local $a) (get_local $v))
|
|
)
|
|
(func (export "i64.store") (param $a i32) (param $v i64)
|
|
(i64.store (get_local $a) (get_local $v))
|
|
)
|
|
(func (export "f32.store") (param $a i32) (param $v f32)
|
|
(f32.store (get_local $a) (get_local $v))
|
|
)
|
|
(func (export "f64.store") (param $a i32) (param $v f64)
|
|
(f64.store (get_local $a) (get_local $v))
|
|
)
|
|
(func (export "i32.store8") (param $a i32) (param $v i32)
|
|
(i32.store8 (get_local $a) (get_local $v))
|
|
)
|
|
(func (export "i32.store16") (param $a i32) (param $v i32)
|
|
(i32.store16 (get_local $a) (get_local $v))
|
|
)
|
|
(func (export "i64.store8") (param $a i32) (param $v i64)
|
|
(i64.store8 (get_local $a) (get_local $v))
|
|
)
|
|
(func (export "i64.store16") (param $a i32) (param $v i64)
|
|
(i64.store16 (get_local $a) (get_local $v))
|
|
)
|
|
(func (export "i64.store32") (param $a i32) (param $v i64)
|
|
(i64.store32 (get_local $a) (get_local $v))
|
|
)
|
|
)
|
|
|
|
(assert_trap (invoke "i32.store" (i32.const 0x10000) (i32.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.store" (i32.const 0xffff) (i32.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.store" (i32.const 0xfffe) (i32.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.store" (i32.const 0xfffd) (i32.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.store" (i32.const -1) (i32.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.store" (i32.const -2) (i32.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.store" (i32.const -3) (i32.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.store" (i32.const -4) (i32.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store" (i32.const 0x10000) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store" (i32.const 0xffff) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store" (i32.const 0xfffe) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store" (i32.const 0xfffd) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store" (i32.const 0xfffc) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store" (i32.const 0xfffb) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store" (i32.const 0xfffa) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store" (i32.const 0xfff9) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store" (i32.const -1) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store" (i32.const -2) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store" (i32.const -3) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store" (i32.const -4) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store" (i32.const -5) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store" (i32.const -6) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store" (i32.const -7) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store" (i32.const -8) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "f32.store" (i32.const 0x10000) (f32.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "f32.store" (i32.const 0xffff) (f32.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "f32.store" (i32.const 0xfffe) (f32.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "f32.store" (i32.const 0xfffd) (f32.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "f32.store" (i32.const -1) (f32.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "f32.store" (i32.const -2) (f32.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "f32.store" (i32.const -3) (f32.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "f32.store" (i32.const -4) (f32.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.store" (i32.const 0x10000) (f64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.store" (i32.const 0xffff) (f64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.store" (i32.const 0xfffe) (f64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.store" (i32.const 0xfffd) (f64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.store" (i32.const 0xfffc) (f64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.store" (i32.const 0xfffb) (f64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.store" (i32.const 0xfffa) (f64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.store" (i32.const 0xfff9) (f64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.store" (i32.const -1) (f64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.store" (i32.const -2) (f64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.store" (i32.const -3) (f64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.store" (i32.const -4) (f64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.store" (i32.const -5) (f64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.store" (i32.const -6) (f64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.store" (i32.const -7) (f64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.store" (i32.const -8) (f64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.store8" (i32.const 0x10000) (i32.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.store8" (i32.const -1) (i32.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.store16" (i32.const 0x10000) (i32.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.store16" (i32.const 0xffff) (i32.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.store16" (i32.const -1) (i32.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.store16" (i32.const -2) (i32.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store8" (i32.const 0x10000) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store8" (i32.const -1) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store16" (i32.const 0x10000) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store16" (i32.const 0xffff) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store16" (i32.const -1) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store16" (i32.const -2) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store32" (i32.const 0x10000) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store32" (i32.const 0xffff) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store32" (i32.const 0xfffe) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store32" (i32.const 0xfffd) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store32" (i32.const -1) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store32" (i32.const -2) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store32" (i32.const -3) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.store32" (i32.const -4) (i64.const 0)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.load" (i32.const 0x10000)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.load" (i32.const 0xffff)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.load" (i32.const 0xfffe)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.load" (i32.const 0xfffd)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.load" (i32.const -1)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.load" (i32.const -2)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.load" (i32.const -3)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.load" (i32.const -4)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load" (i32.const 0x10000)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load" (i32.const 0xffff)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load" (i32.const 0xfffe)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load" (i32.const 0xfffd)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load" (i32.const 0xfffc)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load" (i32.const 0xfffb)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load" (i32.const 0xfffa)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load" (i32.const 0xfff9)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load" (i32.const -1)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load" (i32.const -2)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load" (i32.const -3)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load" (i32.const -4)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load" (i32.const -5)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load" (i32.const -6)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load" (i32.const -7)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load" (i32.const -8)) "out of bounds memory access")
|
|
(assert_trap (invoke "f32.load" (i32.const 0x10000)) "out of bounds memory access")
|
|
(assert_trap (invoke "f32.load" (i32.const 0xffff)) "out of bounds memory access")
|
|
(assert_trap (invoke "f32.load" (i32.const 0xfffe)) "out of bounds memory access")
|
|
(assert_trap (invoke "f32.load" (i32.const 0xfffd)) "out of bounds memory access")
|
|
(assert_trap (invoke "f32.load" (i32.const -1)) "out of bounds memory access")
|
|
(assert_trap (invoke "f32.load" (i32.const -2)) "out of bounds memory access")
|
|
(assert_trap (invoke "f32.load" (i32.const -3)) "out of bounds memory access")
|
|
(assert_trap (invoke "f32.load" (i32.const -4)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.load" (i32.const 0x10000)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.load" (i32.const 0xffff)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.load" (i32.const 0xfffe)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.load" (i32.const 0xfffd)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.load" (i32.const 0xfffc)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.load" (i32.const 0xfffb)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.load" (i32.const 0xfffa)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.load" (i32.const 0xfff9)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.load" (i32.const -1)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.load" (i32.const -2)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.load" (i32.const -3)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.load" (i32.const -4)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.load" (i32.const -5)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.load" (i32.const -6)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.load" (i32.const -7)) "out of bounds memory access")
|
|
(assert_trap (invoke "f64.load" (i32.const -8)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.load8_s" (i32.const 0x10000)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.load8_s" (i32.const -1)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.load8_u" (i32.const 0x10000)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.load8_u" (i32.const -1)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.load16_s" (i32.const 0x10000)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.load16_s" (i32.const 0xffff)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.load16_s" (i32.const -1)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.load16_s" (i32.const -2)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.load16_u" (i32.const 0x10000)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.load16_u" (i32.const 0xffff)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.load16_u" (i32.const -1)) "out of bounds memory access")
|
|
(assert_trap (invoke "i32.load16_u" (i32.const -2)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load8_s" (i32.const 0x10000)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load8_s" (i32.const -1)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load8_u" (i32.const 0x10000)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load8_u" (i32.const -1)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load16_s" (i32.const 0x10000)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load16_s" (i32.const 0xffff)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load16_s" (i32.const -1)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load16_s" (i32.const -2)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load16_u" (i32.const 0x10000)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load16_u" (i32.const 0xffff)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load16_u" (i32.const -1)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load16_u" (i32.const -2)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load32_s" (i32.const 0x10000)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load32_s" (i32.const 0xffff)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load32_s" (i32.const 0xfffe)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load32_s" (i32.const 0xfffd)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load32_s" (i32.const -1)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load32_s" (i32.const -2)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load32_s" (i32.const -3)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load32_s" (i32.const -4)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load32_u" (i32.const 0x10000)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load32_u" (i32.const 0xffff)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load32_u" (i32.const 0xfffe)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load32_u" (i32.const 0xfffd)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load32_u" (i32.const -1)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load32_u" (i32.const -2)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load32_u" (i32.const -3)) "out of bounds memory access")
|
|
(assert_trap (invoke "i64.load32_u" (i32.const -4)) "out of bounds memory access")
|
|
|
|
;; No memory was changed
|
|
(assert_return (invoke "i64.load" (i32.const 0xfff8)) (i64.const 0x6867666564636261))
|
|
(assert_return (invoke "i64.load" (i32.const 0)) (i64.const 0x6867666564636261))
|