in kernel-abi-check/src/macos.rs [16:33]
fn build_version<Mach: MachHeader>(macho64: &MachOFile<Mach>) -> Result<Option<Version>> {
let mut load_commands = macho64
.macho_load_commands()
.context("Cannot get Mach-O binary load commands")?;
while let Some(load_command) = load_commands.next().context("Cannot get load command")? {
if load_command.cmd() == LC_BUILD_VERSION {
let command = load_command.data::<BuildVersionCommand<Mach::Endian>>()?;
let version_u32 = command.minos.get(macho64.endian());
let major = (version_u32 >> 16) as usize;
let minor = ((version_u32 >> 8) as u8) as usize;
let patch = (version_u32 as u8) as usize;
return Ok(Some(Version::from(vec![major, minor, patch])));
}
}
Ok(None)
}