[6/8] Use libc_ifunc macro for system in libpthread.
Commit Message
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 function
> system_ifunc if HAVE_IFUNC is defined.
>
> ChangeLog:
>
> * nptl/pt-system.c (system_ifunc): Use libc_ifunc macro.
> ---
> nptl/pt-system.c | 18 +++---------------
> 1 file changed, 3 insertions(+), 15 deletions(-)
>
> diff --git a/nptl/pt-system.c b/nptl/pt-system.c
> index 56f2a89..6515056 100644
> --- a/nptl/pt-system.c
> +++ b/nptl/pt-system.c
> @@ -32,21 +32,9 @@
>
> # if HAVE_IFUNC
>
> -static __typeof (system) *
> -__attribute__ ((used))
> -system_resolve (void)
> -{
> - return &__libc_system;
> -}
> -
> -asm (".globl system_ifunc\n"
> - ".type system_ifunc, %gnu_indirect_function");
> -
> -# ifdef HAVE_ASM_SET_DIRECTIVE
> -asm (".set system_ifunc, system_resolve");
> -# else
> -asm ("system_ifunc = system_resolve");
> -# endif
> +extern __typeof(system) system_ifunc;
> +# define INIT_ARCH()
> +libc_ifunc (system_ifunc, &__libc_system)
>
> # else /* !HAVE_IFUNC */
>
>
From e8236a40057b8efd9d16096b023d0ce8a085d3e2 Mon Sep 17 00:00:00 2001
From: Stefan Liebler <stli@linux.vnet.ibm.com>
Date: Mon, 4 Jul 2016 15:33:56 +0200
Subject: [PATCH 6/8] Use libc_ifunc macro for system in libpthread.
This patch uses the libc_ifunc macro to create already existing ifunc function
system_ifunc if HAVE_IFUNC is defined.
ChangeLog:
* nptl/pt-system.c (system_ifunc): Use libc_ifunc macro.
---
nptl/pt-system.c | 19 ++++---------------
1 file changed, 4 insertions(+), 15 deletions(-)
@@ -32,21 +32,10 @@
# if HAVE_IFUNC
-static __typeof (system) *
-__attribute__ ((used))
-system_resolve (void)
-{
- return &__libc_system;
-}
-
-asm (".globl system_ifunc\n"
- ".type system_ifunc, %gnu_indirect_function");
-
-# ifdef HAVE_ASM_SET_DIRECTIVE
-asm (".set system_ifunc, system_resolve");
-# else
-asm ("system_ifunc = system_resolve");
-# endif
+extern __typeof(system) system_ifunc;
+# undef INIT_ARCH
+# define INIT_ARCH()
+libc_ifunc (system_ifunc, &__libc_system)
# else /* !HAVE_IFUNC */
--
2.3.0