From 749e67dee87ca66e7c69f74020fc262f712a635a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Mon, 6 Jan 2025 15:35:50 +0100 Subject: [PATCH 1/5] std.zig.system: Reject x32 for QEMU in getExternalExecutor(). --- lib/std/zig/system.zig | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/std/zig/system.zig b/lib/std/zig/system.zig index 591e369ff763..feb96317c86a 100644 --- a/lib/std/zig/system.zig +++ b/lib/std/zig/system.zig @@ -116,7 +116,10 @@ pub fn getExternalExecutor( }, .sparc64 => Executor{ .qemu = "qemu-sparc64" }, .x86 => Executor{ .qemu = "qemu-i386" }, - .x86_64 => Executor{ .qemu = "qemu-x86_64" }, + .x86_64 => switch (candidate.abi) { + .gnux32, .muslx32 => return bad_result, + else => Executor{ .qemu = "qemu-x86_64" }, + }, .xtensa => Executor{ .qemu = "qemu-xtensa" }, else => return bad_result, }; From f54f58b60f1a957c73aba4a2484bb2ca05513933 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Mon, 6 Jan 2025 15:36:34 +0100 Subject: [PATCH 2/5] std.zig.system: Handle thumb/thumbeb for QEMU in getExternalExecutor(). --- lib/std/zig/system.zig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/std/zig/system.zig b/lib/std/zig/system.zig index feb96317c86a..6e4fc1adefc0 100644 --- a/lib/std/zig/system.zig +++ b/lib/std/zig/system.zig @@ -83,8 +83,8 @@ pub fn getExternalExecutor( return switch (candidate.cpu.arch) { .aarch64 => Executor{ .qemu = "qemu-aarch64" }, .aarch64_be => Executor{ .qemu = "qemu-aarch64_be" }, - .arm => Executor{ .qemu = "qemu-arm" }, - .armeb => Executor{ .qemu = "qemu-armeb" }, + .arm, .thumb => Executor{ .qemu = "qemu-arm" }, + .armeb, .thumbeb => Executor{ .qemu = "qemu-armeb" }, .hexagon => Executor{ .qemu = "qemu-hexagon" }, .loongarch64 => Executor{ .qemu = "qemu-loongarch64" }, .m68k => Executor{ .qemu = "qemu-m68k" }, From 52e9fd7c3c9c92ff4cca02f10f4e2022c11d9351 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Mon, 6 Jan 2025 16:20:27 +0100 Subject: [PATCH 3/5] test: Disable vector behavior tests affected by #22060 for thumbeb too. --- test/behavior/vector.zig | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/behavior/vector.zig b/test/behavior/vector.zig index 5798665d0c31..3180d1554afb 100644 --- a/test/behavior/vector.zig +++ b/test/behavior/vector.zig @@ -640,7 +640,7 @@ test "vector division operators" { }; try comptime S.doTheTest(); - if (builtin.cpu.arch == .armeb and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/22060 + if ((builtin.cpu.arch == .armeb or builtin.cpu.arch == .thumbeb) and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/22060 try S.doTheTest(); } @@ -1100,7 +1100,7 @@ test "@addWithOverflow" { } }; try comptime S.doTheTest(); - if (builtin.cpu.arch == .armeb and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/22060 + if ((builtin.cpu.arch == .armeb or builtin.cpu.arch == .thumbeb) and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/22060 try S.doTheTest(); } @@ -1134,7 +1134,7 @@ test "@subWithOverflow" { } }; try comptime S.doTheTest(); - if (builtin.cpu.arch == .armeb and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/22060 + if ((builtin.cpu.arch == .armeb or builtin.cpu.arch == .thumbeb) and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/22060 try S.doTheTest(); } @@ -1158,7 +1158,7 @@ test "@mulWithOverflow" { } }; try comptime S.doTheTest(); - if (builtin.cpu.arch == .armeb and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/22060 + if ((builtin.cpu.arch == .armeb or builtin.cpu.arch == .thumbeb) and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/22060 try S.doTheTest(); } From c1ae99efb30b1dcc86b3f41b419685a62413378e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Mon, 6 Jan 2025 16:22:04 +0100 Subject: [PATCH 4/5] test: Disable `align(N) on functions` and `@alignCast functions` for thumbeb too. --- test/behavior/align.zig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/behavior/align.zig b/test/behavior/align.zig index 9b3696e0a12f..9974715e3b70 100644 --- a/test/behavior/align.zig +++ b/test/behavior/align.zig @@ -347,7 +347,7 @@ test "@alignCast functions" { // function alignment is a compile error on wasm32/wasm64 if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest; - if (native_arch == .thumb) return error.SkipZigTest; + if (native_arch == .thumb or native_arch == .thumbeb) return error.SkipZigTest; try expect(fnExpectsOnly1(simple4) == 0x19); } @@ -512,7 +512,7 @@ test "align(N) on functions" { // function alignment is a compile error on wasm32/wasm64 if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest; - if (native_arch == .thumb) return error.SkipZigTest; + if (native_arch == .thumb or native_arch == .thumbeb) return error.SkipZigTest; try expect((@intFromPtr(&overaligned_fn) & (0x1000 - 1)) == 0); } From 03ac40d5709060168e10c9c3187ffb5a161e773b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Mon, 6 Jan 2025 16:47:40 +0100 Subject: [PATCH 5/5] std: Disable some tests affected by #22060 for thumbeb too. --- lib/std/fmt.zig | 2 +- lib/std/simd.zig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/std/fmt.zig b/lib/std/fmt.zig index b45194a83741..2b5e78975e97 100644 --- a/lib/std/fmt.zig +++ b/lib/std/fmt.zig @@ -2596,7 +2596,7 @@ test "positional/alignment/width/precision" { } test "vector" { - if (builtin.cpu.arch == .armeb and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/22060 + if ((builtin.cpu.arch == .armeb or builtin.cpu.arch == .thumbeb) and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/22060 if (builtin.target.cpu.arch == .riscv64) { // https://github.com/ziglang/zig/issues/4486 return error.SkipZigTest; diff --git a/lib/std/simd.zig b/lib/std/simd.zig index 3413ad127f6b..e06a873f0976 100644 --- a/lib/std/simd.zig +++ b/lib/std/simd.zig @@ -462,7 +462,7 @@ pub fn prefixScan(comptime op: std.builtin.ReduceOp, comptime hop: isize, vec: a test "vector prefix scan" { if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; - if (builtin.cpu.arch == .armeb and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/22060 + if ((builtin.cpu.arch == .armeb or builtin.cpu.arch == .thumbeb) and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/22060 if (builtin.cpu.arch == .aarch64_be and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/21893 if (comptime builtin.cpu.arch.isMIPS()) {