authorgravatar for pat.github@tullmann.orgPat Tullmann <pat.github@tullmann.org> 2023-10-22 23:02:24-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-06-05 22:43:54-07:00
logd8fffee3fba4b730a1a97e3dd84d9adc3de0d586
tree4c444c2b83cb0e782142150b243c386197a3ca14
parent5293bdfe636a619a460ca547cc9e4dfa254d7d42

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.

1 files changed, 12 insertions(+), 0 deletions(-)

lib/libc/glibc/include/libc-symbols.h+12
...@@ -155,6 +155,18 @@...@@ -155,6 +155,18 @@
155 extern __typeof (name) aliasname __attribute__ ((weak, alias (#name))) \155 extern __typeof (name) aliasname __attribute__ ((weak, alias (#name))) \
156 __attribute_copy__ (name);156 __attribute_copy__ (name);
157157
158/* Zig patch. weak_hidden_alias was removed from glibc v2.36 (v2.37?), Zig
159 needs it for the v2.32 and earlier {f,l,}stat wrappers, so only include
160 in this header for 2.32 and earlier. */
161#if (__GLIBC__ == 2 && __GLIBC_MINOR__ <= 32) || __GLIBC__ < 2
162# define weak_hidden_alias(name, aliasname) \
163 _weak_hidden_alias (name, aliasname)
164# define _weak_hidden_alias(name, aliasname) \
165 extern __typeof (name) aliasname \
166 __attribute__ ((weak, alias (#name), __visibility__ ("hidden"))) \
167 __attribute_copy__ (name);
168#endif
169
158/* Declare SYMBOL as weak undefined symbol (resolved to 0 if not defined). */170/* Declare SYMBOL as weak undefined symbol (resolved to 0 if not defined). */
159# define weak_extern(symbol) _weak_extern (weak symbol)171# define weak_extern(symbol) _weak_extern (weak symbol)
160# define _weak_extern(expr) _Pragma (#expr)172# define _weak_extern(expr) _Pragma (#expr)