mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-09-19 14:20:19 +00:00
apple-sdk_27: init at 27.0 (#564039)
This commit is contained in:
@@ -121,7 +121,8 @@ Generally, only the last SDK release for a major version is packaged.
|
||||
|---------------|-------------|------------------------------|
|
||||
| 15.0–15.4 | 14.4 | `apple-sdk_14` / `apple-sdk` |
|
||||
| 16.0 | 15.0 | `apple-sdk_15` |
|
||||
| 26.0+ | 26.0+ | `apple-sdk_26`, etc |
|
||||
| 26.0 | 26.0 | `apple-sdk_26` |
|
||||
| 27.0+ | 27.0+ | `apple-sdk_27`, etc |
|
||||
|
||||
|
||||
#### Darwin Default SDK versions {#sec-darwin-troubleshooting-darwin-defaults}
|
||||
|
||||
@@ -22,5 +22,13 @@
|
||||
],
|
||||
"version": "26.5",
|
||||
"hash": "sha256-IkDNtiO7PP4GI6OszCNWE1Xb4iepCUKwQHYUyc9NgNA="
|
||||
},
|
||||
"27": {
|
||||
"urls": [
|
||||
"https://swcdn.apple.com/content/downloads/58/48/082-83364-A_KCEBOO2NJS/0d2rj4y5ucjlkgcvqt6f6a4pergug5tu2b/CLTools_macOSNMOS_SDK.pkg",
|
||||
"https://web.archive.org/web/20260910221111/https://swcdn.apple.com/content/downloads/58/48/082-83364-A_KCEBOO2NJS/0d2rj4y5ucjlkgcvqt6f6a4pergug5tu2b/CLTools_macOSNMOS_SDK.pkg"
|
||||
],
|
||||
"version": "27.0",
|
||||
"hash": "sha256-qTDE8wu3pfk21WtgboKHYH/MiJnC8gKpDeMyrRJZaP8="
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,6 +100,7 @@ stdenvNoCC.mkDerivation (
|
||||
|
||||
passthru = {
|
||||
sdkroot = finalAttrs.finalPackage + "/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk";
|
||||
tests = callPackage ./tests { };
|
||||
};
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
10
pkgs/by-name/ap/apple-sdk/tests/15/apple-sdk_15-test.m
Normal file
10
pkgs/by-name/ap/apple-sdk/tests/15/apple-sdk_15-test.m
Normal file
@@ -0,0 +1,10 @@
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
|
||||
int main() {
|
||||
if (@available(macOS 15, *)) {
|
||||
printf("%f\n", (double) __sqrtf16(2));
|
||||
} else {
|
||||
printf(":(\n");
|
||||
}
|
||||
}
|
||||
2
pkgs/by-name/ap/apple-sdk/tests/15/meson.build
Normal file
2
pkgs/by-name/ap/apple-sdk/tests/15/meson.build
Normal file
@@ -0,0 +1,2 @@
|
||||
project('apple-sdk_15-test', 'objc')
|
||||
executable('apple-sdk_15-test', 'apple-sdk_15-test.m', install : true)
|
||||
21
pkgs/by-name/ap/apple-sdk/tests/26/apple-sdk_26-test.m
Normal file
21
pkgs/by-name/ap/apple-sdk/tests/26/apple-sdk_26-test.m
Normal file
@@ -0,0 +1,21 @@
|
||||
#include <stdio.h>
|
||||
#include <spawn.h>
|
||||
|
||||
int main(int argc, char** argv, char** env) {
|
||||
if (@available(macOS 26, *)) {
|
||||
int ret;
|
||||
pid_t pid;
|
||||
posix_spawn_file_actions_t actions;
|
||||
if ((ret = posix_spawn_file_actions_init(&actions))) {
|
||||
printf("cannot create file_actions\n");
|
||||
}
|
||||
if ((ret = posix_spawn_file_actions_addchdir(&actions, "/tmp"))) {
|
||||
printf("cannot add_chdir\n");
|
||||
}
|
||||
if ((ret = posix_spawnp(&pid, "pwd", &actions, NULL, argv, env))) {
|
||||
printf("cannot spawn\n");
|
||||
}
|
||||
} else {
|
||||
printf(":(\n");
|
||||
}
|
||||
}
|
||||
2
pkgs/by-name/ap/apple-sdk/tests/26/meson.build
Normal file
2
pkgs/by-name/ap/apple-sdk/tests/26/meson.build
Normal file
@@ -0,0 +1,2 @@
|
||||
project('apple-sdk_26-test', 'objc')
|
||||
executable('apple-sdk_26-test', 'apple-sdk_26-test.m', install : true)
|
||||
15
pkgs/by-name/ap/apple-sdk/tests/27/apple-sdk_27-test.m
Normal file
15
pkgs/by-name/ap/apple-sdk/tests/27/apple-sdk_27-test.m
Normal file
@@ -0,0 +1,15 @@
|
||||
#include <sys/unistd.h>
|
||||
#include <stdio.h>
|
||||
|
||||
int main() {
|
||||
if (@available(macOS 27, *)) {
|
||||
int ret = dup3(1, 3, 0);
|
||||
if (ret < 0) {
|
||||
printf("dup3(1,3,0) failed with error\n");
|
||||
return -1;
|
||||
}
|
||||
dprintf(3, ":)\n");
|
||||
} else {
|
||||
printf(":(\n");
|
||||
}
|
||||
}
|
||||
2
pkgs/by-name/ap/apple-sdk/tests/27/meson.build
Normal file
2
pkgs/by-name/ap/apple-sdk/tests/27/meson.build
Normal file
@@ -0,0 +1,2 @@
|
||||
project('apple-sdk_27-test', 'objc')
|
||||
executable('apple-sdk_27-test', 'apple-sdk_27-test.m', install : true)
|
||||
61
pkgs/by-name/ap/apple-sdk/tests/default.nix
Normal file
61
pkgs/by-name/ap/apple-sdk/tests/default.nix
Normal file
@@ -0,0 +1,61 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
ninja,
|
||||
meson,
|
||||
apple-sdk_15,
|
||||
apple-sdk_26,
|
||||
apple-sdk_27,
|
||||
}:
|
||||
{
|
||||
apple-sdk_15 = stdenv.mkDerivation {
|
||||
name = "apple-sdk_15-test";
|
||||
|
||||
src = ./15;
|
||||
|
||||
nativeBuildInputs = [
|
||||
meson
|
||||
ninja
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
apple-sdk_15
|
||||
];
|
||||
|
||||
meta.mainProgram = "apple-sdk_15-test";
|
||||
};
|
||||
|
||||
apple-sdk_26 = stdenv.mkDerivation {
|
||||
name = "apple-sdk_26-test";
|
||||
|
||||
src = ./26;
|
||||
|
||||
nativeBuildInputs = [
|
||||
meson
|
||||
ninja
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
apple-sdk_26
|
||||
];
|
||||
|
||||
meta.mainProgram = "apple-sdk_26-test";
|
||||
};
|
||||
|
||||
apple-sdk_27 = stdenv.mkDerivation {
|
||||
name = "apple-sdk_27-test";
|
||||
|
||||
src = ./27;
|
||||
|
||||
nativeBuildInputs = [
|
||||
meson
|
||||
ninja
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
apple-sdk_27
|
||||
];
|
||||
|
||||
meta.mainProgram = "apple-sdk_27-test";
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,205 @@
|
||||
--- llvm/include/llvm/BinaryFormat/MachO.h
|
||||
+++ llvm/include/llvm/BinaryFormat/MachO.h
|
||||
@@ -1641,6 +1641,7 @@
|
||||
CPU_SUBTYPE_ARM64_ALL = 0,
|
||||
CPU_SUBTYPE_ARM64_V8 = 1,
|
||||
CPU_SUBTYPE_ARM64E = 2,
|
||||
+ CPU_SUBTYPE_ARM64E_X1 = 12,
|
||||
};
|
||||
|
||||
enum CPUSubTypeARM64_32 { CPU_SUBTYPE_ARM64_32_V8 = 1 };
|
||||
--- llvm/include/llvm/TargetParser/Triple.h
|
||||
+++ llvm/include/llvm/TargetParser/Triple.h
|
||||
@@ -147,6 +147,7 @@
|
||||
ARMSubArch_v4t,
|
||||
|
||||
AArch64SubArch_arm64e,
|
||||
+ AArch64SubArch_arm64e_x1,
|
||||
AArch64SubArch_arm64ec,
|
||||
|
||||
KalimbaSubArch_v3,
|
||||
@@ -1008,6 +1009,11 @@
|
||||
getSubArch() == Triple::AArch64SubArch_arm64e;
|
||||
}
|
||||
|
||||
+ bool isArm64e_x1() const {
|
||||
+ return getArch() == Triple::aarch64 &&
|
||||
+ getSubArch() == Triple::AArch64SubArch_arm64e_x1;
|
||||
+ }
|
||||
+
|
||||
/// Tests whether the target is X32.
|
||||
bool isX32() const {
|
||||
EnvironmentType Env = getEnvironment();
|
||||
--- llvm/include/llvm/TextAPI/Architecture.def
|
||||
+++ llvm/include/llvm/TextAPI/Architecture.def
|
||||
@@ -37,7 +37,7 @@
|
||||
///
|
||||
ARCHINFO(arm64, arm64, MachO::CPU_TYPE_ARM64, MachO::CPU_SUBTYPE_ARM64_ALL, 64)
|
||||
ARCHINFO(arm64e, arm64e, MachO::CPU_TYPE_ARM64, MachO::CPU_SUBTYPE_ARM64E, 64)
|
||||
-
|
||||
+ARCHINFO(arm64e_x1, arm64e.x1, MachO::CPU_TYPE_ARM64, MachO::CPU_SUBTYPE_ARM64E_X1, 64)
|
||||
|
||||
///
|
||||
/// ARM64_32 architectures sorted by cpu sub type id
|
||||
--- llvm/lib/BinaryFormat/MachO.cpp
|
||||
+++ llvm/lib/BinaryFormat/MachO.cpp
|
||||
@@ -60,6 +60,8 @@
|
||||
return (MachO::CPUSubTypeARM64)MachO::CPU_SUBTYPE_ARM64_32_V8;
|
||||
if (T.isArm64e())
|
||||
return MachO::CPU_SUBTYPE_ARM64E;
|
||||
+ if (T.isArm64e_x1())
|
||||
+ return MachO::CPU_SUBTYPE_ARM64E_X1;
|
||||
|
||||
return MachO::CPU_SUBTYPE_ARM64_ALL;
|
||||
}
|
||||
--- llvm/lib/Object/MachOObjectFile.cpp
|
||||
+++ llvm/lib/Object/MachOObjectFile.cpp
|
||||
@@ -2807,6 +2807,12 @@
|
||||
if (ArchFlag)
|
||||
*ArchFlag = "arm64e";
|
||||
return Triple("arm64e-apple-darwin");
|
||||
+ case MachO::CPU_SUBTYPE_ARM64E_X1:
|
||||
+ if (McpuDefault)
|
||||
+ *McpuDefault = "apple-a20";
|
||||
+ if (ArchFlag)
|
||||
+ *ArchFlag = "arm64e.x1";
|
||||
+ return Triple("arm64e.x1-apple-darwin");
|
||||
default:
|
||||
return Triple();
|
||||
}
|
||||
--- llvm/lib/TargetParser/Triple.cpp
|
||||
+++ llvm/lib/TargetParser/Triple.cpp
|
||||
@@ -114,6 +114,8 @@
|
||||
return "arm64ec";
|
||||
if (SubArch == AArch64SubArch_arm64e)
|
||||
return "arm64e";
|
||||
+ if (SubArch == AArch64SubArch_arm64e_x1)
|
||||
+ return "arm64e.x1";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -515,6 +517,7 @@
|
||||
.Case("arm64", Triple::aarch64)
|
||||
.Case("arm64_32", Triple::aarch64_32)
|
||||
.Case("arm64e", Triple::aarch64)
|
||||
+ .Case("arm64e.x1", Triple::aarch64)
|
||||
.Case("arm64ec", Triple::aarch64)
|
||||
.Case("arm", Triple::arm)
|
||||
.Case("armeb", Triple::armeb)
|
||||
@@ -720,6 +723,8 @@
|
||||
|
||||
if (SubArchName == "arm64e")
|
||||
return Triple::AArch64SubArch_arm64e;
|
||||
+ if (SubArchName == "arm64e.x1")
|
||||
+ return Triple::AArch64SubArch_arm64e_x1;
|
||||
|
||||
if (SubArchName == "arm64ec")
|
||||
return Triple::AArch64SubArch_arm64ec;
|
||||
--- llvm/test/tools/llvm-readobj/MachO/file-headers-arm64.test
|
||||
+++ llvm/test/tools/llvm-readobj/MachO/file-headers-arm64.test
|
||||
@@ -13,6 +13,11 @@
|
||||
# RUN: llvm-readobj -h %t.arm64e \
|
||||
# RUN: | FileCheck %s --strict-whitespace --match-full-lines -DFILE=%t.arm64e --check-prefix=ARM64 -DSUBTYPE="CPU_SUBTYPE_ARM64E (0x2)"
|
||||
|
||||
+## Check subtype Arm64E.X1:
|
||||
+# RUN: yaml2obj %s -o %t.arm64e.x1 -DSUBTYPE=0xC
|
||||
+# RUN: llvm-readobj -h %t.arm64e.x1 \
|
||||
+# RUN: | FileCheck %s --strict-whitespace --match-full-lines -DFILE=%t.arm64e.x1 --check-prefix=ARM64 -DSUBTYPE="CPU_SUBTYPE_ARM64E_X1 (0xC)"
|
||||
+
|
||||
# ARM64:File: [[FILE]]
|
||||
# ARM64-NEXT:Format: Mach-O arm64
|
||||
# ARM64-NEXT:Arch: aarch64
|
||||
--- llvm/tools/llvm-objdump/MachODump.cpp
|
||||
+++ llvm/tools/llvm-objdump/MachODump.cpp
|
||||
@@ -2323,6 +2323,10 @@
|
||||
outs() << " cputype CPU_TYPE_ARM64\n";
|
||||
outs() << " cpusubtype CPU_SUBTYPE_ARM64E\n";
|
||||
break;
|
||||
+ case MachO::CPU_SUBTYPE_ARM64E_X1:
|
||||
+ outs() << " cputype CPU_TYPE_ARM64\n";
|
||||
+ outs() << " cpusubtype CPU_SUBTYPE_ARM64E_X1\n";
|
||||
+ break;
|
||||
default:
|
||||
printUnknownCPUType(cputype, cpusubtype);
|
||||
break;
|
||||
@@ -8213,6 +8217,9 @@
|
||||
case MachO::CPU_SUBTYPE_ARM64E:
|
||||
outs() << " E";
|
||||
break;
|
||||
+ case MachO::CPU_SUBTYPE_ARM64E_X1:
|
||||
+ outs() << " E.X1";
|
||||
+ break;
|
||||
default:
|
||||
outs() << format(" %10d", cpusubtype & ~MachO::CPU_SUBTYPE_MASK);
|
||||
break;
|
||||
--- llvm/tools/llvm-readobj/MachODumper.cpp
|
||||
+++ llvm/tools/llvm-readobj/MachODumper.cpp
|
||||
@@ -170,6 +170,7 @@
|
||||
LLVM_READOBJ_ENUM_ENT(MachO, CPU_SUBTYPE_ARM64_ALL),
|
||||
LLVM_READOBJ_ENUM_ENT(MachO, CPU_SUBTYPE_ARM64_V8),
|
||||
LLVM_READOBJ_ENUM_ENT(MachO, CPU_SUBTYPE_ARM64E),
|
||||
+ LLVM_READOBJ_ENUM_ENT(MachO, CPU_SUBTYPE_ARM64E_X1),
|
||||
};
|
||||
|
||||
const EnumEntry<uint32_t> MachOHeaderCpuSubtypesSPARC[] = {
|
||||
--- llvm/unittests/BinaryFormat/MachOTest.cpp
|
||||
+++ llvm/unittests/BinaryFormat/MachOTest.cpp
|
||||
@@ -57,6 +57,7 @@
|
||||
CHECK_CPUTYPE("thumbv7-apple-darwin", MachO::CPU_TYPE_ARM);
|
||||
CHECK_CPUTYPE("arm64-apple-darwin", MachO::CPU_TYPE_ARM64);
|
||||
CHECK_CPUTYPE("arm64e-apple-darwin", MachO::CPU_TYPE_ARM64);
|
||||
+ CHECK_CPUTYPE("arm64e.x1-apple-darwin", MachO::CPU_TYPE_ARM64);
|
||||
CHECK_CPUTYPE("arm64_32-apple-darwin", MachO::CPU_TYPE_ARM64_32);
|
||||
|
||||
{
|
||||
@@ -98,6 +99,7 @@
|
||||
CHECK_CPUSUBTYPE("thumbv6-apple-darwin", MachO::CPU_SUBTYPE_ARM_V6);
|
||||
CHECK_CPUSUBTYPE("arm64-apple-darwin", MachO::CPU_SUBTYPE_ARM64_ALL);
|
||||
CHECK_CPUSUBTYPE("arm64e-apple-darwin", MachO::CPU_SUBTYPE_ARM64E);
|
||||
+ CHECK_CPUSUBTYPE("arm64e.x1-apple-darwin", MachO::CPU_SUBTYPE_ARM64E_X1);
|
||||
CHECK_CPUSUBTYPE("arm64_32-apple-darwin", MachO::CPU_SUBTYPE_ARM64_32_V8);
|
||||
|
||||
{
|
||||
--- /dev/null
|
||||
+++ lld/test/MachO/arm64-x1.s
|
||||
@@ -0,0 +1,20 @@
|
||||
+# REQUIRES: aarch64
|
||||
+
|
||||
+## Test that arm64.x1-macos is ignored instead of causing an error.
|
||||
+## linked re-exported dylibs that only declare arm64e-macos targets, even if targeting arm64.
|
||||
+# arm64 and arm64e are ABI compatible (same CPU type), and ld64 accepts this.
|
||||
+
|
||||
+# RUN: rm -rf %t; split-file --no-leading-lines %s %t
|
||||
+
|
||||
+# RUN: llvm-mc -filetype=obj -triple=arm64-apple-macos -o %t/test.o /dev/null
|
||||
+
|
||||
+# RUN: %no-arg-lld -syslibroot %t/sdk -lSystem -dylib -arch arm64 \
|
||||
+# RUN: -platform_version macos 15 26 %t/test.o -o /dev/null
|
||||
+
|
||||
+#--- sdk/usr/lib/libSystem.tbd
|
||||
+--- !tapi-tbd
|
||||
+tbd-version: 4
|
||||
+targets: [ arm64-macos, arm64e.x1-macos ]
|
||||
+install-name: '/usr/lib/libSystem.dylib'
|
||||
+current-version: 0001.001.1
|
||||
+...
|
||||
--- /dev/null
|
||||
+++ llvm/test/tools/llvm-readobj/macho-arm64e_x1.test
|
||||
@@ -0,0 +1,17 @@
|
||||
+# RUN: yaml2obj %s -o %t.o
|
||||
+# RUN: llvm-readobj -h %t.o | FileCheck %s
|
||||
+
|
||||
+# CHECK: Magic: Magic64 (0xFEEDFACF)
|
||||
+# CHECK: CpuType: Arm64 (0x100000C)
|
||||
+# CHECK: CpuSubType: CPU_SUBTYPE_ARM64E_X1 (0xC)
|
||||
+
|
||||
+--- !mach-o
|
||||
+FileHeader:
|
||||
+ magic: 0xFEEDFACF
|
||||
+ cputype: 0x0100000C
|
||||
+ cpusubtype: 0x0000000C
|
||||
+ filetype: 0x00000001
|
||||
+ ncmds: 0
|
||||
+ sizeofcmds: 0
|
||||
+ flags: 0x00000000
|
||||
+ reserved: 0x00000000
|
||||
@@ -0,0 +1,205 @@
|
||||
--- llvm/include/llvm/BinaryFormat/MachO.h
|
||||
+++ llvm/include/llvm/BinaryFormat/MachO.h
|
||||
@@ -1641,6 +1641,7 @@
|
||||
CPU_SUBTYPE_ARM64_ALL = 0,
|
||||
CPU_SUBTYPE_ARM64_V8 = 1,
|
||||
CPU_SUBTYPE_ARM64E = 2,
|
||||
+ CPU_SUBTYPE_ARM64E_X1 = 12,
|
||||
};
|
||||
|
||||
enum CPUSubTypeARM64_32 { CPU_SUBTYPE_ARM64_32_V8 = 1 };
|
||||
--- llvm/include/llvm/TargetParser/Triple.h
|
||||
+++ llvm/include/llvm/TargetParser/Triple.h
|
||||
@@ -147,6 +147,7 @@
|
||||
ARMSubArch_v4t,
|
||||
|
||||
AArch64SubArch_arm64e,
|
||||
+ AArch64SubArch_arm64e_x1,
|
||||
AArch64SubArch_arm64ec,
|
||||
|
||||
KalimbaSubArch_v3,
|
||||
@@ -1042,6 +1043,11 @@
|
||||
getSubArch() == Triple::AArch64SubArch_arm64e;
|
||||
}
|
||||
|
||||
+ bool isArm64e_x1() const {
|
||||
+ return getArch() == Triple::aarch64 &&
|
||||
+ getSubArch() == Triple::AArch64SubArch_arm64e_x1;
|
||||
+ }
|
||||
+
|
||||
/// Tests whether the target is X32.
|
||||
bool isX32() const {
|
||||
EnvironmentType Env = getEnvironment();
|
||||
--- llvm/include/llvm/TextAPI/Architecture.def
|
||||
+++ llvm/include/llvm/TextAPI/Architecture.def
|
||||
@@ -37,7 +37,7 @@
|
||||
///
|
||||
ARCHINFO(arm64, arm64, MachO::CPU_TYPE_ARM64, MachO::CPU_SUBTYPE_ARM64_ALL, 64)
|
||||
ARCHINFO(arm64e, arm64e, MachO::CPU_TYPE_ARM64, MachO::CPU_SUBTYPE_ARM64E, 64)
|
||||
-
|
||||
+ARCHINFO(arm64e_x1, arm64e.x1, MachO::CPU_TYPE_ARM64, MachO::CPU_SUBTYPE_ARM64E_X1, 64)
|
||||
|
||||
///
|
||||
/// ARM64_32 architectures sorted by cpu sub type id
|
||||
--- llvm/lib/BinaryFormat/MachO.cpp
|
||||
+++ llvm/lib/BinaryFormat/MachO.cpp
|
||||
@@ -60,6 +60,8 @@
|
||||
return (MachO::CPUSubTypeARM64)MachO::CPU_SUBTYPE_ARM64_32_V8;
|
||||
if (T.isArm64e())
|
||||
return MachO::CPU_SUBTYPE_ARM64E;
|
||||
+ if (T.isArm64e_x1())
|
||||
+ return MachO::CPU_SUBTYPE_ARM64E_X1;
|
||||
|
||||
return MachO::CPU_SUBTYPE_ARM64_ALL;
|
||||
}
|
||||
--- llvm/lib/Object/MachOObjectFile.cpp
|
||||
+++ llvm/lib/Object/MachOObjectFile.cpp
|
||||
@@ -2807,6 +2807,12 @@
|
||||
if (ArchFlag)
|
||||
*ArchFlag = "arm64e";
|
||||
return Triple("arm64e-apple-darwin");
|
||||
+ case MachO::CPU_SUBTYPE_ARM64E_X1:
|
||||
+ if (McpuDefault)
|
||||
+ *McpuDefault = "apple-a20";
|
||||
+ if (ArchFlag)
|
||||
+ *ArchFlag = "arm64e.x1";
|
||||
+ return Triple("arm64e.x1-apple-darwin");
|
||||
default:
|
||||
return Triple();
|
||||
}
|
||||
--- llvm/lib/TargetParser/Triple.cpp
|
||||
+++ llvm/lib/TargetParser/Triple.cpp
|
||||
@@ -114,6 +114,8 @@
|
||||
return "arm64ec";
|
||||
if (SubArch == AArch64SubArch_arm64e)
|
||||
return "arm64e";
|
||||
+ if (SubArch == AArch64SubArch_arm64e_x1)
|
||||
+ return "arm64e.x1";
|
||||
break;
|
||||
case Triple::dxil:
|
||||
switch (SubArch) {
|
||||
@@ -549,6 +551,7 @@
|
||||
.Case("arm64", Triple::aarch64)
|
||||
.Case("arm64_32", Triple::aarch64_32)
|
||||
.Case("arm64e", Triple::aarch64)
|
||||
+ .Case("arm64e.x1", Triple::aarch64)
|
||||
.Case("arm64ec", Triple::aarch64)
|
||||
.Case("arm", Triple::arm)
|
||||
.Case("armeb", Triple::armeb)
|
||||
@@ -764,6 +767,8 @@
|
||||
|
||||
if (SubArchName == "arm64e")
|
||||
return Triple::AArch64SubArch_arm64e;
|
||||
+ if (SubArchName == "arm64e.x1")
|
||||
+ return Triple::AArch64SubArch_arm64e_x1;
|
||||
|
||||
if (SubArchName == "arm64ec")
|
||||
return Triple::AArch64SubArch_arm64ec;
|
||||
--- llvm/test/tools/llvm-readobj/MachO/file-headers-arm64.test
|
||||
+++ llvm/test/tools/llvm-readobj/MachO/file-headers-arm64.test
|
||||
@@ -13,6 +13,11 @@
|
||||
# RUN: llvm-readobj -h %t.arm64e \
|
||||
# RUN: | FileCheck %s --strict-whitespace --match-full-lines -DFILE=%t.arm64e --check-prefix=ARM64 -DSUBTYPE="CPU_SUBTYPE_ARM64E (0x2)"
|
||||
|
||||
+## Check subtype Arm64E.X1:
|
||||
+# RUN: yaml2obj %s -o %t.arm64e.x1 -DSUBTYPE=0xC
|
||||
+# RUN: llvm-readobj -h %t.arm64e.x1 \
|
||||
+# RUN: | FileCheck %s --strict-whitespace --match-full-lines -DFILE=%t.arm64e.x1 --check-prefix=ARM64 -DSUBTYPE="CPU_SUBTYPE_ARM64E_X1 (0xC)"
|
||||
+
|
||||
# ARM64:File: [[FILE]]
|
||||
# ARM64-NEXT:Format: Mach-O arm64
|
||||
# ARM64-NEXT:Arch: aarch64
|
||||
--- llvm/tools/llvm-objdump/MachODump.cpp
|
||||
+++ llvm/tools/llvm-objdump/MachODump.cpp
|
||||
@@ -2323,6 +2323,10 @@
|
||||
outs() << " cputype CPU_TYPE_ARM64\n";
|
||||
outs() << " cpusubtype CPU_SUBTYPE_ARM64E\n";
|
||||
break;
|
||||
+ case MachO::CPU_SUBTYPE_ARM64E_X1:
|
||||
+ outs() << " cputype CPU_TYPE_ARM64\n";
|
||||
+ outs() << " cpusubtype CPU_SUBTYPE_ARM64E_X1\n";
|
||||
+ break;
|
||||
default:
|
||||
printUnknownCPUType(cputype, cpusubtype);
|
||||
break;
|
||||
@@ -8325,6 +8329,9 @@
|
||||
case MachO::CPU_SUBTYPE_ARM64E:
|
||||
outs() << " E";
|
||||
break;
|
||||
+ case MachO::CPU_SUBTYPE_ARM64E_X1:
|
||||
+ outs() << " E.X1";
|
||||
+ break;
|
||||
default:
|
||||
outs() << format(" %10d", cpusubtype & ~MachO::CPU_SUBTYPE_MASK);
|
||||
break;
|
||||
--- llvm/tools/llvm-readobj/MachODumper.cpp
|
||||
+++ llvm/tools/llvm-readobj/MachODumper.cpp
|
||||
@@ -170,6 +170,7 @@
|
||||
LLVM_READOBJ_ENUM_ENT(MachO, CPU_SUBTYPE_ARM64_ALL),
|
||||
LLVM_READOBJ_ENUM_ENT(MachO, CPU_SUBTYPE_ARM64_V8),
|
||||
LLVM_READOBJ_ENUM_ENT(MachO, CPU_SUBTYPE_ARM64E),
|
||||
+ LLVM_READOBJ_ENUM_ENT(MachO, CPU_SUBTYPE_ARM64E_X1),
|
||||
};
|
||||
|
||||
const EnumEntry<uint32_t> MachOHeaderCpuSubtypesSPARC[] = {
|
||||
--- llvm/unittests/BinaryFormat/MachOTest.cpp
|
||||
+++ llvm/unittests/BinaryFormat/MachOTest.cpp
|
||||
@@ -66,6 +66,7 @@
|
||||
CHECK_CPUTYPE("thumbv7-apple-darwin", MachO::CPU_TYPE_ARM);
|
||||
CHECK_CPUTYPE("arm64-apple-darwin", MachO::CPU_TYPE_ARM64);
|
||||
CHECK_CPUTYPE("arm64e-apple-darwin", MachO::CPU_TYPE_ARM64);
|
||||
+ CHECK_CPUTYPE("arm64e.x1-apple-darwin", MachO::CPU_TYPE_ARM64);
|
||||
CHECK_CPUTYPE("arm64_32-apple-darwin", MachO::CPU_TYPE_ARM64_32);
|
||||
|
||||
{
|
||||
@@ -107,6 +108,7 @@
|
||||
CHECK_CPUSUBTYPE("thumbv6-apple-darwin", MachO::CPU_SUBTYPE_ARM_V6);
|
||||
CHECK_CPUSUBTYPE("arm64-apple-darwin", MachO::CPU_SUBTYPE_ARM64_ALL);
|
||||
CHECK_CPUSUBTYPE("arm64e-apple-darwin", MachO::CPU_SUBTYPE_ARM64E);
|
||||
+ CHECK_CPUSUBTYPE("arm64e.x1-apple-darwin", MachO::CPU_SUBTYPE_ARM64E_X1);
|
||||
CHECK_CPUSUBTYPE("arm64_32-apple-darwin", MachO::CPU_SUBTYPE_ARM64_32_V8);
|
||||
|
||||
{
|
||||
--- /dev/null
|
||||
+++ lld/test/MachO/arm64-x1.s
|
||||
@@ -0,0 +1,20 @@
|
||||
+# REQUIRES: aarch64
|
||||
+
|
||||
+## Test that arm64.x1-macos is ignored instead of causing an error.
|
||||
+## linked re-exported dylibs that only declare arm64e-macos targets, even if targeting arm64.
|
||||
+# arm64 and arm64e are ABI compatible (same CPU type), and ld64 accepts this.
|
||||
+
|
||||
+# RUN: rm -rf %t; split-file --no-leading-lines %s %t
|
||||
+
|
||||
+# RUN: llvm-mc -filetype=obj -triple=arm64-apple-macos -o %t/test.o /dev/null
|
||||
+
|
||||
+# RUN: %no-arg-lld -syslibroot %t/sdk -lSystem -dylib -arch arm64 \
|
||||
+# RUN: -platform_version macos 15 26 %t/test.o -o /dev/null
|
||||
+
|
||||
+#--- sdk/usr/lib/libSystem.tbd
|
||||
+--- !tapi-tbd
|
||||
+tbd-version: 4
|
||||
+targets: [ arm64-macos, arm64e.x1-macos ]
|
||||
+install-name: '/usr/lib/libSystem.dylib'
|
||||
+current-version: 0001.001.1
|
||||
+...
|
||||
--- /dev/null
|
||||
+++ llvm/test/tools/llvm-readobj/macho-arm64e_x1.test
|
||||
@@ -0,0 +1,17 @@
|
||||
+# RUN: yaml2obj %s -o %t.o
|
||||
+# RUN: llvm-readobj -h %t.o | FileCheck %s
|
||||
+
|
||||
+# CHECK: Magic: Magic64 (0xFEEDFACF)
|
||||
+# CHECK: CpuType: Arm64 (0x100000C)
|
||||
+# CHECK: CpuSubType: CPU_SUBTYPE_ARM64E_X1 (0xC)
|
||||
+
|
||||
+--- !mach-o
|
||||
+FileHeader:
|
||||
+ magic: 0xFEEDFACF
|
||||
+ cputype: 0x0100000C
|
||||
+ cpusubtype: 0x0000000C
|
||||
+ filetype: 0x00000001
|
||||
+ ncmds: 0
|
||||
+ sizeofcmds: 0
|
||||
+ flags: 0x00000000
|
||||
+ reserved: 0x00000000
|
||||
@@ -0,0 +1,205 @@
|
||||
--- llvm/include/llvm/BinaryFormat/MachO.h
|
||||
+++ llvm/include/llvm/BinaryFormat/MachO.h
|
||||
@@ -1641,6 +1641,7 @@
|
||||
CPU_SUBTYPE_ARM64_ALL = 0,
|
||||
CPU_SUBTYPE_ARM64_V8 = 1,
|
||||
CPU_SUBTYPE_ARM64E = 2,
|
||||
+ CPU_SUBTYPE_ARM64E_X1 = 12,
|
||||
|
||||
// arm64e uses the capability bits to encode ptrauth ABI information.
|
||||
// Bit 63 marks the binary as Versioned.
|
||||
--- llvm/include/llvm/TargetParser/Triple.h
|
||||
+++ llvm/include/llvm/TargetParser/Triple.h
|
||||
@@ -146,6 +146,7 @@
|
||||
ARMSubArch_v4t,
|
||||
|
||||
AArch64SubArch_arm64e,
|
||||
+ AArch64SubArch_arm64e_x1,
|
||||
AArch64SubArch_arm64ec,
|
||||
|
||||
KalimbaSubArch_v3,
|
||||
@@ -1077,6 +1077,11 @@
|
||||
getSubArch() == Triple::AArch64SubArch_arm64e;
|
||||
}
|
||||
|
||||
+ bool isArm64e_x1() const {
|
||||
+ return getArch() == Triple::aarch64 &&
|
||||
+ getSubArch() == Triple::AArch64SubArch_arm64e_x1;
|
||||
+ }
|
||||
+
|
||||
// Tests whether the target is N32.
|
||||
bool isABIN32() const {
|
||||
EnvironmentType Env = getEnvironment();
|
||||
--- llvm/include/llvm/TextAPI/Architecture.def
|
||||
+++ llvm/include/llvm/TextAPI/Architecture.def
|
||||
@@ -37,7 +37,7 @@
|
||||
///
|
||||
ARCHINFO(arm64, arm64, MachO::CPU_TYPE_ARM64, MachO::CPU_SUBTYPE_ARM64_ALL, 64)
|
||||
ARCHINFO(arm64e, arm64e, MachO::CPU_TYPE_ARM64, MachO::CPU_SUBTYPE_ARM64E, 64)
|
||||
-
|
||||
+ARCHINFO(arm64e_x1, arm64e.x1, MachO::CPU_TYPE_ARM64, MachO::CPU_SUBTYPE_ARM64E_X1, 64)
|
||||
|
||||
///
|
||||
/// ARM64_32 architectures sorted by cpu sub type id
|
||||
--- llvm/lib/BinaryFormat/MachO.cpp
|
||||
+++ llvm/lib/BinaryFormat/MachO.cpp
|
||||
@@ -60,6 +60,8 @@
|
||||
return (MachO::CPUSubTypeARM64)MachO::CPU_SUBTYPE_ARM64_32_V8;
|
||||
if (T.isArm64e())
|
||||
return MachO::CPU_SUBTYPE_ARM64E;
|
||||
+ if (T.isArm64e_x1())
|
||||
+ return MachO::CPU_SUBTYPE_ARM64E_X1;
|
||||
|
||||
return MachO::CPU_SUBTYPE_ARM64_ALL;
|
||||
}
|
||||
--- llvm/lib/Object/MachOObjectFile.cpp
|
||||
+++ llvm/lib/Object/MachOObjectFile.cpp
|
||||
@@ -2806,6 +2806,12 @@
|
||||
if (ArchFlag)
|
||||
*ArchFlag = "arm64e";
|
||||
return Triple("arm64e-apple-darwin");
|
||||
+ case MachO::CPU_SUBTYPE_ARM64E_X1:
|
||||
+ if (McpuDefault)
|
||||
+ *McpuDefault = "apple-a20";
|
||||
+ if (ArchFlag)
|
||||
+ *ArchFlag = "arm64e.x1";
|
||||
+ return Triple("arm64e.x1-apple-darwin");
|
||||
default:
|
||||
return Triple();
|
||||
}
|
||||
--- llvm/lib/TargetParser/Triple.cpp
|
||||
+++ llvm/lib/TargetParser/Triple.cpp
|
||||
@@ -114,6 +191,8 @@
|
||||
return "arm64ec";
|
||||
if (SubArch == AArch64SubArch_arm64e)
|
||||
return "arm64e";
|
||||
+ if (SubArch == AArch64SubArch_arm64e_x1)
|
||||
+ return "arm64e.x1";
|
||||
break;
|
||||
case Triple::spirv:
|
||||
switch (SubArch) {
|
||||
@@ -574,6 +576,7 @@
|
||||
.Case("arm64", Triple::aarch64)
|
||||
.Case("arm64_32", Triple::aarch64_32)
|
||||
.Case("arm64e", Triple::aarch64)
|
||||
+ .Case("arm64e.x1", Triple::aarch64)
|
||||
.Case("arm64ec", Triple::aarch64)
|
||||
.Case("arm", Triple::arm)
|
||||
.Case("armeb", Triple::armeb)
|
||||
@@ -793,6 +796,8 @@
|
||||
|
||||
if (SubArchName == "arm64e")
|
||||
return Triple::AArch64SubArch_arm64e;
|
||||
+ if (SubArchName == "arm64e.x1")
|
||||
+ return Triple::AArch64SubArch_arm64e_x1;
|
||||
|
||||
if (SubArchName == "arm64ec")
|
||||
return Triple::AArch64SubArch_arm64ec;
|
||||
--- llvm/test/tools/llvm-readobj/MachO/file-headers-arm64.test
|
||||
+++ llvm/test/tools/llvm-readobj/MachO/file-headers-arm64.test
|
||||
@@ -13,6 +13,11 @@
|
||||
# RUN: llvm-readobj -h %t.arm64e \
|
||||
# RUN: | FileCheck %s --strict-whitespace --match-full-lines -DFILE=%t.arm64e --check-prefix=ARM64 -DSUBTYPE="CPU_SUBTYPE_ARM64E (0x2)"
|
||||
|
||||
+## Check subtype Arm64E.X1:
|
||||
+# RUN: yaml2obj %s -o %t.arm64e.x1 -DSUBTYPE=0xC
|
||||
+# RUN: llvm-readobj -h %t.arm64e.x1 \
|
||||
+# RUN: | FileCheck %s --strict-whitespace --match-full-lines -DFILE=%t.arm64e.x1 --check-prefix=ARM64 -DSUBTYPE="CPU_SUBTYPE_ARM64E_X1 (0xC)"
|
||||
+
|
||||
# ARM64:File: [[FILE]]
|
||||
# ARM64-NEXT:Format: Mach-O arm64
|
||||
# ARM64-NEXT:Arch: aarch64
|
||||
--- llvm/tools/llvm-objdump/MachODump.cpp
|
||||
+++ llvm/tools/llvm-objdump/MachODump.cpp
|
||||
@@ -2323,6 +2323,10 @@
|
||||
outs() << " cputype CPU_TYPE_ARM64\n";
|
||||
outs() << " cpusubtype CPU_SUBTYPE_ARM64E\n";
|
||||
break;
|
||||
+ case MachO::CPU_SUBTYPE_ARM64E_X1:
|
||||
+ outs() << " cputype CPU_TYPE_ARM64\n";
|
||||
+ outs() << " cpusubtype CPU_SUBTYPE_ARM64E_X1\n";
|
||||
+ break;
|
||||
default:
|
||||
printUnknownCPUType(cputype, cpusubtype);
|
||||
break;
|
||||
@@ -8337,6 +8341,9 @@
|
||||
case MachO::CPU_SUBTYPE_ARM64E:
|
||||
outs() << " E";
|
||||
break;
|
||||
+ case MachO::CPU_SUBTYPE_ARM64E_X1:
|
||||
+ outs() << " E.X1";
|
||||
+ break;
|
||||
default:
|
||||
outs() << format(" %10d", cpusubtype & ~MachO::CPU_SUBTYPE_MASK);
|
||||
break;
|
||||
--- llvm/tools/llvm-readobj/MachODumper.cpp
|
||||
+++ llvm/tools/llvm-readobj/MachODumper.cpp
|
||||
@@ -170,6 +170,7 @@
|
||||
LLVM_READOBJ_ENUM_ENT(MachO, CPU_SUBTYPE_ARM64_ALL),
|
||||
LLVM_READOBJ_ENUM_ENT(MachO, CPU_SUBTYPE_ARM64_V8),
|
||||
LLVM_READOBJ_ENUM_ENT(MachO, CPU_SUBTYPE_ARM64E),
|
||||
+ LLVM_READOBJ_ENUM_ENT(MachO, CPU_SUBTYPE_ARM64E_X1),
|
||||
};
|
||||
|
||||
const EnumEntry<uint32_t> MachOHeaderCpuSubtypesSPARC[] = {
|
||||
--- llvm/unittests/BinaryFormat/MachOTest.cpp
|
||||
+++ llvm/unittests/BinaryFormat/MachOTest.cpp
|
||||
@@ -66,6 +66,7 @@
|
||||
CHECK_CPUTYPE("thumbv7-apple-darwin", MachO::CPU_TYPE_ARM);
|
||||
CHECK_CPUTYPE("arm64-apple-darwin", MachO::CPU_TYPE_ARM64);
|
||||
CHECK_CPUTYPE("arm64e-apple-darwin", MachO::CPU_TYPE_ARM64);
|
||||
+ CHECK_CPUTYPE("arm64e.x1-apple-darwin", MachO::CPU_TYPE_ARM64);
|
||||
CHECK_CPUTYPE("arm64_32-apple-darwin", MachO::CPU_TYPE_ARM64_32);
|
||||
|
||||
{
|
||||
@@ -107,6 +108,7 @@
|
||||
CHECK_CPUSUBTYPE("thumbv6-apple-darwin", MachO::CPU_SUBTYPE_ARM_V6);
|
||||
CHECK_CPUSUBTYPE("arm64-apple-darwin", MachO::CPU_SUBTYPE_ARM64_ALL);
|
||||
CHECK_CPUSUBTYPE("arm64e-apple-darwin", MachO::CPU_SUBTYPE_ARM64E);
|
||||
+ CHECK_CPUSUBTYPE("arm64e.x1-apple-darwin", MachO::CPU_SUBTYPE_ARM64E_X1);
|
||||
CHECK_CPUSUBTYPE("arm64_32-apple-darwin", MachO::CPU_SUBTYPE_ARM64_32_V8);
|
||||
|
||||
{
|
||||
--- /dev/null
|
||||
+++ lld/test/MachO/arm64-x1.s
|
||||
@@ -0,0 +1,20 @@
|
||||
+# REQUIRES: aarch64
|
||||
+
|
||||
+## Test that arm64.x1-macos is ignored instead of causing an error.
|
||||
+## linked re-exported dylibs that only declare arm64e-macos targets, even if targeting arm64.
|
||||
+# arm64 and arm64e are ABI compatible (same CPU type), and ld64 accepts this.
|
||||
+
|
||||
+# RUN: rm -rf %t; split-file --no-leading-lines %s %t
|
||||
+
|
||||
+# RUN: llvm-mc -filetype=obj -triple=arm64-apple-macos -o %t/test.o /dev/null
|
||||
+
|
||||
+# RUN: %no-arg-lld -syslibroot %t/sdk -lSystem -dylib -arch arm64 \
|
||||
+# RUN: -platform_version macos 15 26 %t/test.o -o /dev/null
|
||||
+
|
||||
+#--- sdk/usr/lib/libSystem.tbd
|
||||
+--- !tapi-tbd
|
||||
+tbd-version: 4
|
||||
+targets: [ arm64-macos, arm64e.x1-macos ]
|
||||
+install-name: '/usr/lib/libSystem.dylib'
|
||||
+current-version: 0001.001.1
|
||||
+...
|
||||
--- /dev/null
|
||||
+++ llvm/test/tools/llvm-readobj/macho-arm64e_x1.test
|
||||
@@ -0,0 +1,17 @@
|
||||
+# RUN: yaml2obj %s -o %t.o
|
||||
+# RUN: llvm-readobj -h %t.o | FileCheck %s
|
||||
+
|
||||
+# CHECK: Magic: Magic64 (0xFEEDFACF)
|
||||
+# CHECK: CpuType: Arm64 (0x100000C)
|
||||
+# CHECK: CpuSubType: CPU_SUBTYPE_ARM64E_X1 (0xC)
|
||||
+
|
||||
+--- !mach-o
|
||||
+FileHeader:
|
||||
+ magic: 0xFEEDFACF
|
||||
+ cputype: 0x0100000C
|
||||
+ cpusubtype: 0x0000000C
|
||||
+ filetype: 0x00000001
|
||||
+ ncmds: 0
|
||||
+ sizeofcmds: 0
|
||||
+ flags: 0x00000000
|
||||
+ reserved: 0x00000000
|
||||
@@ -0,0 +1,205 @@
|
||||
--- llvm/include/llvm/BinaryFormat/MachO.h
|
||||
+++ llvm/include/llvm/BinaryFormat/MachO.h
|
||||
@@ -1715,6 +1715,7 @@
|
||||
CPU_SUBTYPE_ARM64_ALL = 0,
|
||||
CPU_SUBTYPE_ARM64_V8 = 1,
|
||||
CPU_SUBTYPE_ARM64E = 2,
|
||||
+ CPU_SUBTYPE_ARM64E_X1 = 12,
|
||||
|
||||
// arm64e uses the capability bits to encode ptrauth ABI information.
|
||||
// Bit 63 marks the binary as Versioned.
|
||||
--- llvm/include/llvm/TargetParser/Triple.h
|
||||
+++ llvm/include/llvm/TargetParser/Triple.h
|
||||
@@ -157,6 +157,7 @@
|
||||
ARMSubArch_v4t,
|
||||
|
||||
AArch64SubArch_arm64e,
|
||||
+ AArch64SubArch_arm64e_x1,
|
||||
AArch64SubArch_arm64ec,
|
||||
AArch64SubArch_lfi,
|
||||
|
||||
@@ -1220,6 +1221,11 @@
|
||||
getSubArch() == Triple::AArch64SubArch_arm64e;
|
||||
}
|
||||
|
||||
+ bool isArm64e_x1() const {
|
||||
+ return getArch() == Triple::aarch64 &&
|
||||
+ getSubArch() == Triple::AArch64SubArch_arm64e_x1;
|
||||
+ }
|
||||
+
|
||||
// Tests whether the target is N32.
|
||||
bool isABIN32() const {
|
||||
EnvironmentType Env = getEnvironment();
|
||||
--- llvm/include/llvm/TextAPI/Architecture.def
|
||||
+++ llvm/include/llvm/TextAPI/Architecture.def
|
||||
@@ -39,7 +39,7 @@
|
||||
///
|
||||
ARCHINFO(arm64, arm64, MachO::CPU_TYPE_ARM64, MachO::CPU_SUBTYPE_ARM64_ALL, 64)
|
||||
ARCHINFO(arm64e, arm64e, MachO::CPU_TYPE_ARM64, MachO::CPU_SUBTYPE_ARM64E, 64)
|
||||
-
|
||||
+ARCHINFO(arm64e_x1, arm64e.x1, MachO::CPU_TYPE_ARM64, MachO::CPU_SUBTYPE_ARM64E_X1, 64)
|
||||
|
||||
///
|
||||
/// ARM64_32 architectures sorted by cpu sub type id
|
||||
--- llvm/lib/BinaryFormat/MachO.cpp
|
||||
+++ llvm/lib/BinaryFormat/MachO.cpp
|
||||
@@ -66,6 +66,8 @@
|
||||
return (MachO::CPUSubTypeARM64)MachO::CPU_SUBTYPE_ARM64_32_V8;
|
||||
if (T.isArm64e())
|
||||
return MachO::CPU_SUBTYPE_ARM64E;
|
||||
+ if (T.isArm64e_x1())
|
||||
+ return MachO::CPU_SUBTYPE_ARM64E_X1;
|
||||
|
||||
return MachO::CPU_SUBTYPE_ARM64_ALL;
|
||||
}
|
||||
--- llvm/lib/Object/MachOObjectFile.cpp
|
||||
+++ llvm/lib/Object/MachOObjectFile.cpp
|
||||
@@ -2919,6 +2919,12 @@
|
||||
if (ArchFlag)
|
||||
*ArchFlag = "arm64e";
|
||||
return Triple("arm64e-apple-darwin");
|
||||
+ case MachO::CPU_SUBTYPE_ARM64E_X1:
|
||||
+ if (McpuDefault)
|
||||
+ *McpuDefault = "apple-a20";
|
||||
+ if (ArchFlag)
|
||||
+ *ArchFlag = "arm64e.x1";
|
||||
+ return Triple("arm64e.x1-apple-darwin");
|
||||
default:
|
||||
return Triple();
|
||||
}
|
||||
--- llvm/lib/TargetParser/Triple.cpp
|
||||
+++ llvm/lib/TargetParser/Triple.cpp
|
||||
@@ -191,6 +191,8 @@
|
||||
return "arm64ec";
|
||||
if (SubArch == AArch64SubArch_arm64e)
|
||||
return "arm64e";
|
||||
+ if (SubArch == AArch64SubArch_arm64e_x1)
|
||||
+ return "arm64e.x1";
|
||||
if (SubArch == AArch64SubArch_lfi)
|
||||
return "aarch64_lfi";
|
||||
break;
|
||||
@@ -612,6 +614,7 @@
|
||||
.Case("arm64", Triple::aarch64)
|
||||
.Case("arm64_32", Triple::aarch64_32)
|
||||
.Case("arm64e", Triple::aarch64)
|
||||
+ .Case("arm64e.x1", Triple::aarch64)
|
||||
.Case("arm64ec", Triple::aarch64)
|
||||
.Case("arm", Triple::arm)
|
||||
.Case("armeb", Triple::armeb)
|
||||
@@ -739,6 +742,8 @@
|
||||
|
||||
if (SubArchName == "arm64e")
|
||||
return Triple::AArch64SubArch_arm64e;
|
||||
+ if (SubArchName == "arm64e.x1")
|
||||
+ return Triple::AArch64SubArch_arm64e_x1;
|
||||
|
||||
if (SubArchName == "arm64ec")
|
||||
return Triple::AArch64SubArch_arm64ec;
|
||||
--- llvm/test/tools/llvm-readobj/MachO/file-headers-arm64.test
|
||||
+++ llvm/test/tools/llvm-readobj/MachO/file-headers-arm64.test
|
||||
@@ -13,6 +13,11 @@
|
||||
# RUN: llvm-readobj -h %t.arm64e \
|
||||
# RUN: | FileCheck %s --strict-whitespace --match-full-lines -DFILE=%t.arm64e --check-prefix=ARM64 -DSUBTYPE="CPU_SUBTYPE_ARM64E (0x2)"
|
||||
|
||||
+## Check subtype Arm64E.X1:
|
||||
+# RUN: yaml2obj %s -o %t.arm64e.x1 -DSUBTYPE=0xC
|
||||
+# RUN: llvm-readobj -h %t.arm64e.x1 \
|
||||
+# RUN: | FileCheck %s --strict-whitespace --match-full-lines -DFILE=%t.arm64e.x1 --check-prefix=ARM64 -DSUBTYPE="CPU_SUBTYPE_ARM64E_X1 (0xC)"
|
||||
+
|
||||
# ARM64:File: [[FILE]]
|
||||
# ARM64-NEXT:Format: Mach-O arm64
|
||||
# ARM64-NEXT:Arch: aarch64
|
||||
--- llvm/tools/llvm-objdump/MachODump.cpp
|
||||
+++ llvm/tools/llvm-objdump/MachODump.cpp
|
||||
@@ -2344,6 +2344,10 @@
|
||||
outs() << " cputype CPU_TYPE_ARM64\n";
|
||||
outs() << " cpusubtype CPU_SUBTYPE_ARM64E\n";
|
||||
break;
|
||||
+ case MachO::CPU_SUBTYPE_ARM64E_X1:
|
||||
+ outs() << " cputype CPU_TYPE_ARM64\n";
|
||||
+ outs() << " cpusubtype CPU_SUBTYPE_ARM64E_X1\n";
|
||||
+ break;
|
||||
default:
|
||||
printUnknownCPUType(cputype, cpusubtype);
|
||||
break;
|
||||
@@ -8472,6 +8476,9 @@
|
||||
case MachO::CPU_SUBTYPE_ARM64E:
|
||||
outs() << " E";
|
||||
break;
|
||||
+ case MachO::CPU_SUBTYPE_ARM64E_X1:
|
||||
+ outs() << " E.X1";
|
||||
+ break;
|
||||
default:
|
||||
outs() << format(" %10d", cpusubtype & ~MachO::CPU_SUBTYPE_MASK);
|
||||
break;
|
||||
--- llvm/tools/llvm-readobj/MachODumper.cpp
|
||||
+++ llvm/tools/llvm-readobj/MachODumper.cpp
|
||||
@@ -190,6 +190,7 @@
|
||||
LLVM_READOBJ_ENUM_ENT(MachO, CPU_SUBTYPE_ARM64_ALL),
|
||||
LLVM_READOBJ_ENUM_ENT(MachO, CPU_SUBTYPE_ARM64_V8),
|
||||
LLVM_READOBJ_ENUM_ENT(MachO, CPU_SUBTYPE_ARM64E),
|
||||
+ LLVM_READOBJ_ENUM_ENT(MachO, CPU_SUBTYPE_ARM64E_X1),
|
||||
};
|
||||
constexpr auto MachOHeaderCpuSubtypesARM64 =
|
||||
BUILD_ENUM_STRINGS(MachOHeaderCpuSubtypesARM64Defs);
|
||||
--- llvm/unittests/BinaryFormat/MachOTest.cpp
|
||||
+++ llvm/unittests/BinaryFormat/MachOTest.cpp
|
||||
@@ -66,6 +66,7 @@
|
||||
CHECK_CPUTYPE("thumbv7-apple-darwin", MachO::CPU_TYPE_ARM);
|
||||
CHECK_CPUTYPE("arm64-apple-darwin", MachO::CPU_TYPE_ARM64);
|
||||
CHECK_CPUTYPE("arm64e-apple-darwin", MachO::CPU_TYPE_ARM64);
|
||||
+ CHECK_CPUTYPE("arm64e.x1-apple-darwin", MachO::CPU_TYPE_ARM64);
|
||||
CHECK_CPUTYPE("arm64_32-apple-darwin", MachO::CPU_TYPE_ARM64_32);
|
||||
|
||||
{
|
||||
@@ -107,6 +108,7 @@
|
||||
CHECK_CPUSUBTYPE("thumbv6-apple-darwin", MachO::CPU_SUBTYPE_ARM_V6);
|
||||
CHECK_CPUSUBTYPE("arm64-apple-darwin", MachO::CPU_SUBTYPE_ARM64_ALL);
|
||||
CHECK_CPUSUBTYPE("arm64e-apple-darwin", MachO::CPU_SUBTYPE_ARM64E);
|
||||
+ CHECK_CPUSUBTYPE("arm64e.x1-apple-darwin", MachO::CPU_SUBTYPE_ARM64E_X1);
|
||||
CHECK_CPUSUBTYPE("arm64_32-apple-darwin", MachO::CPU_SUBTYPE_ARM64_32_V8);
|
||||
CHECK_CPUSUBTYPE("armv8m.main-apple-darwin", MachO::CPU_SUBTYPE_ARM_V8M_MAIN);
|
||||
CHECK_CPUSUBTYPE("armv8m.base-apple-darwin", MachO::CPU_SUBTYPE_ARM_V8M_BASE);
|
||||
--- /dev/null
|
||||
+++ lld/test/MachO/arm64-x1.s
|
||||
@@ -0,0 +1,20 @@
|
||||
+# REQUIRES: aarch64
|
||||
+
|
||||
+## Test that arm64.x1-macos is ignored instead of causing an error.
|
||||
+## linked re-exported dylibs that only declare arm64e-macos targets, even if targeting arm64.
|
||||
+# arm64 and arm64e are ABI compatible (same CPU type), and ld64 accepts this.
|
||||
+
|
||||
+# RUN: rm -rf %t; split-file --no-leading-lines %s %t
|
||||
+
|
||||
+# RUN: llvm-mc -filetype=obj -triple=arm64-apple-macos -o %t/test.o /dev/null
|
||||
+
|
||||
+# RUN: %no-arg-lld -syslibroot %t/sdk -lSystem -dylib -arch arm64 \
|
||||
+# RUN: -platform_version macos 15 26 %t/test.o -o /dev/null
|
||||
+
|
||||
+#--- sdk/usr/lib/libSystem.tbd
|
||||
+--- !tapi-tbd
|
||||
+tbd-version: 4
|
||||
+targets: [ arm64-macos, arm64e.x1-macos ]
|
||||
+install-name: '/usr/lib/libSystem.dylib'
|
||||
+current-version: 0001.001.1
|
||||
+...
|
||||
--- /dev/null
|
||||
+++ llvm/test/tools/llvm-readobj/macho-arm64e_x1.test
|
||||
@@ -0,0 +1,17 @@
|
||||
+# RUN: yaml2obj %s -o %t.o
|
||||
+# RUN: llvm-readobj -h %t.o | FileCheck %s
|
||||
+
|
||||
+# CHECK: Magic: Magic64 (0xFEEDFACF)
|
||||
+# CHECK: CpuType: Arm64 (0x100000C)
|
||||
+# CHECK: CpuSubType: CPU_SUBTYPE_ARM64E_X1 (0xC)
|
||||
+
|
||||
+--- !mach-o
|
||||
+FileHeader:
|
||||
+ magic: 0xFEEDFACF
|
||||
+ cputype: 0x0100000C
|
||||
+ cpusubtype: 0x0000000C
|
||||
+ filetype: 0x00000001
|
||||
+ ncmds: 0
|
||||
+ sizeofcmds: 0
|
||||
+ flags: 0x00000000
|
||||
+ reserved: 0x00000000
|
||||
@@ -263,6 +263,21 @@ stdenv.mkDerivation (
|
||||
# This patch is a backport of the target parsing changes in LLVM 23, which fixes the problem.
|
||||
# Hopefully, Apple does not change the version number scheme again any time soon.
|
||||
(getVersionFile "llvm/backport-darwin-triple-parsing.patch")
|
||||
]
|
||||
++ lib.optionals (lib.versionOlder release_version "22") [
|
||||
# Needed to add arm64e.x1 support, as the enum name differs from the architecture name
|
||||
(fetchpatch {
|
||||
name = "llvm-textapi-separate-arch-name-enum-label.patch";
|
||||
url = "https://github.com/llvm/llvm-project/commit/477a65a051ce151895193f8dede1262fdc251132.patch";
|
||||
stripLen = 1;
|
||||
hash = "sha256-XXteX2zK5TzFQX+XhLzUtikY4PkCWF1f8l5MshelzX4=";
|
||||
})
|
||||
]
|
||||
++ lib.optionals (lib.versionOlder release_version "23") [
|
||||
# Needed to link with the macOS 27 sdk, as it has libraries linked for arm64e.x1
|
||||
# a new arm64 subtype that gives more pointer authentication machinery.
|
||||
# Vendored backport of the patch for LLVM 23
|
||||
(getVersionFile "llvm/backport-minimal-arm64e_x1-support.patch")
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -52,6 +52,27 @@
|
||||
path = ../21;
|
||||
}
|
||||
];
|
||||
"llvm/backport-minimal-arm64e_x1-support.patch" = [
|
||||
{
|
||||
after = "18";
|
||||
before = "19";
|
||||
path = ../18;
|
||||
}
|
||||
{
|
||||
after = "19";
|
||||
before = "20";
|
||||
path = ../19;
|
||||
}
|
||||
{
|
||||
after = "20";
|
||||
before = "22";
|
||||
path = ../20;
|
||||
}
|
||||
{
|
||||
after = "22";
|
||||
path = ../22;
|
||||
}
|
||||
];
|
||||
"llvm/gnu-install-dirs.patch" = [
|
||||
{
|
||||
after = "23";
|
||||
|
||||
@@ -50,6 +50,8 @@ in
|
||||
"lldb/backport-ParseTrieEntries-fixes.patch" = [ { path = ./patches; } ];
|
||||
# Update backport of the Darwin triple changes for macOS 27.
|
||||
"llvm/backport-darwin-triple-parsing.patch" = [ { path = ./patches; } ];
|
||||
# Backport support for arm64e.x1, the new cpu subtype for A20 and M6
|
||||
"llvm/backport-minimal-arm64e_x1-support.patch" = [ { path = ./patches; } ];
|
||||
};
|
||||
}).overrideScope
|
||||
(
|
||||
|
||||
@@ -0,0 +1,205 @@
|
||||
--- llvm/include/llvm/BinaryFormat/MachO.h
|
||||
+++ llvm/include/llvm/BinaryFormat/MachO.h
|
||||
@@ -1643,6 +1643,7 @@
|
||||
CPU_SUBTYPE_ARM64_ALL = 0,
|
||||
CPU_SUBTYPE_ARM64_V8 = 1,
|
||||
CPU_SUBTYPE_ARM64E = 2,
|
||||
+ CPU_SUBTYPE_ARM64E_X1 = 12,
|
||||
|
||||
// arm64 reserves bits in the high byte for subtype-specific flags.
|
||||
// On arm64e, the 6 low bits represent the ptrauth ABI version.
|
||||
--- llvm/include/llvm/TargetParser/Triple.h
|
||||
+++ llvm/include/llvm/TargetParser/Triple.h
|
||||
@@ -147,6 +147,7 @@
|
||||
ARMSubArch_v4t,
|
||||
|
||||
AArch64SubArch_arm64e,
|
||||
+ AArch64SubArch_arm64e_x1,
|
||||
AArch64SubArch_arm64ec,
|
||||
|
||||
KalimbaSubArch_v3,
|
||||
@@ -1048,6 +1049,11 @@
|
||||
getSubArch() == Triple::AArch64SubArch_arm64e;
|
||||
}
|
||||
|
||||
+ bool isArm64e_x1() const {
|
||||
+ return getArch() == Triple::aarch64 &&
|
||||
+ getSubArch() == Triple::AArch64SubArch_arm64e_x1;
|
||||
+ }
|
||||
+
|
||||
/// Tests whether the target is X32.
|
||||
bool isX32() const {
|
||||
EnvironmentType Env = getEnvironment();
|
||||
--- llvm/include/llvm/TextAPI/Architecture.def
|
||||
+++ llvm/include/llvm/TextAPI/Architecture.def
|
||||
@@ -37,7 +37,7 @@
|
||||
///
|
||||
ARCHINFO(arm64, arm64, MachO::CPU_TYPE_ARM64, MachO::CPU_SUBTYPE_ARM64_ALL, 64)
|
||||
ARCHINFO(arm64e, arm64e, MachO::CPU_TYPE_ARM64, MachO::CPU_SUBTYPE_ARM64E, 64)
|
||||
-
|
||||
+ARCHINFO(arm64e_x1, arm64e.x1, MachO::CPU_TYPE_ARM64, MachO::CPU_SUBTYPE_ARM64E_X1, 64)
|
||||
|
||||
///
|
||||
/// ARM64_32 architectures sorted by cpu sub type id
|
||||
--- llvm/lib/BinaryFormat/MachO.cpp
|
||||
+++ llvm/lib/BinaryFormat/MachO.cpp
|
||||
@@ -60,6 +60,8 @@
|
||||
return (MachO::CPUSubTypeARM64)MachO::CPU_SUBTYPE_ARM64_32_V8;
|
||||
if (T.isArm64e())
|
||||
return MachO::CPU_SUBTYPE_ARM64E;
|
||||
+ if (T.isArm64e_x1())
|
||||
+ return MachO::CPU_SUBTYPE_ARM64E_X1;
|
||||
|
||||
return MachO::CPU_SUBTYPE_ARM64_ALL;
|
||||
}
|
||||
--- llvm/lib/Object/MachOObjectFile.cpp
|
||||
+++ llvm/lib/Object/MachOObjectFile.cpp
|
||||
@@ -2810,6 +2810,12 @@
|
||||
if (ArchFlag)
|
||||
*ArchFlag = "arm64e";
|
||||
return Triple("arm64e-apple-darwin");
|
||||
+ case MachO::CPU_SUBTYPE_ARM64E_X1:
|
||||
+ if (McpuDefault)
|
||||
+ *McpuDefault = "apple-a20";
|
||||
+ if (ArchFlag)
|
||||
+ *ArchFlag = "arm64e.x1";
|
||||
+ return Triple("arm64e.x1-apple-darwin");
|
||||
default:
|
||||
return Triple();
|
||||
}
|
||||
--- llvm/lib/TargetParser/Triple.cpp
|
||||
+++ llvm/lib/TargetParser/Triple.cpp
|
||||
@@ -114,6 +114,8 @@
|
||||
return "arm64ec";
|
||||
if (SubArch == AArch64SubArch_arm64e)
|
||||
return "arm64e";
|
||||
+ if (SubArch == AArch64SubArch_arm64e_x1)
|
||||
+ return "arm64e.x1";
|
||||
break;
|
||||
case Triple::dxil:
|
||||
switch (SubArch) {
|
||||
@@ -550,6 +552,7 @@
|
||||
.Case("arm64", Triple::aarch64)
|
||||
.Case("arm64_32", Triple::aarch64_32)
|
||||
.Case("arm64e", Triple::aarch64)
|
||||
+ .Case("arm64e.x1", Triple::aarch64)
|
||||
.Case("arm64ec", Triple::aarch64)
|
||||
.Case("arm", Triple::arm)
|
||||
.Case("armeb", Triple::armeb)
|
||||
@@ -766,6 +769,8 @@
|
||||
|
||||
if (SubArchName == "arm64e")
|
||||
return Triple::AArch64SubArch_arm64e;
|
||||
+ if (SubArchName == "arm64e.x1")
|
||||
+ return Triple::AArch64SubArch_arm64e_x1;
|
||||
|
||||
if (SubArchName == "arm64ec")
|
||||
return Triple::AArch64SubArch_arm64ec;
|
||||
--- llvm/test/tools/llvm-readobj/MachO/file-headers-arm64.test
|
||||
+++ llvm/test/tools/llvm-readobj/MachO/file-headers-arm64.test
|
||||
@@ -13,6 +13,11 @@
|
||||
# RUN: llvm-readobj -h %t.arm64e \
|
||||
# RUN: | FileCheck %s --strict-whitespace --match-full-lines -DFILE=%t.arm64e --check-prefix=ARM64 -DSUBTYPE="CPU_SUBTYPE_ARM64E (0x2)"
|
||||
|
||||
+## Check subtype Arm64E.X1:
|
||||
+# RUN: yaml2obj %s -o %t.arm64e.x1 -DSUBTYPE=0xC
|
||||
+# RUN: llvm-readobj -h %t.arm64e.x1 \
|
||||
+# RUN: | FileCheck %s --strict-whitespace --match-full-lines -DFILE=%t.arm64e.x1 --check-prefix=ARM64 -DSUBTYPE="CPU_SUBTYPE_ARM64E_X1 (0xC)"
|
||||
+
|
||||
# ARM64:File: [[FILE]]
|
||||
# ARM64-NEXT:Format: Mach-O arm64{{e?}}
|
||||
# ARM64-NEXT:Arch: aarch64
|
||||
--- llvm/tools/llvm-objdump/MachODump.cpp
|
||||
+++ llvm/tools/llvm-objdump/MachODump.cpp
|
||||
@@ -2323,6 +2323,10 @@
|
||||
outs() << " cputype CPU_TYPE_ARM64\n";
|
||||
outs() << " cpusubtype CPU_SUBTYPE_ARM64E\n";
|
||||
break;
|
||||
+ case MachO::CPU_SUBTYPE_ARM64E_X1:
|
||||
+ outs() << " cputype CPU_TYPE_ARM64\n";
|
||||
+ outs() << " cpusubtype CPU_SUBTYPE_ARM64E_X1\n";
|
||||
+ break;
|
||||
default:
|
||||
printUnknownCPUType(cputype, cpusubtype);
|
||||
break;
|
||||
@@ -8333,6 +8337,9 @@
|
||||
case MachO::CPU_SUBTYPE_ARM64E:
|
||||
outs() << " E";
|
||||
break;
|
||||
+ case MachO::CPU_SUBTYPE_ARM64E_X1:
|
||||
+ outs() << " E.X1";
|
||||
+ break;
|
||||
default:
|
||||
outs() << format(" %10d", cpusubtype & ~MachO::CPU_SUBTYPE_MASK);
|
||||
break;
|
||||
--- llvm/tools/llvm-readobj/MachODumper.cpp
|
||||
+++ llvm/tools/llvm-readobj/MachODumper.cpp
|
||||
@@ -170,6 +170,7 @@
|
||||
LLVM_READOBJ_ENUM_ENT(MachO, CPU_SUBTYPE_ARM64_ALL),
|
||||
LLVM_READOBJ_ENUM_ENT(MachO, CPU_SUBTYPE_ARM64_V8),
|
||||
LLVM_READOBJ_ENUM_ENT(MachO, CPU_SUBTYPE_ARM64E),
|
||||
+ LLVM_READOBJ_ENUM_ENT(MachO, CPU_SUBTYPE_ARM64E_X1),
|
||||
};
|
||||
|
||||
const EnumEntry<uint32_t> MachOHeaderCpuSubtypesSPARC[] = {
|
||||
--- llvm/unittests/BinaryFormat/MachOTest.cpp
|
||||
+++ llvm/unittests/BinaryFormat/MachOTest.cpp
|
||||
@@ -66,6 +66,7 @@
|
||||
CHECK_CPUTYPE("thumbv7-apple-darwin", MachO::CPU_TYPE_ARM);
|
||||
CHECK_CPUTYPE("arm64-apple-darwin", MachO::CPU_TYPE_ARM64);
|
||||
CHECK_CPUTYPE("arm64e-apple-darwin", MachO::CPU_TYPE_ARM64);
|
||||
+ CHECK_CPUTYPE("arm64e.x1-apple-darwin", MachO::CPU_TYPE_ARM64);
|
||||
CHECK_CPUTYPE("arm64_32-apple-darwin", MachO::CPU_TYPE_ARM64_32);
|
||||
|
||||
{
|
||||
@@ -107,6 +108,7 @@
|
||||
CHECK_CPUSUBTYPE("thumbv6-apple-darwin", MachO::CPU_SUBTYPE_ARM_V6);
|
||||
CHECK_CPUSUBTYPE("arm64-apple-darwin", MachO::CPU_SUBTYPE_ARM64_ALL);
|
||||
CHECK_CPUSUBTYPE("arm64e-apple-darwin", MachO::CPU_SUBTYPE_ARM64E);
|
||||
+ CHECK_CPUSUBTYPE("arm64e.x1-apple-darwin", MachO::CPU_SUBTYPE_ARM64E_X1);
|
||||
CHECK_CPUSUBTYPE("arm64_32-apple-darwin", MachO::CPU_SUBTYPE_ARM64_32_V8);
|
||||
|
||||
{
|
||||
--- /dev/null
|
||||
+++ lld/test/MachO/arm64-x1.s
|
||||
@@ -0,0 +1,20 @@
|
||||
+# REQUIRES: aarch64
|
||||
+
|
||||
+## Test that arm64.x1-macos is ignored instead of causing an error.
|
||||
+## linked re-exported dylibs that only declare arm64e-macos targets, even if targeting arm64.
|
||||
+# arm64 and arm64e are ABI compatible (same CPU type), and ld64 accepts this.
|
||||
+
|
||||
+# RUN: rm -rf %t; split-file --no-leading-lines %s %t
|
||||
+
|
||||
+# RUN: llvm-mc -filetype=obj -triple=arm64-apple-macos -o %t/test.o /dev/null
|
||||
+
|
||||
+# RUN: %no-arg-lld -syslibroot %t/sdk -lSystem -dylib -arch arm64 \
|
||||
+# RUN: -platform_version macos 15 26 %t/test.o -o /dev/null
|
||||
+
|
||||
+#--- sdk/usr/lib/libSystem.tbd
|
||||
+--- !tapi-tbd
|
||||
+tbd-version: 4
|
||||
+targets: [ arm64-macos, arm64e.x1-macos ]
|
||||
+install-name: '/usr/lib/libSystem.dylib'
|
||||
+current-version: 0001.001.1
|
||||
+...
|
||||
--- /dev/null
|
||||
+++ llvm/test/tools/llvm-readobj/macho-arm64e_x1.test
|
||||
@@ -0,0 +1,17 @@
|
||||
+# RUN: yaml2obj %s -o %t.o
|
||||
+# RUN: llvm-readobj -h %t.o | FileCheck %s
|
||||
+
|
||||
+# CHECK: Magic: Magic64 (0xFEEDFACF)
|
||||
+# CHECK: CpuType: Arm64 (0x100000C)
|
||||
+# CHECK: CpuSubType: CPU_SUBTYPE_ARM64E_X1 (0xC)
|
||||
+
|
||||
+--- !mach-o
|
||||
+FileHeader:
|
||||
+ magic: 0xFEEDFACF
|
||||
+ cputype: 0x0100000C
|
||||
+ cpusubtype: 0x0000000C
|
||||
+ filetype: 0x00000001
|
||||
+ ncmds: 0
|
||||
+ sizeofcmds: 0
|
||||
+ flags: 0x00000000
|
||||
+ reserved: 0x00000000
|
||||
@@ -6771,9 +6771,10 @@ with pkgs;
|
||||
|
||||
### DEVELOPMENT / LIBRARIES / DARWIN SDKS
|
||||
|
||||
apple-sdk_14 = callPackage ../by-name/ap/apple-sdk/package.nix { darwinSdkMajorVersion = "14"; };
|
||||
apple-sdk_15 = callPackage ../by-name/ap/apple-sdk/package.nix { darwinSdkMajorVersion = "15"; };
|
||||
apple-sdk_26 = callPackage ../by-name/ap/apple-sdk/package.nix { darwinSdkMajorVersion = "26"; };
|
||||
apple-sdk_14 = apple-sdk.override { darwinSdkMajorVersion = "14"; };
|
||||
apple-sdk_15 = apple-sdk.override { darwinSdkMajorVersion = "15"; };
|
||||
apple-sdk_26 = apple-sdk.override { darwinSdkMajorVersion = "26"; };
|
||||
apple-sdk_27 = apple-sdk.override { darwinSdkMajorVersion = "27"; };
|
||||
|
||||
darwinMinVersionHook =
|
||||
deploymentTarget:
|
||||
|
||||
Reference in New Issue
Block a user