From aea4f705dc3d50c3cc3a4011d0b82b181b3ece8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 28 Nov 2024 21:24:31 +0100 Subject: [PATCH 01/12] std.Target: Add missing C type info for aix, elfiamcu, hermit, hurd, rtems, and zos. --- lib/std/Target.zig | 54 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 16 deletions(-) diff --git a/lib/std/Target.zig b/lib/std/Target.zig index 8e9bfd273c..ff048b1aed 100644 --- a/lib/std/Target.zig +++ b/lib/std/Target.zig @@ -2884,19 +2884,29 @@ pub fn cTypeBitSize(target: Target, c_type: CType) u16 { }, }, + .elfiamcu, + .fuchsia, + .hermit, + + .aix, + .haiku, + .hurd, .linux, + .plan9, + .rtems, + .serenity, + .zos, + .freebsd, - .netbsd, .dragonfly, + .netbsd, .openbsd, + + .illumos, + .solaris, + .wasi, .emscripten, - .plan9, - .solaris, - .illumos, - .haiku, - .fuchsia, - .serenity, => switch (target.cpu.arch) { .msp430 => switch (c_type) { .char => return 8, @@ -2941,7 +2951,10 @@ pub fn cTypeBitSize(target: Target, c_type: CType) u16 { .longdouble => switch (target.cpu.arch) { .x86 => switch (target.abi) { .android => return 64, - else => return 80, + else => switch (target.os.tag) { + .elfiamcu => return 64, + else => return 80, + }, }, .powerpc, @@ -2955,7 +2968,7 @@ pub fn cTypeBitSize(target: Target, c_type: CType) u16 { .muslx32, => return 64, else => switch (target.os.tag) { - .freebsd, .netbsd, .openbsd => return 64, + .aix, .freebsd, .netbsd, .openbsd => return 64, else => return 128, }, }, @@ -2971,7 +2984,7 @@ pub fn cTypeBitSize(target: Target, c_type: CType) u16 { .muslx32, => return 64, else => switch (target.os.tag) { - .freebsd, .openbsd => return 64, + .aix, .freebsd, .openbsd => return 64, else => return 128, }, }, @@ -3104,13 +3117,7 @@ pub fn cTypeBitSize(target: Target, c_type: CType) u16 { }, .ps3, - .zos, - .rtems, - .aix, - .elfiamcu, .contiki, - .hermit, - .hurd, .opengl, => @panic("TODO specify the C integer and float type sizes for this OS"), } @@ -3121,6 +3128,10 @@ pub fn cTypeAlignment(target: Target, c_type: CType) u16 { switch (target.cpu.arch) { .avr => return 1, .x86 => switch (target.os.tag) { + .elfiamcu => switch (c_type) { + .longlong, .ulonglong, .double => return 4, + else => {}, + }, .windows, .uefi => switch (c_type) { .longlong, .ulonglong, .double => return 8, .longdouble => switch (target.abi) { @@ -3131,6 +3142,13 @@ pub fn cTypeAlignment(target: Target, c_type: CType) u16 { }, else => {}, }, + .powerpc, .powerpcle, .powerpc64, .powerpc64le => switch (target.os.tag) { + .aix => switch (c_type) { + .double, .longdouble => return 4, + else => {}, + }, + else => {}, + }, else => {}, } @@ -3244,6 +3262,10 @@ pub fn cTypePreferredAlignment(target: Target, c_type: CType) u16 { }, .avr => return 1, .x86 => switch (target.os.tag) { + .elfiamcu => switch (c_type) { + .longlong, .ulonglong, .double, .longdouble => return 4, + else => {}, + }, .windows, .uefi => switch (c_type) { .longdouble => switch (target.abi) { .gnu, .gnuilp32, .ilp32, .cygnus => return 4, From 310d1c1ff484afddf8e3948505c2c560ea9103cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 28 Nov 2024 21:26:35 +0100 Subject: [PATCH 02/12] std.Target: Fix long/unsigned long size for aarch64-watchos-ilp32. --- lib/std/Target.zig | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/std/Target.zig b/lib/std/Target.zig index ff048b1aed..7be547dd27 100644 --- a/lib/std/Target.zig +++ b/lib/std/Target.zig @@ -3062,7 +3062,10 @@ pub fn cTypeBitSize(target: Target, c_type: CType) u16 { .gnux32, .muslx32 => return 32, else => return 64, }, - else => return 64, + else => switch (target.abi) { + .ilp32 => return 32, + else => return 64, + }, }, .longlong, .ulonglong, .double => return 64, .longdouble => switch (target.cpu.arch) { From 6cd67cec677a52f1e7f0de4cc314deaf29c85131 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 28 Nov 2024 21:26:58 +0100 Subject: [PATCH 03/12] std.Target: Fix long double size for aarch64-bridgeos-*. --- lib/std/Target.zig | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/std/Target.zig b/lib/std/Target.zig index 7be547dd27..b888de3af3 100644 --- a/lib/std/Target.zig +++ b/lib/std/Target.zig @@ -3069,6 +3069,10 @@ pub fn cTypeBitSize(target: Target, c_type: CType) u16 { }, .longlong, .ulonglong, .double => return 64, .longdouble => switch (target.cpu.arch) { + .aarch64 => switch (target.os.tag) { + .bridgeos => return 128, + else => return 64, + }, .x86 => switch (target.abi) { .android => return 64, else => return 80, From 7fe219998f016bcd1aa530167fde9461acad5d0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 28 Nov 2024 21:28:04 +0100 Subject: [PATCH 04/12] std.Target: Fix long double alignment for wasm(32,64)-emscripten-*. --- lib/std/Target.zig | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/std/Target.zig b/lib/std/Target.zig index b888de3af3..c5a800097d 100644 --- a/lib/std/Target.zig +++ b/lib/std/Target.zig @@ -3156,6 +3156,13 @@ pub fn cTypeAlignment(target: Target, c_type: CType) u16 { }, else => {}, }, + .wasm32, .wasm64 => switch (target.os.tag) { + .emscripten => switch (c_type) { + .longdouble => return 8, + else => {}, + }, + else => {}, + }, else => {}, } @@ -3285,6 +3292,13 @@ pub fn cTypePreferredAlignment(target: Target, c_type: CType) u16 { else => {}, }, }, + .wasm32, .wasm64 => switch (target.os.tag) { + .emscripten => switch (c_type) { + .longdouble => return 8, + else => {}, + }, + else => {}, + }, else => {}, } From f0f2dc52cc8ea3f0ffa62382e76b6b3a7f1d80b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 28 Nov 2024 21:22:00 +0100 Subject: [PATCH 05/12] llvm: Lower ohoseabi to ohos instead of verbatim. LLVM doesn't recognize ohoseabi. --- src/codegen/llvm.zig | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 737aa51107..0a755e25a8 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -280,8 +280,7 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![]const u8 { .cygnus => "cygnus", .simulator => "simulator", .macabi => "macabi", - .ohos => "ohos", - .ohoseabi => "ohoseabi", + .ohos, .ohoseabi => "ohos", }; try llvm_triple.appendSlice(llvm_abi); From 7361f0bafa40b20566e4c93ab69dfaf2dfb6c2e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 28 Nov 2024 21:56:11 +0100 Subject: [PATCH 06/12] link.MachO: Don't try to get a semver value for bridgeos. --- src/link/MachO.zig | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/link/MachO.zig b/src/link/MachO.zig index 1ffcabb1f5..9cfe839ca3 100644 --- a/src/link/MachO.zig +++ b/src/link/MachO.zig @@ -4191,7 +4191,11 @@ pub const Platform = struct { return .{ .os_tag = target.os.tag, .abi = target.abi, - .version = target.os.version_range.semver.min, + // This should use semver once we determine the version history. + .version = if (target.os.tag == .bridgeos) + .{ .major = 0, .minor = 0, .patch = 0 } + else + target.os.version_range.semver.min, }; } From 4369d3b93d5f4f2f5dc5bcf70a1020964c133b1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 28 Nov 2024 20:09:52 +0100 Subject: [PATCH 07/12] test: Add *-windows-cygnus triples to llvm_targets. --- test/llvm_targets.zig | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/llvm_targets.zig b/test/llvm_targets.zig index 42c5428e06..5c4d8f520c 100644 --- a/test/llvm_targets.zig +++ b/test/llvm_targets.zig @@ -329,6 +329,7 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .x86, .os_tag = .rtems, .abi = .none }, .{ .cpu_arch = .x86, .os_tag = .solaris, .abi = .none }, .{ .cpu_arch = .x86, .os_tag = .uefi, .abi = .none }, + .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .cygnus }, .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .gnu }, .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .itanium }, .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .msvc }, @@ -368,6 +369,7 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .x86_64, .os_tag = .uefi, .abi = .none }, .{ .cpu_arch = .x86_64, .os_tag = .visionos, .abi = .simulator }, .{ .cpu_arch = .x86_64, .os_tag = .watchos, .abi = .simulator }, + .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .cygnus }, .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .gnu }, .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .itanium }, .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .msvc }, From 11d51ea5a27a23875750951ffef32885a9115808 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 28 Nov 2024 21:09:34 +0100 Subject: [PATCH 08/12] test: Remove aarch64-rtems-ilp32 from llvm_targets. LLVM can't represent this target at the moment. --- test/llvm_targets.zig | 1 - 1 file changed, 1 deletion(-) diff --git a/test/llvm_targets.zig b/test/llvm_targets.zig index 5c4d8f520c..35ac21b691 100644 --- a/test/llvm_targets.zig +++ b/test/llvm_targets.zig @@ -21,7 +21,6 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .aarch64, .os_tag = .macos, .abi = .none }, .{ .cpu_arch = .aarch64, .os_tag = .netbsd, .abi = .none }, .{ .cpu_arch = .aarch64, .os_tag = .openbsd, .abi = .none }, - .{ .cpu_arch = .aarch64, .os_tag = .rtems, .abi = .ilp32 }, .{ .cpu_arch = .aarch64, .os_tag = .rtems, .abi = .none }, .{ .cpu_arch = .aarch64, .os_tag = .serenity, .abi = .none }, .{ .cpu_arch = .aarch64, .os_tag = .tvos, .abi = .none }, From 322013c64895d4e95c340f771006eace68ac1795 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 28 Nov 2024 21:09:55 +0100 Subject: [PATCH 09/12] test: Add aarch64(_be)-linux-musl to llvm_targets. --- test/llvm_targets.zig | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/llvm_targets.zig b/test/llvm_targets.zig index 35ac21b691..edcd0541fe 100644 --- a/test/llvm_targets.zig +++ b/test/llvm_targets.zig @@ -16,6 +16,7 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .android }, .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .gnu }, .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .gnuilp32 }, + .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .musl }, .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .none }, .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .ohos }, .{ .cpu_arch = .aarch64, .os_tag = .macos, .abi = .none }, @@ -38,6 +39,7 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .aarch64_be, .os_tag = .freestanding, .abi = .none }, .{ .cpu_arch = .aarch64_be, .os_tag = .linux, .abi = .gnu }, .{ .cpu_arch = .aarch64_be, .os_tag = .linux, .abi = .gnuilp32 }, + .{ .cpu_arch = .aarch64_be, .os_tag = .linux, .abi = .musl }, .{ .cpu_arch = .aarch64_be, .os_tag = .linux, .abi = .none }, .{ .cpu_arch = .aarch64_be, .os_tag = .netbsd, .abi = .none }, From abf3032ff1add06919e08acf86b134c2b5202245 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 28 Nov 2024 21:10:10 +0100 Subject: [PATCH 10/12] test: Add m68k-linux-musl to llvm_targets. --- test/llvm_targets.zig | 1 + 1 file changed, 1 insertion(+) diff --git a/test/llvm_targets.zig b/test/llvm_targets.zig index edcd0541fe..b2919755e2 100644 --- a/test/llvm_targets.zig +++ b/test/llvm_targets.zig @@ -123,6 +123,7 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .m68k, .os_tag = .freestanding, .abi = .none }, .{ .cpu_arch = .m68k, .os_tag = .haiku, .abi = .none }, .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .gnu }, + .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .musl }, .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .none }, .{ .cpu_arch = .m68k, .os_tag = .netbsd, .abi = .none }, .{ .cpu_arch = .m68k, .os_tag = .rtems, .abi = .none }, From 0bf054f4c54d23678939828a5b72627ce4d27e94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 28 Nov 2024 21:21:06 +0100 Subject: [PATCH 11/12] test: Remove aarch64(_be)-linux-gnuilp32 from llvm_targets. LLVM doesn't handle this target correctly (pointer size, etc). --- test/llvm_targets.zig | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/llvm_targets.zig b/test/llvm_targets.zig index b2919755e2..ea937de63b 100644 --- a/test/llvm_targets.zig +++ b/test/llvm_targets.zig @@ -15,7 +15,6 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .simulator }, .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .android }, .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .gnu }, - .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .gnuilp32 }, .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .musl }, .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .none }, .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .ohos }, @@ -38,7 +37,6 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .aarch64_be, .os_tag = .freestanding, .abi = .none }, .{ .cpu_arch = .aarch64_be, .os_tag = .linux, .abi = .gnu }, - .{ .cpu_arch = .aarch64_be, .os_tag = .linux, .abi = .gnuilp32 }, .{ .cpu_arch = .aarch64_be, .os_tag = .linux, .abi = .musl }, .{ .cpu_arch = .aarch64_be, .os_tag = .linux, .abi = .none }, .{ .cpu_arch = .aarch64_be, .os_tag = .netbsd, .abi = .none }, From 78b8ce5095abf6516dc414b8cf487acedbd0ce99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 28 Nov 2024 21:56:45 +0100 Subject: [PATCH 12/12] test: Change llvm_targets to actually emit an object for each target. Without doing this, we don't actually test whether the data layout string we generate matches LLVM's. A number of targets had to be commented out due to this change: * Some are using a non-working experimental LLVM backend (arc, csky, ...). * Some don't have working LLD support (lanai, sparc, ...). * Some don't have working self-hosted linker support (nvptx). * Some are using ABIs that haven't been standardized (loongarch32). Finally, all non-x86 uefi targets are hopelessly broken and can't really be fixed until we change our emit logic to lower *-uefi-* verbatim rather than to *-windows-*. See: https://github.com/ziglang/zig/issues/21630 --- test/llvm_targets.zig | 96 +++++++++++++++++++++---------------------- test/src/Cases.zig | 18 +------- 2 files changed, 49 insertions(+), 65 deletions(-) diff --git a/test/llvm_targets.zig b/test/llvm_targets.zig index ea937de63b..284c1fcd70 100644 --- a/test/llvm_targets.zig +++ b/test/llvm_targets.zig @@ -42,12 +42,12 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .aarch64_be, .os_tag = .netbsd, .abi = .none }, .{ .cpu_arch = .amdgcn, .os_tag = .amdhsa, .abi = .none }, - .{ .cpu_arch = .amdgcn, .os_tag = .amdpal, .abi = .none }, - .{ .cpu_arch = .amdgcn, .os_tag = .mesa3d, .abi = .none }, + // .{ .cpu_arch = .amdgcn, .os_tag = .amdpal, .abi = .none }, + // .{ .cpu_arch = .amdgcn, .os_tag = .mesa3d, .abi = .none }, - .{ .cpu_arch = .arc, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .arc, .os_tag = .linux, .abi = .gnu }, - .{ .cpu_arch = .arc, .os_tag = .linux, .abi = .none }, + // .{ .cpu_arch = .arc, .os_tag = .freestanding, .abi = .none }, + // .{ .cpu_arch = .arc, .os_tag = .linux, .abi = .gnu }, + // .{ .cpu_arch = .arc, .os_tag = .linux, .abi = .none }, .{ .cpu_arch = .arm, .os_tag = .freebsd, .abi = .eabi }, .{ .cpu_arch = .arm, .os_tag = .freebsd, .abi = .eabihf }, @@ -69,8 +69,8 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .arm, .os_tag = .openbsd, .abi = .eabihf }, .{ .cpu_arch = .arm, .os_tag = .rtems, .abi = .eabi }, .{ .cpu_arch = .arm, .os_tag = .rtems, .abi = .eabihf }, - .{ .cpu_arch = .arm, .os_tag = .uefi, .abi = .eabi }, - .{ .cpu_arch = .arm, .os_tag = .uefi, .abi = .eabihf }, + // .{ .cpu_arch = .arm, .os_tag = .uefi, .abi = .eabi }, + // .{ .cpu_arch = .arm, .os_tag = .uefi, .abi = .eabihf }, .{ .cpu_arch = .armeb, .os_tag = .freebsd, .abi = .eabi }, .{ .cpu_arch = .armeb, .os_tag = .freebsd, .abi = .eabihf }, @@ -94,37 +94,37 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .bpfel, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .csky, .os_tag = .freestanding, .abi = .eabi }, - .{ .cpu_arch = .csky, .os_tag = .freestanding, .abi = .eabihf }, - .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .eabi }, - .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .eabihf }, - .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .gnueabi }, - .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .gnueabihf }, + // .{ .cpu_arch = .csky, .os_tag = .freestanding, .abi = .eabi }, + // .{ .cpu_arch = .csky, .os_tag = .freestanding, .abi = .eabihf }, + // .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .eabi }, + // .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .eabihf }, + // .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .gnueabi }, + // .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .gnueabihf }, .{ .cpu_arch = .hexagon, .os_tag = .freestanding, .abi = .none }, .{ .cpu_arch = .hexagon, .os_tag = .linux, .abi = .none }, - .{ .cpu_arch = .lanai, .os_tag = .freestanding, .abi = .none }, + // .{ .cpu_arch = .lanai, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .loongarch32, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .loongarch32, .os_tag = .linux, .abi = .none }, - .{ .cpu_arch = .loongarch32, .os_tag = .uefi, .abi = .none }, + // .{ .cpu_arch = .loongarch32, .os_tag = .freestanding, .abi = .none }, + // .{ .cpu_arch = .loongarch32, .os_tag = .linux, .abi = .none }, + // .{ .cpu_arch = .loongarch32, .os_tag = .uefi, .abi = .none }, .{ .cpu_arch = .loongarch64, .os_tag = .freestanding, .abi = .none }, .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnu }, - .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnuf32 }, + // .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnuf32 }, .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnusf }, .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .musl }, .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .none }, - .{ .cpu_arch = .loongarch64, .os_tag = .uefi, .abi = .none }, + // .{ .cpu_arch = .loongarch64, .os_tag = .uefi, .abi = .none }, - .{ .cpu_arch = .m68k, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .m68k, .os_tag = .haiku, .abi = .none }, - .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .gnu }, - .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .musl }, - .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .none }, - .{ .cpu_arch = .m68k, .os_tag = .netbsd, .abi = .none }, - .{ .cpu_arch = .m68k, .os_tag = .rtems, .abi = .none }, + // .{ .cpu_arch = .m68k, .os_tag = .freestanding, .abi = .none }, + // .{ .cpu_arch = .m68k, .os_tag = .haiku, .abi = .none }, + // .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .gnu }, + // .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .musl }, + // .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .none }, + // .{ .cpu_arch = .m68k, .os_tag = .netbsd, .abi = .none }, + // .{ .cpu_arch = .m68k, .os_tag = .rtems, .abi = .none }, .{ .cpu_arch = .mips, .os_tag = .freebsd, .abi = .eabi }, .{ .cpu_arch = .mips, .os_tag = .freebsd, .abi = .eabihf }, @@ -178,12 +178,12 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .msp430, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .nvptx, .os_tag = .cuda, .abi = .none }, - .{ .cpu_arch = .nvptx, .os_tag = .nvcl, .abi = .none }, - .{ .cpu_arch = .nvptx64, .os_tag = .cuda, .abi = .none }, - .{ .cpu_arch = .nvptx64, .os_tag = .nvcl, .abi = .none }, + // .{ .cpu_arch = .nvptx, .os_tag = .cuda, .abi = .none }, + // .{ .cpu_arch = .nvptx, .os_tag = .nvcl, .abi = .none }, + // .{ .cpu_arch = .nvptx64, .os_tag = .cuda, .abi = .none }, + // .{ .cpu_arch = .nvptx64, .os_tag = .nvcl, .abi = .none }, - .{ .cpu_arch = .powerpc, .os_tag = .aix, .abi = .eabihf }, + // .{ .cpu_arch = .powerpc, .os_tag = .aix, .abi = .eabihf }, .{ .cpu_arch = .powerpc, .os_tag = .freebsd, .abi = .eabi }, .{ .cpu_arch = .powerpc, .os_tag = .freebsd, .abi = .eabihf }, .{ .cpu_arch = .powerpc, .os_tag = .freestanding, .abi = .eabi }, @@ -206,7 +206,7 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .powerpcle, .os_tag = .freestanding, .abi = .eabi }, .{ .cpu_arch = .powerpcle, .os_tag = .freestanding, .abi = .eabihf }, - .{ .cpu_arch = .powerpc64, .os_tag = .aix, .abi = .none }, + // .{ .cpu_arch = .powerpc64, .os_tag = .aix, .abi = .none }, .{ .cpu_arch = .powerpc64, .os_tag = .freebsd, .abi = .none }, .{ .cpu_arch = .powerpc64, .os_tag = .freestanding, .abi = .none }, .{ .cpu_arch = .powerpc64, .os_tag = .linux, .abi = .gnu }, @@ -226,7 +226,7 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .musl }, .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .none }, .{ .cpu_arch = .riscv32, .os_tag = .rtems, .abi = .none }, - .{ .cpu_arch = .riscv32, .os_tag = .uefi, .abi = .none }, + // .{ .cpu_arch = .riscv32, .os_tag = .uefi, .abi = .none }, .{ .cpu_arch = .riscv64, .os_tag = .freebsd, .abi = .none }, .{ .cpu_arch = .riscv64, .os_tag = .freestanding, .abi = .none }, @@ -241,20 +241,20 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .riscv64, .os_tag = .openbsd, .abi = .none }, .{ .cpu_arch = .riscv64, .os_tag = .rtems, .abi = .none }, .{ .cpu_arch = .riscv64, .os_tag = .serenity, .abi = .none }, - .{ .cpu_arch = .riscv64, .os_tag = .uefi, .abi = .none }, + // .{ .cpu_arch = .riscv64, .os_tag = .uefi, .abi = .none }, .{ .cpu_arch = .s390x, .os_tag = .freestanding, .abi = .none }, .{ .cpu_arch = .s390x, .os_tag = .linux, .abi = .gnu }, .{ .cpu_arch = .s390x, .os_tag = .linux, .abi = .none }, - .{ .cpu_arch = .s390x, .os_tag = .zos, .abi = .none }, + // .{ .cpu_arch = .s390x, .os_tag = .zos, .abi = .none }, - .{ .cpu_arch = .sparc, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .sparc, .os_tag = .illumos, .abi = .none }, - .{ .cpu_arch = .sparc, .os_tag = .linux, .abi = .gnu }, - .{ .cpu_arch = .sparc, .os_tag = .linux, .abi = .none }, - .{ .cpu_arch = .sparc, .os_tag = .netbsd, .abi = .none }, - .{ .cpu_arch = .sparc, .os_tag = .rtems, .abi = .none }, - .{ .cpu_arch = .sparc, .os_tag = .solaris, .abi = .none }, + // .{ .cpu_arch = .sparc, .os_tag = .freestanding, .abi = .none }, + // .{ .cpu_arch = .sparc, .os_tag = .illumos, .abi = .none }, + // .{ .cpu_arch = .sparc, .os_tag = .linux, .abi = .gnu }, + // .{ .cpu_arch = .sparc, .os_tag = .linux, .abi = .none }, + // .{ .cpu_arch = .sparc, .os_tag = .netbsd, .abi = .none }, + // .{ .cpu_arch = .sparc, .os_tag = .rtems, .abi = .none }, + // .{ .cpu_arch = .sparc, .os_tag = .solaris, .abi = .none }, .{ .cpu_arch = .sparc64, .os_tag = .freebsd, .abi = .none }, .{ .cpu_arch = .sparc64, .os_tag = .freestanding, .abi = .none }, @@ -301,8 +301,8 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .thumbeb, .os_tag = .rtems, .abi = .eabi }, .{ .cpu_arch = .thumbeb, .os_tag = .rtems, .abi = .eabihf }, - .{ .cpu_arch = .ve, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .ve, .os_tag = .linux, .abi = .none }, + // .{ .cpu_arch = .ve, .os_tag = .freestanding, .abi = .none }, + // .{ .cpu_arch = .ve, .os_tag = .linux, .abi = .none }, .{ .cpu_arch = .wasm32, .os_tag = .emscripten, .abi = .none }, .{ .cpu_arch = .wasm32, .os_tag = .freestanding, .abi = .none }, @@ -374,10 +374,10 @@ const targets = [_]std.Target.Query{ .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .itanium }, .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .msvc }, - .{ .cpu_arch = .xcore, .os_tag = .freestanding, .abi = .none }, + // .{ .cpu_arch = .xcore, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .xtensa, .os_tag = .freestanding, .abi = .none }, - .{ .cpu_arch = .xtensa, .os_tag = .linux, .abi = .none }, + // .{ .cpu_arch = .xtensa, .os_tag = .freestanding, .abi = .none }, + // .{ .cpu_arch = .xtensa, .os_tag = .linux, .abi = .none }, }; pub fn addCases( @@ -394,7 +394,7 @@ pub fn addCases( .xtensa => if (!build_options.llvm_has_xtensa) continue, else => {}, }; - var case = ctx.noEmitUsingLlvmBackend("llvm_targets", b.resolveTargetQuery(target_query)); + var case = ctx.addObjLlvm("llvm_targets", b.resolveTargetQuery(target_query)); case.addCompile(""); } } diff --git a/test/src/Cases.zig b/test/src/Cases.zig index 2a601637e6..208e8a6ce1 100644 --- a/test/src/Cases.zig +++ b/test/src/Cases.zig @@ -204,34 +204,18 @@ pub fn exeFromCompiledC(ctx: *Cases, name: []const u8, target_query: std.Target. return &ctx.cases.items[ctx.cases.items.len - 1]; } -pub fn noEmitUsingLlvmBackend(ctx: *Cases, name: []const u8, target: std.Build.ResolvedTarget) *Case { +pub fn addObjLlvm(ctx: *Cases, name: []const u8, target: std.Build.ResolvedTarget) *Case { ctx.cases.append(Case{ .name = name, .target = target, .updates = std.ArrayList(Update).init(ctx.cases.allocator), .output_mode = .Obj, - .emit_bin = false, .deps = std.ArrayList(DepModule).init(ctx.arena), .backend = .llvm, }) catch @panic("out of memory"); return &ctx.cases.items[ctx.cases.items.len - 1]; } -/// Adds a test case that uses the LLVM backend to emit an executable. -/// Currently this implies linking libc, because only then we can generate a testable executable. -pub fn exeUsingLlvmBackend(ctx: *Cases, name: []const u8, target: std.Build.ResolvedTarget) *Case { - ctx.cases.append(Case{ - .name = name, - .target = target, - .updates = std.ArrayList(Update).init(ctx.cases.allocator), - .output_mode = .Exe, - .deps = std.ArrayList(DepModule).init(ctx.arena), - .backend = .llvm, - .link_libc = true, - }) catch @panic("out of memory"); - return &ctx.cases.items[ctx.cases.items.len - 1]; -} - pub fn addObj( ctx: *Cases, name: []const u8,