1use dwat::prelude::*;
3use dwat::Dwarf;
4use std::fs::File;
5use memmap2::Mmap;
6
7fn main() -> anyhow::Result<()> {
8 let mut args = std::env::args().skip(1);
9 let path = args.next().unwrap_or_else(|| {
10 eprintln!("Usage: vars <path>");
11 std::process::exit(1);
12 });
13
14 let file = File::open(path).unwrap();
15 let mmap = unsafe { Mmap::map(&file) }?;
16 let dwarf = Dwarf::load(&*mmap)?;
17
18 let vars = dwarf.get_named_types::<dwat::Variable>()?;
19
20 for (name, var) in vars.into_iter() {
23 let typ = var.get_type(&dwarf)?;
24 if let dwat::Type::Union(u) = typ {
25 println!("{} : {}", name, u.to_string(&dwarf)?)
26 }
27 };
28
29 Ok(())
30}