mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-27 03:41:23 +08:00
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.
This commit is contained in:
parent
af27fabe40
commit
15e995a8fb
@ -19,8 +19,8 @@
|
|||||||
#include <shlib-compat.h>
|
#include <shlib-compat.h>
|
||||||
|
|
||||||
#if SHLIB_COMPAT(libpthread, GLIBC_2_12, GLIBC_2_23)
|
#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"
|
# include "pt-atfork.c"
|
||||||
# undef pthread_atfork
|
# undef __pthread_atfork
|
||||||
compat_symbol (libpthread, __dyn_pthread_atfork, pthread_atfork, GLIBC_2_12);
|
compat_symbol (libpthread, __dyn_pthread_atfork, pthread_atfork, GLIBC_2_12);
|
||||||
#endif
|
#endif
|
||||||
|
@ -21,11 +21,21 @@
|
|||||||
#include <fork.h>
|
#include <fork.h>
|
||||||
#include <dso_handle.h>
|
#include <dso_handle.h>
|
||||||
|
|
||||||
|
/* Hide the symbol so that no definition but the one locally in the
|
||||||
|
executable or DSO is used. */
|
||||||
int
|
int
|
||||||
|
#ifndef __pthread_atfork
|
||||||
|
/* Don't mark the compatibility function as hidden. */
|
||||||
|
attribute_hidden
|
||||||
|
#endif
|
||||||
__pthread_atfork (void (*prepare) (void),
|
__pthread_atfork (void (*prepare) (void),
|
||||||
void (*parent) (void),
|
void (*parent) (void),
|
||||||
void (*child) (void))
|
void (*child) (void))
|
||||||
{
|
{
|
||||||
return __register_atfork (prepare, parent, child, __dso_handle);
|
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)
|
weak_alias (__pthread_atfork, pthread_atfork)
|
||||||
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user