aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@twiddle.net>2014-05-23 16:03:28 -0700
committerRichard Henderson <rth@twiddle.net>2014-05-23 21:33:05 -0700
commit900e445fad9bf301a42c0d0008cce504ad94050e (patch)
tree43c62ecb9a4b82947a1a0daa8c350ebd341d6049 /nptl/pt-vfork.c
parentOnly support ifunc in nptl/pt-vfork.c (diff)
downloadglibc-900e445fad9bf301a42c0d0008cce504ad94050e.tar.gz
glibc-900e445fad9bf301a42c0d0008cce504ad94050e.tar.bz2
glibc-900e445fad9bf301a42c0d0008cce504ad94050e.zip
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.
Diffstat (limited to 'nptl/pt-vfork.c')
-rw-r--r--nptl/pt-vfork.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/nptl/pt-vfork.c b/nptl/pt-vfork.c
index eaffe48f53..f3858c2648 100644
--- a/nptl/pt-vfork.c
+++ b/nptl/pt-vfork.c
@@ -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