blob: 2d739a9ce2f68ddbf9cdef37e226b2d78b7cbbc3 [file] [log] [blame]
// 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;
}
}