From d8fffee3fba4b730a1a97e3dd84d9adc3de0d586 Mon Sep 17 00:00:00 2001 From: Pat Tullmann Date: Sun, 22 Oct 2023 23:02:24 -0700 Subject: [PATCH] glibc: restore "weak_hidden_alias" macro for older glibc versions The fstat,lstat,stat,mknod stubs used to build older (before v2.33) glibc versions depend on the weak_hidden_alias macro. It was removed from the glibc libc-symbols header, so patch it back in for the older builds. --- lib/libc/glibc/include/libc-symbols.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/libc/glibc/include/libc-symbols.h b/lib/libc/glibc/include/libc-symbols.h index e21bb599b3..446f52659a 100644 --- a/lib/libc/glibc/include/libc-symbols.h +++ b/lib/libc/glibc/include/libc-symbols.h @@ -155,6 +155,18 @@ extern __typeof (name) aliasname __attribute__ ((weak, alias (#name))) \ __attribute_copy__ (name); +/* Zig patch. weak_hidden_alias was removed from glibc v2.36 (v2.37?), Zig + needs it for the v2.32 and earlier {f,l,}stat wrappers, so only include + in this header for 2.32 and earlier. */ +#if (__GLIBC__ == 2 && __GLIBC_MINOR__ <= 32) || __GLIBC__ < 2 +# define weak_hidden_alias(name, aliasname) \ + _weak_hidden_alias (name, aliasname) +# define _weak_hidden_alias(name, aliasname) \ + extern __typeof (name) aliasname \ + __attribute__ ((weak, alias (#name), __visibility__ ("hidden"))) \ + __attribute_copy__ (name); +#endif + /* Declare SYMBOL as weak undefined symbol (resolved to 0 if not defined). */ # define weak_extern(symbol) _weak_extern (weak symbol) # define _weak_extern(expr) _Pragma (#expr)