elf: Fix not compiling ifunc tests that need gcc ifunc support

Message ID 20210324001150.336441-1-samuel.thibault@ens-lyon.org
State Committed, archived
Headers
Series elf: Fix not compiling ifunc tests that need gcc ifunc support |

Commit Message

Samuel Thibault March 24, 2021, 12:11 a.m. UTC
  ---
 configure.ac         |  1 +
 elf/Makefile         | 17 ++++++++++++-----
 elf/ifuncmain9.c     | 16 ----------------
 sysdeps/x86/Makefile |  2 ++
 4 files changed, 15 insertions(+), 21 deletions(-)
  

Comments

H.J. Lu March 24, 2021, 12:22 a.m. UTC | #1
On Tue, Mar 23, 2021 at 5:13 PM Samuel Thibault
<samuel.thibault@ens-lyon.org> wrote:
>
> ---
>  configure.ac         |  1 +
>  elf/Makefile         | 17 ++++++++++++-----
>  elf/ifuncmain9.c     | 16 ----------------
>  sysdeps/x86/Makefile |  2 ++
>  4 files changed, 15 insertions(+), 21 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index 16b15b6f90..6a3a9ab620 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -1770,6 +1770,7 @@ LIBC_CONFIG_VAR([have-ifunc], [$libc_cv_ld_gnu_indirect_function])
>  if test x"$libc_cv_gcc_indirect_function" = xyes; then
>    AC_DEFINE(HAVE_GCC_IFUNC)
>  fi
> +LIBC_CONFIG_VAR([have-gcc-ifunc], [$libc_cv_gcc_indirect_function])
>
>  # This is far from the AC_ARG_ENABLE that sets it so that a sysdeps
>  # configure fragment can override the value to prevent this AC_DEFINE.
> diff --git a/elf/Makefile b/elf/Makefile
> index 3b8e13e066..0bef49e53d 100644
> --- a/elf/Makefile
> +++ b/elf/Makefile
> @@ -395,8 +395,10 @@ tests-ifuncstatic := ifuncmain1static ifuncmain1picstatic \
>                 ifuncmain2static ifuncmain2picstatic \
>                 ifuncmain4static ifuncmain4picstatic \
>                 ifuncmain5static ifuncmain5picstatic \
> -               ifuncmain7static ifuncmain7picstatic \
> -               ifuncmain9static ifuncmain9picstatic
> +               ifuncmain7static ifuncmain7picstatic
> +ifeq (yes,$(have-gcc-ifunc))
> +tests-ifuncstatic += ifuncmain9static ifuncmain9picstatic
> +endif
>  tests-static += $(tests-ifuncstatic)
>  tests-internal += $(tests-ifuncstatic)
>  ifeq (yes,$(build-shared))
> @@ -407,15 +409,20 @@ tests-internal += \
>          ifuncmain1staticpic \
>          ifuncmain2 ifuncmain2pic ifuncmain3 ifuncmain4 \
>          ifuncmain5 ifuncmain5pic ifuncmain5staticpic \
> -        ifuncmain7 ifuncmain7pic \
> -        ifuncmain9 ifuncmain9pic
> +        ifuncmain7 ifuncmain7pic
> +ifeq (yes,$(have-gcc-ifunc))
> +tests-internal += ifuncmain9 ifuncmain9pic
> +endif
>  ifunc-test-modules = ifuncdep1 ifuncdep1pic ifuncdep2 ifuncdep2pic \
>                      ifuncdep5 ifuncdep5pic
>  extra-test-objs += $(ifunc-test-modules:=.o)
>  test-internal-extras += $(ifunc-test-modules)
>  ifeq (yes,$(have-fpie))
>  ifunc-pie-tests = ifuncmain1pie ifuncmain1vispie ifuncmain1staticpie \
> -                 ifuncmain5pie ifuncmain6pie ifuncmain7pie ifuncmain9pie
> +                 ifuncmain5pie ifuncmain6pie ifuncmain7pie
> +ifeq (yes,$(have-gcc-ifunc))
> +ifunc-pie-tests += ifuncmain9pie
> +endif
>  ifeq (yes,$(have-textrel_ifunc))
>  ifunc-pie-tests += tst-ifunc-textrel
>  endif
> diff --git a/elf/ifuncmain9.c b/elf/ifuncmain9.c
> index e775c5cfa9..15419a159a 100644
> --- a/elf/ifuncmain9.c
> +++ b/elf/ifuncmain9.c
> @@ -20,8 +20,6 @@
>
>  #include <config.h>
>
> -#ifdef HAVE_GCC_IFUNC
> -
>  # include <stdbool.h>
>  # include <stdio.h>
>
> @@ -92,17 +90,3 @@ main (void)
>
>    return errors;
>  }
> -
> -#else  /* !HAVE_GCC_IFUNC */
> -
> -# include <support/check.h>
> -
> -static int
> -do_test (void)
> -{
> -  FAIL_UNSUPPORTED ("GCC does not support the ifunc attribute");
> -  return 1;                     /* Not reachable.  */
> -}
> -
> -# include <support/test-driver.c>
> -#endif
> diff --git a/sysdeps/x86/Makefile b/sysdeps/x86/Makefile
> index 3ca7bfefe4..8186e45fec 100644
> --- a/sysdeps/x86/Makefile
> +++ b/sysdeps/x86/Makefile
> @@ -16,6 +16,7 @@ tests-static += tst-get-cpu-features-static \
>                 tst-cpu-features-cpuinfo-static \
>                 tst-cpu-features-supports-static
>  ifeq (yes,$(have-ifunc))
> +ifeq (yes,$(have-gcc-ifunc))
>  tests += \
>    tst-ifunc-isa-1 \
>    tst-ifunc-isa-1-static \
> @@ -25,6 +26,7 @@ tests-static += \
>    tst-ifunc-isa-1-static \
>    tst-ifunc-isa-2-static
>  endif
> +endif
>  ifeq (yes,$(enable-x86-isa-level))
>  tests += tst-isa-level-1
>  modules-names += tst-isa-level-mod-1-baseline \
> --
> 2.30.2
>

LGTM.

Thanks.
  
Samuel Thibault March 24, 2021, 8:12 a.m. UTC | #2
H.J. Lu, le mar. 23 mars 2021 17:22:48 -0700, a ecrit:
> LGTM.

Thanks, applied!

Samuel
  

Patch

diff --git a/configure.ac b/configure.ac
index 16b15b6f90..6a3a9ab620 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1770,6 +1770,7 @@  LIBC_CONFIG_VAR([have-ifunc], [$libc_cv_ld_gnu_indirect_function])
 if test x"$libc_cv_gcc_indirect_function" = xyes; then
   AC_DEFINE(HAVE_GCC_IFUNC)
 fi
+LIBC_CONFIG_VAR([have-gcc-ifunc], [$libc_cv_gcc_indirect_function])
 
 # This is far from the AC_ARG_ENABLE that sets it so that a sysdeps
 # configure fragment can override the value to prevent this AC_DEFINE.
diff --git a/elf/Makefile b/elf/Makefile
index 3b8e13e066..0bef49e53d 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -395,8 +395,10 @@  tests-ifuncstatic := ifuncmain1static ifuncmain1picstatic \
 		ifuncmain2static ifuncmain2picstatic \
 		ifuncmain4static ifuncmain4picstatic \
 		ifuncmain5static ifuncmain5picstatic \
-		ifuncmain7static ifuncmain7picstatic \
-		ifuncmain9static ifuncmain9picstatic
+		ifuncmain7static ifuncmain7picstatic
+ifeq (yes,$(have-gcc-ifunc))
+tests-ifuncstatic += ifuncmain9static ifuncmain9picstatic
+endif
 tests-static += $(tests-ifuncstatic)
 tests-internal += $(tests-ifuncstatic)
 ifeq (yes,$(build-shared))
@@ -407,15 +409,20 @@  tests-internal += \
 	 ifuncmain1staticpic \
 	 ifuncmain2 ifuncmain2pic ifuncmain3 ifuncmain4 \
 	 ifuncmain5 ifuncmain5pic ifuncmain5staticpic \
-	 ifuncmain7 ifuncmain7pic \
-	 ifuncmain9 ifuncmain9pic
+	 ifuncmain7 ifuncmain7pic
+ifeq (yes,$(have-gcc-ifunc))
+tests-internal += ifuncmain9 ifuncmain9pic
+endif
 ifunc-test-modules = ifuncdep1 ifuncdep1pic ifuncdep2 ifuncdep2pic \
 		     ifuncdep5 ifuncdep5pic
 extra-test-objs += $(ifunc-test-modules:=.o)
 test-internal-extras += $(ifunc-test-modules)
 ifeq (yes,$(have-fpie))
 ifunc-pie-tests = ifuncmain1pie ifuncmain1vispie ifuncmain1staticpie \
-		  ifuncmain5pie ifuncmain6pie ifuncmain7pie ifuncmain9pie
+		  ifuncmain5pie ifuncmain6pie ifuncmain7pie
+ifeq (yes,$(have-gcc-ifunc))
+ifunc-pie-tests += ifuncmain9pie
+endif
 ifeq (yes,$(have-textrel_ifunc))
 ifunc-pie-tests += tst-ifunc-textrel
 endif
diff --git a/elf/ifuncmain9.c b/elf/ifuncmain9.c
index e775c5cfa9..15419a159a 100644
--- a/elf/ifuncmain9.c
+++ b/elf/ifuncmain9.c
@@ -20,8 +20,6 @@ 
 
 #include <config.h>
 
-#ifdef HAVE_GCC_IFUNC
-
 # include <stdbool.h>
 # include <stdio.h>
 
@@ -92,17 +90,3 @@  main (void)
 
   return errors;
 }
-
-#else  /* !HAVE_GCC_IFUNC */
-
-# include <support/check.h>
-
-static int
-do_test (void)
-{
-  FAIL_UNSUPPORTED ("GCC does not support the ifunc attribute");
-  return 1;                     /* Not reachable.  */
-}
-
-# include <support/test-driver.c>
-#endif
diff --git a/sysdeps/x86/Makefile b/sysdeps/x86/Makefile
index 3ca7bfefe4..8186e45fec 100644
--- a/sysdeps/x86/Makefile
+++ b/sysdeps/x86/Makefile
@@ -16,6 +16,7 @@  tests-static += tst-get-cpu-features-static \
 		tst-cpu-features-cpuinfo-static \
 		tst-cpu-features-supports-static
 ifeq (yes,$(have-ifunc))
+ifeq (yes,$(have-gcc-ifunc))
 tests += \
   tst-ifunc-isa-1 \
   tst-ifunc-isa-1-static \
@@ -25,6 +26,7 @@  tests-static += \
   tst-ifunc-isa-1-static \
   tst-ifunc-isa-2-static
 endif
+endif
 ifeq (yes,$(enable-x86-isa-level))
 tests += tst-isa-level-1
 modules-names += tst-isa-level-mod-1-baseline \