Message ID | 20210324001150.336441-1-samuel.thibault@ens-lyon.org |
---|---|
State | New |
Headers | show |
Series | elf: Fix not compiling ifunc tests that need gcc ifunc support | expand |
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.
H.J. Lu, le mar. 23 mars 2021 17:22:48 -0700, a ecrit:
> LGTM.
Thanks, applied!
Samuel
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 \