elf: Fix not compiling ifunc tests that need gcc ifunc support
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Wed, 24 Mar 2021 00:10:38 +0000 (01:10 +0100)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Wed, 24 Mar 2021 00:52:46 +0000 (01:52 +0100)
configure
configure.ac
elf/Makefile
elf/ifuncmain9.c
sysdeps/x86/Makefile

index 37cef37413e2adeba27e5fb99b59b27b7c953bf6..5dc616a9deff41a52c652636c4367914bcb437b8 100755 (executable)
--- a/configure
+++ b/configure
@@ -6736,6 +6736,8 @@ if test x"$libc_cv_gcc_indirect_function" = xyes; then
   $as_echo "#define HAVE_GCC_IFUNC 1" >>confdefs.h
 
 fi
+config_vars="$config_vars
+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.
index 16b15b6f90ebd0cb1248db121ec8fddd166218f6..6a3a9ab6202d530dcb9fc9d7adf9a25eed144f55 100644 (file)
@@ -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.
index 3b8e13e066e087c5e57e3797aaf15681529d2726..0bef49e53d5642d75fbe12a7e772e4ae1cd7a84b 100644 (file)
@@ -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
index e775c5cfa951c554c8741d3e4d775f1100a6e8e6..15419a159af2bc03aed45041eaa925365bb7537a 100644 (file)
@@ -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
index 3ca7bfefe488276fedce178a4ff757e8f128b89b..8186e45fec88dafd04e2f61150e0cbb803fe4505 100644 (file)
@@ -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 \