diff options
Diffstat (limited to 'vendor/object-0.26.2/examples/objectmap.rs')
-rw-r--r-- | vendor/object-0.26.2/examples/objectmap.rs | 67 |
1 files changed, 0 insertions, 67 deletions
diff --git a/vendor/object-0.26.2/examples/objectmap.rs b/vendor/object-0.26.2/examples/objectmap.rs deleted file mode 100644 index de8d8a002..000000000 --- a/vendor/object-0.26.2/examples/objectmap.rs +++ /dev/null @@ -1,67 +0,0 @@ -use object::Object; -use std::{env, fs, process}; - -fn main() { - let mut args = env::args().skip(1); - if args.len() == 0 { - eprintln!( - "Usage: {} <file> [address] ...", - env::args().next().unwrap() - ); - process::exit(1); - } - - let file_path = args.next().unwrap(); - let file = match fs::File::open(&file_path) { - Ok(file) => file, - Err(err) => { - println!("Failed to open file '{}': {}", file_path, err,); - process::exit(1); - } - }; - let file = match unsafe { memmap2::Mmap::map(&file) } { - Ok(mmap) => mmap, - Err(err) => { - println!("Failed to map file '{}': {}", file_path, err,); - process::exit(1); - } - }; - let file = match object::File::parse(&*file) { - Ok(file) => file, - Err(err) => { - println!("Failed to parse file '{}': {}", file_path, err); - process::exit(1); - } - }; - - let map = file.object_map(); - - if args.len() == 0 { - for symbol in map.symbols() { - print_symbol(symbol, &map); - } - } else { - for arg in args { - let mut arg = &arg[..]; - if arg.starts_with("0x") { - arg = &arg[2..]; - } - let address = u64::from_str_radix(arg, 16).expect("Failed to parse address"); - if let Some(symbol) = map.get(address) { - print_symbol(symbol, &map); - } else { - println!("{:} not found", address); - } - } - } -} - -fn print_symbol(symbol: &object::ObjectMapEntry<'_>, map: &object::ObjectMap<'_>) { - println!( - "{:x} {:x} {} {}", - symbol.address(), - symbol.size(), - String::from_utf8_lossy(symbol.name()), - String::from_utf8_lossy(symbol.object(map)), - ); -} |