1use std::fs::File;
2use memmap2::Mmap;
3
4use dwat::prelude::*;
5use dwat::Dwarf;
6
7fn main() -> anyhow::Result<()> {
8 let mut args = std::env::args().skip(1);
9 let struct_name = args.next().unwrap_or_else(|| {
10 eprintln!("Usage: lookup <struct_name> <path> [verbosity]");
11 std::process::exit(1);
12 }).to_string();
13 let path = args.next().unwrap_or_else(|| {
14 eprintln!("Usage: lookup <struct_name> <path> [verbosity]");
15 std::process::exit(1);
16 });
17 let verbosity = args.next().unwrap_or_else(|| {
18 "0".to_string()
19 });
20
21 let verbosity = verbosity.parse::<u8>()?;
22
23 let file = File::open(path).unwrap();
24 let mmap = unsafe { Mmap::map(&file) }.unwrap();
25 let dwarf = Dwarf::load(&*mmap)?;
26
27 let found = dwarf.lookup_type::<dwat::Struct>(struct_name)?;
36 if let Some(found) = found {
37 println!("{}", found.to_string_verbose(&dwarf, verbosity)?);
38 }
39
40 Ok(())
41}