astexplorer icon indicating copy to clipboard operation
astexplorer copied to clipboard

Unable to get ast for wasm code

Open AchalaSB opened this issue 4 years ago • 3 comments

Describe the bug When I try to get at form wat code, I'm getting errors

To Reproduce Steps to reproduce the behavior:

  1. My rust code looks like
#[no_mangle]
pub extern fn sum(x: i64, y: i64) -> i64 {
   x + y
}
fn main() {}

  1. Compile to wasm using cargo build --release --target=wasm32-unknown-unknown
  2. Convert it into wat using wasm2wat main.wasm -o main.wat
  3. Copy the wat code and put it on explorer.

Expected behavior Should generate the ast

Screenshots Screenshot from 2020-08-31 16-42-52

Browser (please complete the following information):

  • OS: Ubuntu 18.04
  • Browser: Brave
  • Version: v84

astexplorer settings:

  • Selected parser: wat-parser

AchalaSB avatar Aug 31 '20 11:08 AchalaSB

Unfortunately I'm only really familiar with the wasm parser. Maybe @RReverser can help?

fkling avatar Sep 07 '20 15:09 fkling

Not really familiar with wat-parser either.

RReverser avatar Sep 07 '20 17:09 RReverser

@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

AchalaSB avatar Sep 09 '20 03:09 AchalaSB