Expand description
WAFFLE Wasm analysis framework.
waffle is a decompiler and compiler library for WebAssembly: it defines an SSA-based IR (intermediate representation), with a frontend that translates Wasm to this IR, and a backend that compiles this IR back to Wasm. It can be used by programs that need to transform/modify or add new code to Wasm modules.
A good starting point is the Module
: it can be constructed from
Wasm bytecode in memory with Module::from_wasm_bytes()
and
recompiled to Wasm with Module::to_wasm_bytes()
, after
modifications are performed or new code is added. A new module can
also be built from scratch with Module::empty()
.
Re-exports§
pub use passes::basic_opt::OptOptions;
pub use wasmparser;
pub use wasm_encoder;
Modules§
- cfg
- Lightweight CFG analyses.
- entity
- Type-safe indices and indexed containers.
- passes
- Passes.
- pool
- Pooled list data structure.
Macros§
Structs§
- Block
- Block
Def - Block
Target - Debug
- Debug
Map - A map from ranges of offsets in the original Wasm file to source locations.
- Export
- A module export definition.
- Frontend
Options - Options to control the Wasm-to-bytecode translation process.
- Func
- Function
Body - The body of a function, as an SSA-based intermediate representation.
- Function
Body Display - A wrapper around a
FunctionBody
together with some auxiliary information to perform a pretty-print of that function. - Global
- Global
Data - A global-variable definition.
- Ieee32
- An IEEE binary32 immediate floating point value, represented as a u32 containing the bit pattern.
- Ieee64
- An IEEE binary64 immediate floating point value, represented as a u64 containing the bit pattern.
- Import
- A module import definition.
- Interp
Context - Context for the IR interpreter. Corresponds roughly to Wasm module state.
- Interp
Memory - The state of one interpreter memory.
- Interp
Stack Frame - One stack frame in the interpreted execution context.
- Interp
Table - The state of one interpreter table.
- Local
- Memory
- Memory
Arg - An argument to a memory load or store, specifying which memory, alignment and an optional offset.
- Memory
Data - A memory definition.
- Memory
Segment - A segment of data in a memory’s initial state.
- Module
- A Wasm module, represented as a collection of IR entities.
- Module
Display - Signature
- Signature
Data - A function signature definition.
- Source
File - Source
Loc - Source
LocData - A “source location”: a filename (interned to an ID), a line, and a column.
- Table
- Table
Data - A table definition.
- Value
Enums§
- Const
Val - A constant concrete value during interpretation.
- Export
Kind - The kind of a Wasm export, including the specific entity index that this export directive exports.
- Frontend
Error - An error that occurs when translating Wasm to IR.
- Func
Decl - A declaration of a function: there is one
FuncDecl
perFunc
index. - Import
Kind - The kind of of a Wasm import, including the specific entity index that the import corresponds to.
- Interp
Result - The result of an interpreter session.
- Operator
- An operator in the IR, consuming arguments and producing results when executed.
- Side
Effect - Side-effects that an operator may have.
- Terminator
- Type
- Types in waffle’s IR.
- Value
Def - A definition of an SSA value.
Constants§
- WASM_
PAGE - The size of a single Wasm page, used in memory definitions.
Functions§
- const_
eval - Constant-evaluate the given operator with the given arguments, returning a constant result if possible to know.