Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

can wast2json write out binary modules as they are without error checking? #2374

Open
yamt opened this issue Jan 27, 2024 · 4 comments
Open

Comments

@yamt
Copy link
Contributor

yamt commented Jan 27, 2024

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% 
@sbc100
Copy link
Member

sbc100 commented Jan 28, 2024

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.

@yamt
Copy link
Contributor Author

yamt commented Jan 29, 2024

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?

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")
:
:

@aheejin
Copy link
Member

aheejin commented Jan 30, 2024

@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.

@yamt
Copy link
Contributor Author

yamt commented Jun 20, 2024

i ended up with writing a horrible hack to convert EH wast.
https://github.com/yamt/wasm-spec-test/blob/master/conv-eh.sh

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants