RyanLamansky / dotnet-webassembly

Create, read, modify, write and execute WebAssembly (WASM) files from .NET-based applications.
Apache License 2.0
789 stars 74 forks source link

WASM module (attached) that works in browsers throws an error from dotnet-webassembly #62

Open ThunderousEcho opened 1 year ago

ThunderousEcho commented 1 year ago

Error from dotnet-webassembly: ModuleLoadException: At offset 525: Unrecognized section type 12. WebAssembly.Runtime.Compile.FromBinary (WebAssembly.Reader reader, WebAssembly.Runtime.CompilerConfiguration configuration, System.Type instanceContainer, System.Type exportContainer) (at /_/WebAssembly/Runtime/Compile.cs:505) WebAssembly.Runtime.Compile.FromBinary[TExports] (System.IO.Stream input, WebAssembly.Runtime.CompilerConfiguration configuration) (at /_/WebAssembly/Runtime/Compile.cs:105) WebAssembly.Runtime.Compile.FromBinary[TExports] (System.IO.Stream input) (at /_/WebAssembly/Runtime/Compile.cs:83) non-working in dotnet-webassembly.zip

Note that I'm running this from inside Unity dotnet-webassembly version 1.2.1 WASM module generated with tinygo

Thanks in advance for any help

RyanLamansky commented 1 year ago

Whatever "section type 12" is, it must be a relatively recent addition to the WASM spec. I'll look into this when I have time.

chutchinson commented 1 year ago

Looks like this library doesn't implement the Bulk Memory Operations proposal, which introduces section 12 as an optional section that describes the number of data segments in the module: https://github.com/WebAssembly/bulk-memory-operations/blob/master/proposals/bulk-memory-operations/Overview.md

RyanLamansky commented 1 year ago

I spent some time on this today and although adding support for the DataCount section is easy, it's only the first problem: your WASM also uses new instructions. Those will need to be implemented, too, for compilation to work.

ThunderousEcho commented 1 year ago

Thanks for looking into this