in src/dumper.rs [303:337]
fn get_object_info(
buf: Vec<u8>,
path: &Path,
filename: &str,
file_mapping: Option<Arc<PathMappings>>,
arch: Arch,
symbol_server: Option<&str>,
emit_inlines: bool,
) -> common::Result<ObjectInfo> {
let object_info = match peek(&buf, true /* check for fat binary */) {
FileFormat::Elf => {
ObjectInfo::from_elf(&buf, filename, Platform::Linux, file_mapping, emit_inlines)?
}
FileFormat::Pdb => get_pdb_object_info(&buf, path, filename, file_mapping, emit_inlines)?,
FileFormat::Pe => {
if let Ok(pdb_info) = get_pe_pdb_object_info(
&buf,
path,
filename,
file_mapping,
symbol_server,
emit_inlines,
) {
pdb_info
} else {
get_pe_object_info(&buf, path, filename)?
}
}
FileFormat::MachO => {
ObjectInfo::from_macho(&buf, filename, arch, file_mapping, emit_inlines)?
}
_ => anyhow::bail!("Unknown file format"),
};
Ok(object_info)
}