[Mach-O] arm64e.x1 is mislabeled as arm64 in UI
@bdash is already working on this.
Since Sep 21, 2026.
Assessment
This issue has not been assessed yet.
Description
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.
- Dominant language
- C++
- Stars
- 1.3k
- Forks
- 298
- Avg merge
- 4d 13h
- Merged PRs (30d)
- 20
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Vector35/binaryninja-api
-
Difficulty 1/5 1-3 hours Newbie friendliness 88/100
Vector35/binaryninja-api#8540 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
Vector35/binaryninja-api#8446 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
Vector35/binaryninja-api#8444 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Vector35/binaryninja-api#8441 · 3 comments ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Vector35/binaryninja-api#8404 ·
All issues in Vector35/binaryninja-api
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
google/libultrahdr#485 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
godotengine/godot#123776 ·
-
bug
Difficulty 1/5 Under an hour Newbie friendliness 60/100
-
good first issue
Difficulty 1/5 Under an hour Newbie friendliness 90/100
-
good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
ros2/common_interfaces#344 ·