From 8a5899f53c50fc59168ecb80fa804bd9eb653fea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 4 Jun 2026 02:18:55 +0200 Subject: [PATCH] std.zig.system: always use qemu-sparc32plus for 32-bit sparc in getExternalExecutor() qemu-sparc32plus can run both traditional 32-bit binaries and 32-bit "plus" (32-bit ABI on 64-bit kernel) binaries because it has a wider array of emulated CPU types. By contrast, qemu-sparc simply cannot emulate v9 instructions that appear in 32-bit binaries. This is a problem for us because we set our baseline to v9 even for 32-bit; v8 hardware is borderline archaic and lacks atomic primitives that e.g. glibc requires. --- lib/std/zig/system.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/zig/system.zig b/lib/std/zig/system.zig index 00baeb24e19ed38ac8d0ff5ae7a7e356f4a69ed6..c2ad638832ea8e5944324e98adcd65ec65b6322e 100644 --- a/lib/std/zig/system.zig +++ b/lib/std/zig/system.zig @@ -152,7 +152,7 @@ pub fn getExternalExecutor(io: Io, candidate: *const std.Target, options: GetExt // TODO: Actually check the SuperH version. .sh => "qemu-sh4", .sheb => "qemu-sh4eb", - .sparc => if (candidate.cpu.has(.sparc, .v8plus)) "qemu-sparc32plus" else "qemu-sparc", + .sparc => "qemu-sparc32plus", .thumb => "qemu-arm", .thumbeb => "qemu-armeb", else => "qemu-" ++ @tagName(t), -- 2.54.0