From: Eugene Gershnik Date: Mon, 6 May 2024 16:29:39 +0000 (-0700) Subject: libuuid: fix uuid_time on macOS without attribute((alias)) X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e47c6f751a7ef87640c61316ada774e8e9cc6b07;p=thirdparty%2Futil-linux.git libuuid: fix uuid_time on macOS without attribute((alias)) Weak aliases are not supported by clang on Darwin. Instead this fix uses inline asm to make `_uuid_time` an alias to `___uuid_time` It appears that on macOS the time API is purely 32 or 64 bit depending on the build type. There is no ABI issue on that platform and `uuid_time` can be unconditionally aliased to `_uuid_time`. This is all conjectural, however, since I have no ability to make 32-bit builds for macOS - the Apple toolchain doesn't support this since 2019. Fixes util-linux/util-linux#2873 --- diff --git a/libuuid/src/uuid_time.c b/libuuid/src/uuid_time.c index 9b415b3ee..df0478e19 100644 --- a/libuuid/src/uuid_time.c +++ b/libuuid/src/uuid_time.c @@ -85,6 +85,10 @@ time_t __uuid_time(const uuid_t uu, struct timeval *ret_tv) } #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__) +__asm__(".globl _uuid_time"); +__asm__(".set _uuid_time, ___uuid_time"); +extern time_t uuid_time(const uuid_t uu, struct timeval *ret_tv); #else extern time_t uuid_time(const uuid_t uu, struct timeval *ret_tv) __attribute__((weak, alias("__uuid_time"))); #endif