Skip to content

[Mach-O] arm64e.x1 is mislabeled as arm64 in UI #8571

Description

@bdash

Version and Platform (required):

  • Binary Ninja Version: 6.1.10653-dev Ultimate, 30f6d3a0
  • OS: macos
  • OS Version: 26.6.2
  • CPU Architecture: arm64

Bug Description:
macOS 27 introduces a new arm64e.x1 CPU slice in many binaries that ship with the OS. This is a slice that is otherwise the same as arm64e, but assumes a minimum CPU baseline of Apple M6. When opening a binary containing an arm64e.x1 slice, it is reported as being a plain arm64 slice due to how our Mach-O code handles fallback when facing an unknown CPU subtype.

I expect this may result in behavioral problems if a binary contains both arm64 and arm64e.x1 slices, but I didn't find such a binary to test with.

arm64e.x1 has these aarch64 features available without any runtime detection:

#define __ARM_ARCH_8_6__ 1
#define __ARM_ARCH_8_7__ 1
#define __ARM_BF16_FORMAT_ALTERNATIVE 1
#define __ARM_FEATURE_BF16 1
#define __ARM_FEATURE_BF16_SCALAR_ARITHMETIC 1
#define __ARM_FEATURE_BF16_VECTOR_ARITHMETIC 1
#define __ARM_FEATURE_CSSC 1
#define __ARM_FEATURE_FP8 1
#define __ARM_FEATURE_LOCALLY_STREAMING 1
#define __ARM_FEATURE_MATMUL_INT8 1
#define __ARM_FEATURE_MEMORY_TAGGING 1
#define __ARM_FEATURE_PAUTH_LR 1
#define __ARM_FEATURE_SME 1
#define __ARM_FEATURE_SME2 1
#define __ARM_FEATURE_SME2p1 1
#define __ARM_FEATURE_SME_B16B16 1
#define __ARM_FEATURE_SME_F16F16 1
#define __ARM_FEATURE_SME_F8F16 1
#define __ARM_FEATURE_SME_F8F32 1
#define __ARM_FEATURE_SVE_B16B16 1

Steps To Reproduce:
Open /bin/ls from a macOS 27 system and look at the list of architectures in the Select Architecture dialog.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions