mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-27 03:41:23 +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>
|
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.
|
* nptl/pt-vfork.c: Error if !HAVE_IFUNC.
|
||||||
[!HAVE_IFUNC] (vfork_compat): Remove.
|
[!HAVE_IFUNC] (vfork_compat): Remove.
|
||||||
[!HAVE_IFUNC] (DEFINE_VFORK): Remove.
|
[!HAVE_IFUNC] (DEFINE_VFORK): Remove.
|
||||||
|
@ -46,30 +46,32 @@
|
|||||||
|
|
||||||
extern __typeof (vfork) __libc_vfork; /* Defined in libc. */
|
extern __typeof (vfork) __libc_vfork; /* Defined in libc. */
|
||||||
|
|
||||||
attribute_hidden __attribute__ ((used))
|
static __typeof (vfork) *
|
||||||
__typeof (vfork) *
|
__attribute__ ((used))
|
||||||
vfork_ifunc (void)
|
vfork_resolve (void)
|
||||||
{
|
{
|
||||||
return &__libc_vfork;
|
return &__libc_vfork;
|
||||||
}
|
}
|
||||||
|
|
||||||
# ifdef HAVE_ASM_SET_DIRECTIVE
|
# ifdef HAVE_ASM_SET_DIRECTIVE
|
||||||
# define DEFINE_VFORK(name) \
|
# define DEFINE_VFORK(name) \
|
||||||
asm (".set " #name ", vfork_ifunc\n" \
|
asm (".set " #name ", vfork_resolve\n" \
|
||||||
".globl " #name "\n" \
|
".globl " #name "\n" \
|
||||||
".type " #name ", %gnu_indirect_function");
|
".type " #name ", %gnu_indirect_function");
|
||||||
# else
|
# else
|
||||||
# define DEFINE_VFORK(name) \
|
# define DEFINE_VFORK(name) \
|
||||||
asm (#name " = vfork_ifunc\n" \
|
asm (#name " = vfork_resolve\n" \
|
||||||
".globl " #name "\n" \
|
".globl " #name "\n" \
|
||||||
".type " #name ", %gnu_indirect_function");
|
".type " #name ", %gnu_indirect_function");
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_20)
|
#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
|
#endif
|
||||||
|
|
||||||
#if SHLIB_COMPAT (libpthread, GLIBC_2_1_2, GLIBC_2_20)
|
#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
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user