Crate portal_pc_waffle

Source
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 op_traits::SideEffect;
pub use passes::basic_opt::OptOptions;
pub use wasmparser;
pub use wasm_encoder;

Modules§

backend
Backend: IR to Wasm.
cfg
Lightweight CFG analyses.
entity
Type-safe indices and indexed containers.
op_traits
Metadata on operators.
passes
Passes.
pool
Pooled list data structure.
util

Macros§

declare_entity

Structs§

Block
BlockDef
BlockTarget
ControlTag
ControlTagData
Debug
DebugMap
A map from ranges of offsets in the original Wasm file to source locations.
Export
FrontendOptions
Options to control the Wasm-to-bytecode translation process.
Func
FunctionBody
The body of a function, as an SSA-based intermediate representation.
FunctionBodyDisplay
A wrapper around a FunctionBody together with some auxiliary information to perform a pretty-print of that function.
Global
GlobalData
HoleTarget
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
InterpContext
Context for the IR interpreter. Corresponds roughly to Wasm module state.
InterpMemory
The state of one interpreter memory.
InterpStackFrame
One stack frame in the interpreted execution context.
InterpTable
The state of one interpreter table.
Local
Memory
MemoryArg
An argument to a memory load or store, specifying which memory, alignment and an optional offset.
MemoryData
A memory definition.
MemorySegment
Module
ModuleDisplay
Signature
SourceFile
SourceLoc
SourceLocData
A “source location”: a filename (interned to an ID), a line, and a column.
Table
TableData
Value
ValueRecord
WithMutablility
Something, alsong with whether it can be mutated
WithNullable
Something, alsong with whether it can be null

Enums§

ConstVal
A constant concrete value during interpretation.
ExportKind
FrontendError
An error that occurs when translating Wasm to IR.
FuncDecl
FuncDecl represents the various forms in which we can hold a function body: not yet parsed, parsed into full IR, recompiled into new bytecode, or an import (none of the above).
Handler
An exception’s handler
HeapType
a Type that can be stored on the heap
ImportKind
InterpResult
The result of an interpreter session.
Operator
An operator in the IR, consuming arguments and producing results when executed.
SignatureData
StorageType
A storage type
Terminator
Type
Types in waffle’s IR.
ValueDef
A definition of an SSA value.

Constants§

WASM_PAGE
The size of a single Wasm page, used in memory definitions.

Traits§

FuncCollector
Subtypes

Functions§

const_eval
Constant-evaluate the given operator with the given arguments, returning a constant result if possible to know.
i2x
x2i

Type Aliases§

ExceptionTarget