commit d8fffee3fba4b730a1a97e3dd84d9adc3de0d586 (tree)
parent 5293bdfe636a619a460ca547cc9e4dfa254d7d42
Author: Pat Tullmann <pat.github@tullmann.org>
Date: Sun, 22 Oct 2023 23:02:24 -0700
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.
Diffstat:
1 file changed, 12 insertions(+), 0 deletions(-)
diff --git 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)