On Tue, Mar 23, 2021 at 5:13 PM Samuel Thibault <[email protected]> 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. -- H.J.
