Patchwork [BZ,#19058] Better workaround for aliases of *_finite symbols in vector math library

login
register
mail settings
Submitter Andrew Senkevich
Date Dec. 3, 2015, 12:48 p.m.
Message ID <CAMXFM3sazbbYWZ-eYqm8F00oWAFjWcTuo2j8AHs_Cv5AethnLQ@mail.gmail.com>
Download mbox | patch
Permalink /patch/9865/
State New
Headers show

Comments

Andrew Senkevich - Dec. 3, 2015, 12:48 p.m.
2015-12-02 23:37 GMT+03:00 Aurelien Jarno <aurelien@aurel32.net>:
> On 2015-11-26 19:17, Andrew Senkevich wrote:
>> Hi,
>>
>> BZ #19058 shows that current workaround based on assembly aliases can
>> lead to link fail with -fopenmp and -flto options.
>> This patch makes workaround in another way to avoid such linker fails.
>>
>> 2015-11-26  Andrew Senkevich  <andrew.senkevich@intel.com>
>>
>>        [BZ #19058]
>>        * math/Makefile ($(inst_libdir)/libm.so): Added libmvec_nonshared.a to
>>        AS_NEEDED.
>>        * sysdeps/x86/fpu/bits/math-vector.h: Removed code with old
>>        workaround.
>>        * sysdeps/x86_64/fpu/Makefile (libmvec-support,
>>        libmvec-static-only-routines): Added new file.
>>        * sysdeps/x86_64/fpu/svml_finite_alias.S: New file.
>>
>> diff --git a/math/Makefile b/math/Makefile
>> index 0ff3baa..6a926e9 100644
>> --- a/math/Makefile
>> +++ b/math/Makefile
>> @@ -99,7 +99,7 @@ $(inst_libdir)/libm.so: $(common-objpfx)format.lds \
>>         (echo '/* GNU ld script'; echo '*/';\
>>          cat $<; \
>>          echo 'GROUP ( $(slibdir)/libm.so$(libm.so-version) ' \
>> -             'AS_NEEDED ( $(slibdir)/libmvec.so$(libmvec.so-version) ) )' \
>> +             'AS_NEEDED ( $(slibdir)/libmvec_nonshared.a
>> $(slibdir)/libmvec.so$(libmvec.so-version) ) )' \
>>         ) > $@
>>  endif
>
> This is wrong. libmvec_nonshared.a is installed in $(libdir) and not in
> $(slibdir). Thus linking fails.

Thank you, unfortunately it was not found on x86-64 testing.

        * math/Makefile ($(inst_libdir)/libm.so): Correct path for

 endif


Is it ok for trunk and 2.22 branch?


--
WBR,
Andrew
Joseph Myers - Dec. 3, 2015, 4:14 p.m.
On Thu, 3 Dec 2015, Andrew Senkevich wrote:

> Thank you, unfortunately it was not found on x86-64 testing.
> 
>         * math/Makefile ($(inst_libdir)/libm.so): Correct path for
> 
> diff --git a/math/Makefile b/math/Makefile
> index 6a926e9..20f90d9 100644
> --- a/math/Makefile
> +++ b/math/Makefile
> @@ -99,7 +99,7 @@ $(inst_libdir)/libm.so: $(common-objpfx)format.lds \
>         (echo '/* GNU ld script'; echo '*/';\
>          cat $<; \
>          echo 'GROUP ( $(slibdir)/libm.so$(libm.so-version) ' \
> -             'AS_NEEDED ( $(slibdir)/libmvec_nonshared.a
> $(slibdir)/libmvec.so$(libmvec.so-version) ) )' \
> +             'AS_NEEDED ( $(libdir)/libmvec_nonshared.a
> $(slibdir)/libmvec.so$(libmvec.so-version) ) )' \
>         ) > $@
>  endif
> 
> 
> Is it ok for trunk and 2.22 branch?

OK.
Aurelien Jarno - Dec. 3, 2015, 8:32 p.m.
On 2015-12-03 15:48, Andrew Senkevich wrote:
> 2015-12-02 23:37 GMT+03:00 Aurelien Jarno <aurelien@aurel32.net>:
> > On 2015-11-26 19:17, Andrew Senkevich wrote:
> >> Hi,
> >>
> >> BZ #19058 shows that current workaround based on assembly aliases can
> >> lead to link fail with -fopenmp and -flto options.
> >> This patch makes workaround in another way to avoid such linker fails.
> >>
> >> 2015-11-26  Andrew Senkevich  <andrew.senkevich@intel.com>
> >>
> >>        [BZ #19058]
> >>        * math/Makefile ($(inst_libdir)/libm.so): Added libmvec_nonshared.a to
> >>        AS_NEEDED.
> >>        * sysdeps/x86/fpu/bits/math-vector.h: Removed code with old
> >>        workaround.
> >>        * sysdeps/x86_64/fpu/Makefile (libmvec-support,
> >>        libmvec-static-only-routines): Added new file.
> >>        * sysdeps/x86_64/fpu/svml_finite_alias.S: New file.
> >>
> >> diff --git a/math/Makefile b/math/Makefile
> >> index 0ff3baa..6a926e9 100644
> >> --- a/math/Makefile
> >> +++ b/math/Makefile
> >> @@ -99,7 +99,7 @@ $(inst_libdir)/libm.so: $(common-objpfx)format.lds \
> >>         (echo '/* GNU ld script'; echo '*/';\
> >>          cat $<; \
> >>          echo 'GROUP ( $(slibdir)/libm.so$(libm.so-version) ' \
> >> -             'AS_NEEDED ( $(slibdir)/libmvec.so$(libmvec.so-version) ) )' \
> >> +             'AS_NEEDED ( $(slibdir)/libmvec_nonshared.a
> >> $(slibdir)/libmvec.so$(libmvec.so-version) ) )' \
> >>         ) > $@
> >>  endif
> >
> > This is wrong. libmvec_nonshared.a is installed in $(libdir) and not in
> > $(slibdir). Thus linking fails.
> 
> Thank you, unfortunately it was not found on x86-64 testing.
> 
>         * math/Makefile ($(inst_libdir)/libm.so): Correct path for
> 
> diff --git a/math/Makefile b/math/Makefile
> index 6a926e9..20f90d9 100644
> --- a/math/Makefile
> +++ b/math/Makefile
> @@ -99,7 +99,7 @@ $(inst_libdir)/libm.so: $(common-objpfx)format.lds \
>         (echo '/* GNU ld script'; echo '*/';\
>          cat $<; \
>          echo 'GROUP ( $(slibdir)/libm.so$(libm.so-version) ' \
> -             'AS_NEEDED ( $(slibdir)/libmvec_nonshared.a
> $(slibdir)/libmvec.so$(libmvec.so-version) ) )' \
> +             'AS_NEEDED ( $(libdir)/libmvec_nonshared.a
> $(slibdir)/libmvec.so$(libmvec.so-version) ) )' \
>         ) > $@
>  endif
> 
> 
> Is it ok for trunk and 2.22 branch?

Thanks!

Patch

diff --git a/math/Makefile b/math/Makefile
index 6a926e9..20f90d9 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -99,7 +99,7 @@  $(inst_libdir)/libm.so: $(common-objpfx)format.lds \
        (echo '/* GNU ld script'; echo '*/';\
         cat $<; \
         echo 'GROUP ( $(slibdir)/libm.so$(libm.so-version) ' \
-             'AS_NEEDED ( $(slibdir)/libmvec_nonshared.a
$(slibdir)/libmvec.so$(libmvec.so-version) ) )' \
+             'AS_NEEDED ( $(libdir)/libmvec_nonshared.a
$(slibdir)/libmvec.so$(libmvec.so-version) ) )' \
        ) > $@