[PATCH 7/8] Use libc_ifunc macro for vfork in libpthread.

Stefan Liebler stli@linux.vnet.ibm.com
Mon Jul 4 14:15:00 GMT 2016


This updated patch first undefines INIT_ARCH before it is defined.

On 06/23/2016 01:55 PM, Stefan Liebler wrote:
> This patch uses the libc_ifunc macro to create already existing ifunc functions
> vfork_ifunc and __vfork_ifunc if HAVE_IFUNC is defined.
>
> ChangeLog:
>
> 	* nptl/pt-vfork.c (DEFINE_VFORK): Use libc_ifunc macro.
> ---
>   nptl/pt-vfork.c | 21 ++++-----------------
>   1 file changed, 4 insertions(+), 17 deletions(-)
>
> diff --git a/nptl/pt-vfork.c b/nptl/pt-vfork.c
> index 8f4be0c..6258835 100644
> --- a/nptl/pt-vfork.c
> +++ b/nptl/pt-vfork.c
> @@ -46,32 +46,19 @@
>
>   extern __typeof (vfork) __libc_vfork;   /* Defined in libc.  */
>
> -static __typeof (vfork) *
> -__attribute__ ((used))
> -vfork_resolve (void)
> -{
> -  return &__libc_vfork;
> -}
> +# define INIT_ARCH()
> +# define DEFINE_VFORK(name) libc_ifunc (name, &__libc_vfork)
>
> -# ifdef HAVE_ASM_SET_DIRECTIVE
> -#  define DEFINE_VFORK(name) \
> -  asm (".set " #name ", vfork_resolve\n" \
> -       ".globl " #name "\n" \
> -       ".type " #name ", %gnu_indirect_function");
> -# else
> -#  define DEFINE_VFORK(name) \
> -  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)
> +extern __typeof(vfork) vfork_ifunc;
>   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)
> +extern __typeof(vfork) __vfork_ifunc;
>   DEFINE_VFORK (__vfork_ifunc)
>   compat_symbol (libpthread, __vfork_ifunc, __vfork, GLIBC_2_1_2);
>   #endif
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0007-Use-libc_ifunc-macro-for-vfork-in-libpthread.patch
Type: text/x-patch
Size: 1718 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20160704/d14b6332/attachment.bin>


More information about the Libc-alpha mailing list