diff options
-rwxr-xr-x | configure | 2 | ||||
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | elf/Makefile | 17 | ||||
-rw-r--r-- | elf/ifuncmain9.c | 16 | ||||
-rw-r--r-- | sysdeps/x86/Makefile | 2 |
5 files changed, 17 insertions, 21 deletions
@@ -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. diff --git a/configure.ac b/configure.ac index 16b15b6..6a3a9ab 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 3b8e13e..0bef49e 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 e775c5c..15419a1 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 3ca7bfe..8186e45 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 \ |