This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH 2/2] Only provide non-default symbols in libpthread for vfork
- From: Richard Henderson <rth at twiddle dot net>
- To: libc-alpha at sourceware dot org
- Cc: roland at hack dot frob dot com
- Date: Fri, 23 May 2014 16:15:36 -0700
- Subject: [PATCH 2/2] Only provide non-default symbols in libpthread for vfork
- Authentication-results: sourceware.org; auth=none
- References: <1400886936-16338-1-git-send-email-rth at twiddle dot net>
* nptl/pt-vfork.c (vfork_resolve): Rename from vfork_ifunc.
(vfork_ifunc): Define via attribute ifunc.
(DEFINE_VFORK): Remove.
(vfork, __vfork): Define via compat_symbol.
---
nptl/pt-vfork.c | 23 +++++++----------------
1 file changed, 7 insertions(+), 16 deletions(-)
diff --git a/nptl/pt-vfork.c b/nptl/pt-vfork.c
index 8beb121..78c0781 100644
--- a/nptl/pt-vfork.c
+++ b/nptl/pt-vfork.c
@@ -42,30 +42,21 @@
extern __typeof (vfork) __libc_vfork; /* Defined in libc. */
-attribute_hidden __attribute__ ((used))
-__typeof (vfork) *
-vfork_ifunc (void)
+static __typeof (vfork) *
+vfork_resolve (void)
{
return &__libc_vfork;
}
-# ifdef HAVE_ASM_SET_DIRECTIVE
-# define DEFINE_VFORK(name) \
- asm (".set " #name ", vfork_ifunc\n" \
- ".globl " #name "\n" \
- ".type " #name ", %gnu_indirect_function");
-# else
-# define DEFINE_VFORK(name) \
- asm (#name " = vfork_ifunc\n" \
- ".globl " #name "\n" \
- ".type " #name ", %gnu_indirect_function");
-# endif
+void *vfork_ifunc(void *, const void *, size_t)
+ __attribute__ ((ifunc ("vfork_resolve")));
#endif
#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_20)
-DEFINE_VFORK (vfork)
+compat_symbol (libpthread, vfork_ifunc, vfork, GLIBC_2_0);
#endif
#if SHLIB_COMPAT (libpthread, GLIBC_2_1_2, GLIBC_2_20)
-DEFINE_VFORK (__vfork)
+strong_alias (vfork_ifunc, vfork_ifunc2)
+compat_symbol (libpthread, vfork_ifunc2, __vfork, GLIBC_2_1_2);
#endif
--
1.9.0