diff options
Diffstat (limited to 'rust/examples/idb_import/src/addr_info.rs')
| -rw-r--r-- | rust/examples/idb_import/src/addr_info.rs | 57 |
1 files changed, 0 insertions, 57 deletions
diff --git a/rust/examples/idb_import/src/addr_info.rs b/rust/examples/idb_import/src/addr_info.rs deleted file mode 100644 index 8d1b1c1b..00000000 --- a/rust/examples/idb_import/src/addr_info.rs +++ /dev/null @@ -1,57 +0,0 @@ -use std::collections::HashMap; - -use anyhow::Result; - -use idb_rs::id0::ID0Section; -use idb_rs::til; - -#[derive(Default)] -pub struct AddrInfo<'a> { - // TODO does binja diferenciate comments types on the API? - pub comments: Vec<&'a [u8]>, - pub label: Option<&'a str>, - // TODO make this a ref - pub ty: Option<til::Type>, -} - -pub fn get_info(id0: &ID0Section, version: u16) -> Result<HashMap<u64, AddrInfo<'_>>> { - let mut addr_info: HashMap<u64, AddrInfo> = HashMap::new(); - - // the old style comments, most likely empty on new versions - let old_comments = id0.functions_and_comments()?.filter_map(|fc| { - use idb_rs::id0::FunctionsAndComments::*; - match fc { - Err(e) => Some(Err(e)), - Ok(Comment { address, comment }) => Some(Ok((address, comment))), - Ok(Name | Function(_) | Unknown { .. }) => None, - } - }); - for old_comment in old_comments { - let (addr, comment) = old_comment?; - let comment = comment.message(); - addr_info.entry(addr).or_default().comments.push(comment); - } - - // comments defined on the address information - for info in id0.address_info(version)? { - use idb_rs::id0::AddressInfo::*; - let (addr, info) = info?; - let entry = addr_info.entry(addr).or_default(); - match info { - Comment(comments) => entry.comments.push(comments.message()), - Label(name) => { - if let Some(_old) = entry.label.replace(name) { - panic!("Duplicated label for an address should be impossible this is most likelly a programing error") - } - } - TilType(ty) => { - if let Some(_old) = entry.ty.replace(ty) { - panic!("Duplicated type for an address should be impossible this is most likelly a programing error") - } - } - Other { .. } => {} - } - } - - Ok(addr_info) -} |
