diff mbox series

[meta-darwin,18/21] util-linux-libuuid: fix GCC ICE in uuid_time.c on Darwin nativesdk

Message ID 20261014141209.488034-18-ecordonnier@snap.com
State New
Headers show
Series [meta-darwin,01/21] meta-darwin: bump layer series to wrynose (6.0.3) | expand

Commit Message

Etienne Cordonnier Oct. 14, 2026, 2:10 p.m. UTC
From: Etienne Cordonnier <ecordonnier@snap.com>

GCC's Mach-O backend ICEs in assemble_alias on the weak alias of
uuid_time in uuid_time.c. The file already has an asm-alias workaround,
but only for clang; let GCC use it too.

Tested by building nativesdk-util-linux-libuuid for x86_64-darwin.

AI-Generated: Claude Sonnet 5.5

Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
---
 ...alias-for-uuid_time-on-all-Apple-com.patch | 21 +++++++++++++++++++
 .../util-linux/util-linux-libuuid_%.bbappend  |  7 +++++++
 2 files changed, 28 insertions(+)
 create mode 100644 recipes-core/util-linux/files/0001-libuuid-use-asm-alias-for-uuid_time-on-all-Apple-com.patch
 create mode 100644 recipes-core/util-linux/util-linux-libuuid_%.bbappend
diff mbox series

Patch

diff --git a/recipes-core/util-linux/files/0001-libuuid-use-asm-alias-for-uuid_time-on-all-Apple-com.patch b/recipes-core/util-linux/files/0001-libuuid-use-asm-alias-for-uuid_time-on-all-Apple-com.patch
new file mode 100644
index 0000000..0a75554
--- /dev/null
+++ b/recipes-core/util-linux/files/0001-libuuid-use-asm-alias-for-uuid_time-on-all-Apple-com.patch
@@ -0,0 +1,21 @@ 
+From: Etienne Cordonnier <ecordonnier@snap.com>
+Subject: [PATCH] libuuid: use the asm alias for uuid_time on all Apple compilers
+
+The weak alias attribute ICEs GCC's Mach-O backend (in assemble_alias),
+so the clang-only asm alias workaround must also be used when building
+with GCC for Darwin.
+
+Upstream-Status: Pending
+Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
+---
+--- a/libuuid/src/uuid_time.c
++++ b/libuuid/src/uuid_time.c
+@@ -144,7 +144,7 @@
+ }
+ #if defined(__USE_TIME_BITS64) && defined(__GLIBC__)
+ extern time_t uuid_time64(const uuid_t uu, struct timeval *ret_tv) __attribute__((weak, alias("__uuid_time")));
+-#elif defined(__clang__) && defined(__APPLE__)
++#elif defined(__APPLE__)
+ __asm__(".globl _uuid_time");
+ __asm__(".set _uuid_time, ___uuid_time");
+ extern time_t uuid_time(const uuid_t uu, struct timeval *ret_tv);
diff --git a/recipes-core/util-linux/util-linux-libuuid_%.bbappend b/recipes-core/util-linux/util-linux-libuuid_%.bbappend
new file mode 100644
index 0000000..826e362
--- /dev/null
+++ b/recipes-core/util-linux/util-linux-libuuid_%.bbappend
@@ -0,0 +1,7 @@ 
+FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
+
+# GCC's Mach-O backend ICEs on __attribute__((weak, alias())) in
+# uuid_time.c; use the asm alias path for GCC too.
+SRC_URI:append:darwin21 = " \
+    file://0001-libuuid-use-asm-alias-for-uuid_time-on-all-Apple-com.patch \
+"