6 releases
0.1.6 | Jan 24, 2023 |
---|---|
0.1.5 | Dec 13, 2022 |
0.1.3 | Nov 15, 2022 |
#594 in WebAssembly
101 downloads per month
Used in dwarfdump-wasm
115KB
3K
SLoC
wasm-edit
Edit and instrument already compiled Wasm binaries
Install
cargo install wasm-edit
Edit the main memory
Change the initial memory amount (in pages):
wasm-edit edit-memory --initial-memory=1000 < input.wasm > output.wasm
Trace calls to memory.grow
Trace calls to the memory.grow
instruction:
wasm-edit instrument-memory < input.wasm > output.wasm
Requires Wasi, but doesn't require any change on the host. Tested with Rust and theoretically working with C/C++ (clang).
Coredump generation
Add the coredump generation:
wasm-edit coredump < input.wasm > output.wasm
When WebAssembly encounters a unreachable
instruction it will unwind
the stack, collect informations and generate a coredump.
The coredump struct is stored at a fixed location, this might conflict with other transformations like asyncify.
Collect the entire WebAssembly memory and use wasmgdb to analyze.
Running into stack overflow
Some Wasm binaries have very recursive flow of control, increase the maximum stack size:
$ ulimit -s 160000
Dependencies
~5MB
~110K SLoC