astexplorer
astexplorer copied to clipboard
Unable to get ast for wasm code
Describe the bug When I try to get at form wat code, I'm getting errors
To Reproduce Steps to reproduce the behavior:
- My rust code looks like
#[no_mangle]
pub extern fn sum(x: i64, y: i64) -> i64 {
x + y
}
fn main() {}
- Compile to wasm using
cargo build --release --target=wasm32-unknown-unknown
- Convert it into wat using
wasm2wat main.wasm -o main.wat
- Copy the wat code and put it on explorer.
Expected behavior Should generate the ast
Screenshots
Browser (please complete the following information):
- OS: Ubuntu 18.04
- Browser: Brave
- Version: v84
astexplorer settings:
- Selected parser: wat-parser
Unfortunately I'm only really familiar with the wasm parser. Maybe @RReverser can help?
Not really familiar with wat-parser
either.
@fkling How can I get ast from wasm parser?
(This astexplorer offers to use wat-parser not wasm-parser, but now I'm trying wasm-parser library which is available in webassemblyjs ) Now I'm trying to get ast for this
(module
(type $t0 (func (param f64 f64) (result f64)))
(func $sum (type $t0) (param $p0 f64) (param $p1 f64) (result f64)
local.get $p0
local.get $p1
f64.add)
(func $sub (type $t0) (param $p0 f64) (param $p1 f64) (result f64)
local.get $p0
local.get $p1
f64.sub)
(table $T0 1 1 funcref)
(memory $memory 16)
(global $g0 (mut i32) (i32.const 1048576))
(global $__data_end i32 (i32.const 1048576))
(global $__heap_base i32 (i32.const 1048576))
(export "memory" (memory 0))
(export "sum" (func $sum))
(export "sub" (func $sub))
(export "__data_end" (global 1))
(export "__heap_base" (global 2)))
Tried wasm-parser but getting this error
/wasm-parser/node_modules/@webassemblyjs/wasm-parser/lib/decoder.js:281
throw new Error("unexpected end");
^
Error: unexpected end
at parseModuleHeader (/wasm-parser/node_modules/@webassemblyjs/wasm-parser/lib/decoder.js:281:13)
at Object.decode (/wasm-parser/node_modules/@webassemblyjs/wasm-parser/lib/decoder.js:1681:3)
at Object.decode (/wasm-parser/node_modules/@webassemblyjs/wasm-parser/lib/index.js:248:21)
at /wasm-parser/index.js:20:28
at FSReqCallback.readFileAfterClose [as oncomplete] (internal/fs/read_file_context.js:61:3)
If there is any other way please let me know