Jur*_*tas 3 macos build ios xcode12 apple-silicon
曾几何时,苹果推出了Arm64e架构。那是 2 年前的 Xcode 10.0 时期。从 A12 CPU 开始。如今,Xcode 12.4 在为 iOS 平台选择标准架构时仍然只有 Arm64 是默认的。
Arm64e 发生了什么?为什么它不是默认的?
另外,当我手动添加它并存档模拟器时,我得到:
ld:警告:忽略文件/Applications/Xcode12.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.iossim.a,文件/中缺少所需的架构arm64e Applications/Xcode12.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.iossim.a(3片)
这是怎么回事?这是否意味着M1 macs不支持PAC(指针验证码)?我有点困惑,但我还不能在 M1 mac 上测试。
ABI 尚未稳定。
自 A12(包括 M1)以来的所有设备都完全支持硬件中的指针身份验证(根据 ARM 手册的条款,FEAT_PAuth对于 A12/A12X/A13 和FEAT_PAuth2A14/M1)。
Apple 正在积极地将其用于自己的软件:内核缓存、所有应用程序、整个 dyld 共享缓存 - 这些都是为 arm64e 编译的。
但PAC一次又一次地出现弱点,为了修复这些弱点,苹果被迫多次更改ABI。这些更改中的每一个都需要更改编译器,并且完全破坏了向后兼容性。
因此,Apple 目前无法合理地拥有第 3 方 arm64e 二进制文件 - 每次 ABI 更改时它们都会崩溃。您可以自己构建和运行arm64e二进制文件,但在Apple决定时机成熟之前,第三方将仅支持arm64。