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 \
+"
