From 16b597807d6c383c6a4730fe27e143271e952edb Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Wed, 24 Mar 2021 01:10:38 +0100 Subject: [PATCH] elf: Fix not compiling ifunc tests that need gcc ifunc support --- configure | 2 ++ configure.ac | 1 + elf/Makefile | 17 ++++++++++++----- elf/ifuncmain9.c | 16 ---------------- sysdeps/x86/Makefile | 2 ++ 5 files changed, 17 insertions(+), 21 deletions(-) diff --git a/configure b/configure index 37cef37413..5dc616a9de 100755 --- 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. 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 -#ifdef HAVE_GCC_IFUNC - # include # include @@ -92,17 +90,3 @@ main (void) return errors; } - -#else /* !HAVE_GCC_IFUNC */ - -# include - -static int -do_test (void) -{ - FAIL_UNSUPPORTED ("GCC does not support the ifunc attribute"); - return 1; /* Not reachable. */ -} - -# include -#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 \