pub mod address;
pub mod die;
pub mod error;
pub mod expressions;
pub mod file;
pub mod function;
pub mod modules;
pub mod parser;
pub mod symbols;
pub mod types;
pub mod visitor;
#[cfg(test)]
pub mod test_utils;
use std::path::{Path, PathBuf};
pub use die::Die;
pub use error::Error;
pub use file::{Binary, DebugFile, SourceFile};
pub use gimli;
pub use symbols::{SymbolName, TypeName};
pub use types::{find_type_by_name, get_die_typename};
#[salsa::db]
pub trait DwarfDb: salsa::Database {
fn remap_path(&self, path: &Path) -> PathBuf {
let mut path = path.to_path_buf();
for (source, target) in self.get_source_map() {
if let Ok(stripped) = path.strip_prefix(source) {
tracing::debug!(
"Remapping {} from {} to {}",
path.display(),
source.display(),
target.display()
);
path = target.join(stripped);
}
}
path
}
fn get_source_map(&self) -> &[(PathBuf, PathBuf)];
}