Ekaitz Zarraga wrote 2 years ago
(name . guix-patches@gnu.org)(address . guix-patches@gnu.org)
This patch fixes a `Illegal instruction` issue when running Zig.
It happens because Zig compiles with optimizations for the current
machine, which may add instructions that are not compatible with
some target machines. This flag makes it build for a baseline cpu.
Tested with:
qemu-x86_64 -cpu Broadwell-v2 /gnu/store/zzi23y4mab8zl58hdd740xz3814vy24w-zig-0.10.1/bin/zig build
And:
qemu-x86_64 -cpu Broadwell-v4 /gnu/store/zzi23y4mab8zl58hdd740xz3814vy24w-zig-0.10.1/bin/zig build
It worked.
It follows what Arch does:
And NixOS:
Hope this helps.
Best,
Ekaitz
---
From 8dbb801ba7df6cc64c003e8f1739117c8dda6a75 Mon Sep 17 00:00:00 2001
From: Ekaitz Zarraga <ekaitz@elenq.tech>
Date: Fri, 10 Mar 2023 22:52:19 +0100
Subject: [PATCH] gnu: zig: make zig build for a baseline cpu
* gnu/packages/zig.scm(zig-0.10): Add -DZIG_TARGET_MCPU=baseline
configure flag.
---
gnu/packages/zig.scm | 1 +
1 file changed, 1 insertion(+)
Toggle diff (12 lines)
diff --git a/gnu/packages/zig.scm b/gnu/packages/zig.scm
index 5414b5ba6e..2c89343cb1 100644
--- a/gnu/packages/zig.scm
+++ b/gnu/packages/zig.scm
@@ -56,6 +56,7 @@ (define-public zig-0.10
'(string-append "-DZIG_TARGET_TRIPLE="
(%current-target-system))
'())
+ (string-append "-DZIG_TARGET_MCPU=baseline")
(string-append "-DZIG_LIB_DIR=" (assoc-ref %outputs "out")
"/lib/zig"))
#:validate-runpath? #f ; TODO: zig binary can't find ld-linux.
--
2.39.1