From: GNU Libc Maintainers Date: Wed, 30 Apr 2025 01:01:35 +0000 (+0800) Subject: git-pthread_atfork-hidden X-Git-Tag: archive/raspbian/2.31-13+rpi1+deb11u12^2~86 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=9af67b9935fd1fe747ad79a04f595af548749c5a;p=glibc.git git-pthread_atfork-hidden Committed for glibc 2.32 commit 15e995a8fb94a00d76da03756579ae6ff645b161 Author: Samuel Thibault Date: Sun Jun 7 23:29:44 2020 +0000 htl: Fix registration of atfork handlers in modules We really need modules to use their own pthread_atfork so that __dso_handle properly identifies them. * sysdeps/htl/pt-atfork.c (__pthread_atfork): Hide function. (pthread_atfork): Hide alias. * sysdeps/htl/old_pt-atfork.c (pthread_atfork): Rename macro to __pthread_atfork to fix building the compatibility alias. Gbp-Pq: Topic hurd-i386 Gbp-Pq: Name git-pthread_atfork-hidden.diff --- diff --git a/sysdeps/htl/old_pt-atfork.c b/sysdeps/htl/old_pt-atfork.c index d954b68f6..c7231d1fe 100644 --- a/sysdeps/htl/old_pt-atfork.c +++ b/sysdeps/htl/old_pt-atfork.c @@ -19,8 +19,8 @@ #include #if SHLIB_COMPAT(libpthread, GLIBC_2_12, GLIBC_2_23) -# define pthread_atfork __dyn_pthread_atfork +# define __pthread_atfork __dyn_pthread_atfork # include "pt-atfork.c" -# undef pthread_atfork +# undef __pthread_atfork compat_symbol (libpthread, __dyn_pthread_atfork, pthread_atfork, GLIBC_2_12); #endif diff --git a/sysdeps/htl/pt-atfork.c b/sysdeps/htl/pt-atfork.c index d547dd58e..db8068e65 100644 --- a/sysdeps/htl/pt-atfork.c +++ b/sysdeps/htl/pt-atfork.c @@ -21,11 +21,21 @@ #include #include +/* Hide the symbol so that no definition but the one locally in the + executable or DSO is used. */ int +#ifndef __pthread_atfork +/* Don't mark the compatibility function as hidden. */ +attribute_hidden +#endif __pthread_atfork (void (*prepare) (void), void (*parent) (void), void (*child) (void)) { return __register_atfork (prepare, parent, child, __dso_handle); } +#ifndef __pthread_atfork +extern int pthread_atfork (void (*prepare) (void), void (*parent) (void), + void (*child) (void)) attribute_hidden; weak_alias (__pthread_atfork, pthread_atfork) +#endif