wabt
wabt copied to clipboard
can wast2json write out binary modules as they are without error checking?
is there a way to make wast2json ignore errors in binary modules? ((module binary ...
)
i want to convert wast files from exception-handling proposal. eg. https://github.com/WebAssembly/exception-handling/blob/123ac59cb650e9537ce129bb2977243bcbe9a773/test/core/try_table.wast i know that wabt doesn't support the latest version of the proposal yet. however, as the reference interpreter from the proposal repo can covert modules into binary, if wast2json can write out binary modules as they are without parsing, it would be usable to run (most of) these tests.
spacetanuki% ../../../interpreter/wasm ../try_table.wast -o try_table.bin.wast
spacetanuki% ~/git/wabt/b/wast2json --no-check try_table.bin.wast
try_table.bin.wast:1:2: error: error in binary module: @0x00000020: invalid section code: 13
(module binary
^^^^^^
try_table.bin.wast:9:2: error: error in binary module: @0x00000041: expected valid result type (got -0x17)
(module binary
^^^^^^
try_table.bin.wast:174:2: error: error in binary module: @0x00000038: invalid section code: 13
(module binary
^^^^^^
try_table.bin.wast:186:2: error: error in binary module: @0x00000016: expected valid result type (got -0x17)
(module binary
^^^^^^
spacetanuki%
Can you explain what the first line is doing? What is the try_table.bin.wast
output file in this case? How is it different to the input wast
file?
I wonder how hard it would be to add wabt support for the latest exception handling changes? @aheejin ?
I suppose it would make sense to extend the meaning of --no-check
when passed to wast2json
. Having said that I'm not sure why that option even exists for this tool. I don't see any usage of wast2json --no-check
in wabt.
Can you explain what the first line is doing? What is the
try_table.bin.wast
output file in this case? How is it different to the inputwast
file?
it converts
;; Test try-catch blocks.
(module
(tag $e0 (export "e0"))
(func (export "throw") (throw $e0))
)
(register "test")
:
:
to
(module binary
"\00\61\73\6d\01\00\00\00\01\84\80\80\80\00\01\60"
"\00\00\03\82\80\80\80\00\01\00\0d\83\80\80\80\00"
"\01\00\00\07\8e\80\80\80\00\02\02\65\30\04\00\05"
"\74\68\72\6f\77\00\00\0a\8a\80\80\80\00\01\84\80"
"\80\80\00\00\08\00\0b"
)
(register "test")
:
:
@sbc100
I wonder how hard it would be to add wabt support for the latest exception handling changes? @aheejin ?
Not sure, because I'm not very familiar with the wabt internals myself. I reviewed some of the current EH implementation in wabt many years ago but I have to re-familiarize myself with it. I don't think it will be more difficult than the efforts put into the current implementation, but I don't think it will be trivial either. At the moment this is not on my priority to-do list unless something else pops up that requires it.
i ended up with writing a horrible hack to convert EH wast. https://github.com/yamt/wasm-spec-test/blob/master/conv-eh.sh