fn get_object_info()

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)
}