mirror of
https://github.com/fluencelabs/parity-wasm
synced 2025-04-24 23:02:15 +00:00
46 lines
1.5 KiB
Rust
46 lines
1.5 KiB
Rust
// This short example provides the utility to inspect
|
|
// wasm file data section.
|
|
|
|
extern crate parity_wasm;
|
|
|
|
use std::env;
|
|
|
|
fn main() {
|
|
|
|
// Example executable takes one argument which must
|
|
// refernce the existing file with a valid wasm module
|
|
let args = env::args().collect::<Vec<_>>();
|
|
if args.len() != 2 {
|
|
println!("Usage: {} somefile.wasm", args[0]);
|
|
return;
|
|
}
|
|
|
|
// Here we load module using dedicated for this purpose
|
|
// `deserialize_file` function (which works only with modules)
|
|
let module = parity_wasm::deserialize_file(&args[1]).expect("Failed to load module");
|
|
|
|
// We query module for data section. Note that not every valid
|
|
// wasm module must contain a data section. So in case the provided
|
|
// module does not contain data section, we panic with an error
|
|
let data_section = module.data_section().expect("no data section in module");
|
|
|
|
// Printing the total count of data segments
|
|
println!("Data segments: {}", data_section.entries().len());
|
|
|
|
let mut index = 0;
|
|
for entry in data_section.entries() {
|
|
// Printing the details info of each data segment
|
|
// see `elements::DataSegment` for more properties
|
|
// you can query
|
|
println!(" Entry #{}", index);
|
|
|
|
// This shows the initialization member of data segment
|
|
// (expression which must resolve in the linear memory location).
|
|
println!(" init: {}", entry.offset().code()[0]);
|
|
|
|
// This shows the total length of the data segment in bytes.
|
|
println!(" size: {}", entry.value().len());
|
|
|
|
index += 1;
|
|
}
|
|
} |