elf/Makefile: Run IFUNC tests if binutils supports IFUNC

Message ID 87ftsfx567.fsf@linux.ibm.com
State Committed
Delegated to: H.J. Lu
Headers

Commit Message

Tulio Magno Quites Machado Filho Feb. 22, 2019, 2:34 p.m. UTC
  "H.J. Lu" <hjl.tools@gmail.com> writes:

> We should run IFUNC tests with --disable-multi-arch if the toolchain
> supports IFUNCs.  For correctness, --disable-multi-arch must not
> remove IFUNC support from the loader.
>
> Tested on x86-64, x32 and i686 with and without --disable-multi-arch.
>
> 	* configure.ac (have-ifunc): New LIBC_CONFIG_VAR.
> 	* configure: Regenerated.
> 	* elf/Makefile: Run IFUNC tests if binutils supports IFUNC.

We should also change this powerpc test:


Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
  

Comments

H.J. Lu Feb. 22, 2019, 2:37 p.m. UTC | #1
On Fri, Feb 22, 2019 at 6:35 AM Tulio Magno Quites Machado Filho
<tuliom@ascii.art.br> wrote:
>
> "H.J. Lu" <hjl.tools@gmail.com> writes:
>
> > We should run IFUNC tests with --disable-multi-arch if the toolchain
> > supports IFUNCs.  For correctness, --disable-multi-arch must not
> > remove IFUNC support from the loader.
> >
> > Tested on x86-64, x32 and i686 with and without --disable-multi-arch.
> >
> >       * configure.ac (have-ifunc): New LIBC_CONFIG_VAR.
> >       * configure: Regenerated.
> >       * elf/Makefile: Run IFUNC tests if binutils supports IFUNC.
>
> We should also change this powerpc test:
>
> diff --git a/sysdeps/powerpc/Makefile b/sysdeps/powerpc/Makefile
> index bac5a3a73c..5c6ea0a95e 100644
> --- a/sysdeps/powerpc/Makefile
> +++ b/sysdeps/powerpc/Makefile
> @@ -14,7 +14,7 @@ mod-tlsopt-powerpc.so-no-z-defs = yes
>  tests += tst-tlsopt-powerpc
>  $(objpfx)tst-tlsopt-powerpc: $(objpfx)mod-tlsopt-powerpc.so
>
> -ifneq (no,$(multi-arch))
> +ifeq (yes,$(have-ifunc))
>  tests-static += tst-tlsifunc-static
>  tests-internal += tst-tlsifunc-static
>  ifeq (yes,$(build-shared))
>
> Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
>

If all supported powerpc binutils have IFUNC, you can drop this test
like x86.
  
Tulio Magno Quites Machado Filho Feb. 26, 2019, 12:01 p.m. UTC | #2
"H.J. Lu" <hjl.tools@gmail.com> writes:

> On Fri, Feb 22, 2019 at 6:35 AM Tulio Magno Quites Machado Filho
> <tuliom@ascii.art.br> wrote:
>>
>> "H.J. Lu" <hjl.tools@gmail.com> writes:
>>
>> > We should run IFUNC tests with --disable-multi-arch if the toolchain
>> > supports IFUNCs.  For correctness, --disable-multi-arch must not
>> > remove IFUNC support from the loader.
>> >
>> > Tested on x86-64, x32 and i686 with and without --disable-multi-arch.
>> >
>> >       * configure.ac (have-ifunc): New LIBC_CONFIG_VAR.
>> >       * configure: Regenerated.
>> >       * elf/Makefile: Run IFUNC tests if binutils supports IFUNC.
>>
>> We should also change this powerpc test:
>>
>> diff --git a/sysdeps/powerpc/Makefile b/sysdeps/powerpc/Makefile
>> index bac5a3a73c..5c6ea0a95e 100644
>> --- a/sysdeps/powerpc/Makefile
>> +++ b/sysdeps/powerpc/Makefile
>> @@ -14,7 +14,7 @@ mod-tlsopt-powerpc.so-no-z-defs = yes
>>  tests += tst-tlsopt-powerpc
>>  $(objpfx)tst-tlsopt-powerpc: $(objpfx)mod-tlsopt-powerpc.so
>>
>> -ifneq (no,$(multi-arch))
>> +ifeq (yes,$(have-ifunc))
>>  tests-static += tst-tlsifunc-static
>>  tests-internal += tst-tlsifunc-static
>>  ifeq (yes,$(build-shared))
>>
>> Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
>>
>
> If all supported powerpc binutils have IFUNC, you can drop this test
> like x86.

Indeed.
I've modified build-many-glibcs to use Binutils 2.25 and confirmed that all
powerpc builds there enable have-ifunc.
  

Patch

diff --git a/sysdeps/powerpc/Makefile b/sysdeps/powerpc/Makefile
index bac5a3a73c..5c6ea0a95e 100644
--- a/sysdeps/powerpc/Makefile
+++ b/sysdeps/powerpc/Makefile
@@ -14,7 +14,7 @@  mod-tlsopt-powerpc.so-no-z-defs = yes
 tests += tst-tlsopt-powerpc
 $(objpfx)tst-tlsopt-powerpc: $(objpfx)mod-tlsopt-powerpc.so
 
-ifneq (no,$(multi-arch))
+ifeq (yes,$(have-ifunc))
 tests-static += tst-tlsifunc-static
 tests-internal += tst-tlsifunc-static
 ifeq (yes,$(build-shared))