mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08:00
Only provide non-default symbols in libpthread for vfork
* nptl/pt-vfork.c (vfork_resolve): Rename from vfork_ifunc. (vfork, __vfork): Define via compat_symbol.
This commit is contained in:
parent
8820e3acc3
commit
900e445fad
@ -1,5 +1,8 @@
|
||||
2014-05-23 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* nptl/pt-vfork.c (vfork_resolve): Rename from vfork_ifunc.
|
||||
(vfork, __vfork): Define via compat_symbol.
|
||||
|
||||
* nptl/pt-vfork.c: Error if !HAVE_IFUNC.
|
||||
[!HAVE_IFUNC] (vfork_compat): Remove.
|
||||
[!HAVE_IFUNC] (DEFINE_VFORK): Remove.
|
||||
|
@ -46,30 +46,32 @@
|
||||
|
||||
extern __typeof (vfork) __libc_vfork; /* Defined in libc. */
|
||||
|
||||
attribute_hidden __attribute__ ((used))
|
||||
__typeof (vfork) *
|
||||
vfork_ifunc (void)
|
||||
static __typeof (vfork) *
|
||||
__attribute__ ((used))
|
||||
vfork_resolve (void)
|
||||
{
|
||||
return &__libc_vfork;
|
||||
}
|
||||
|
||||
# ifdef HAVE_ASM_SET_DIRECTIVE
|
||||
# define DEFINE_VFORK(name) \
|
||||
asm (".set " #name ", vfork_ifunc\n" \
|
||||
asm (".set " #name ", vfork_resolve\n" \
|
||||
".globl " #name "\n" \
|
||||
".type " #name ", %gnu_indirect_function");
|
||||
# else
|
||||
# define DEFINE_VFORK(name) \
|
||||
asm (#name " = vfork_ifunc\n" \
|
||||
asm (#name " = vfork_resolve\n" \
|
||||
".globl " #name "\n" \
|
||||
".type " #name ", %gnu_indirect_function");
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_20)
|
||||
DEFINE_VFORK (vfork)
|
||||
DEFINE_VFORK (vfork_ifunc)
|
||||
compat_symbol (libpthread, vfork_ifunc, vfork, GLIBC_2_0);
|
||||
#endif
|
||||
|
||||
#if SHLIB_COMPAT (libpthread, GLIBC_2_1_2, GLIBC_2_20)
|
||||
DEFINE_VFORK (__vfork)
|
||||
DEFINE_VFORK (__vfork_ifunc)
|
||||
compat_symbol (libpthread, __vfork_ifunc, __vfork, GLIBC_2_1_2);
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user