linux: Add soft-fp folder for arm with --without-fp

Message ID 20200304171105.24573-1-adhemerval.zanella@linaro.org
State New
Headers show
Series
  • linux: Add soft-fp folder for arm with --without-fp
Related show

Commit Message

Adhemerval Zanella March 4, 2020, 5:11 p.m.
Currently --without-fp does not add the soft-fp folder before
the generic dbl-64 and flt-32 on arm-linux-gnueabi.  This patch adds
the required Implies file (similar as powerpc, mips32, and
m68k-coldfire have done).

It fixes the math failures:

FAIL: math/test-double-fma
FAIL: math/test-float-double-add
FAIL: math/test-float-double-div
FAIL: math/test-float-double-mul
FAIL: math/test-float-double-sub
FAIL: math/test-float-fma
FAIL: math/test-float-ldouble-add
FAIL: math/test-float-ldouble-div
FAIL: math/test-float-ldouble-mul
FAIL: math/test-float-ldouble-sub
FAIL: math/test-float32-float32x-add
FAIL: math/test-float32-float32x-div
FAIL: math/test-float32-float32x-mul
FAIL: math/test-float32-float32x-sub
FAIL: math/test-float32-float64-add
FAIL: math/test-float32-float64-div
FAIL: math/test-float32-float64-mul
FAIL: math/test-float32-float64-sub
FAIL: math/test-float32-fma
FAIL: math/test-float32x-fma
FAIL: math/test-float64-fma
FAIL: math/test-idouble-fma
FAIL: math/test-ifloat-fma
FAIL: math/test-ifloat32-fma
FAIL: math/test-ifloat32x-fma
FAIL: math/test-ifloat64-fma
FAIL: math/test-ildouble-fma
FAIL: math/test-ldouble-fma

Since the generic fadd, fdiv, fmul, fsub, and fma routines for float
and double requires fenv support to be correctly rounded.

Checked with a arm-linux-gnueabi configured with --without-fp.
---
 sysdeps/unix/sysv/linux/arm/nofpu/Implies | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 sysdeps/unix/sysv/linux/arm/nofpu/Implies

-- 
2.17.1

Comments

Joseph Myers March 5, 2020, 12:55 a.m. | #1
On Wed, 4 Mar 2020, Adhemerval Zanella wrote:

> Currently --without-fp does not add the soft-fp folder before

> the generic dbl-64 and flt-32 on arm-linux-gnueabi.  This patch adds

> the required Implies file (similar as powerpc, mips32, and

> m68k-coldfire have done).


There hasn't been a --without-fp configure option since commit 
8df5d34720dd71e934545bade879e04697830757, so this commit message is 
clearly wrong.

Based on disassembling a 2.27 binary (2.27 being the first release after 
the sysdeps/ieee754/soft-fp directory was added), the sysdeps ordering was 
working then, but I confirm it's broken now.  Thus this raises the 
question of when the ordering broke, and thus (a) whether it might have 
broken for any other configurations using sysdeps/ieee754/soft-fp at the 
same time, and thus need fixing for them, (b) whether the breakage broke 
ordering for anything other than nofpu directories and (c) whether it 
might need a bug filed in Bugzilla if the issue was present in a release.  
The addition of /le sysdeps directories is one change that might have had 
a risk of breaking such ordering, but I don't know if it was that or not.

-- 
Joseph S. Myers
joseph@codesourcery.com
Adhemerval Zanella March 5, 2020, 11:44 a.m. | #2
On 04/03/2020 21:55, Joseph Myers wrote:
> On Wed, 4 Mar 2020, Adhemerval Zanella wrote:

> 

>> Currently --without-fp does not add the soft-fp folder before

>> the generic dbl-64 and flt-32 on arm-linux-gnueabi.  This patch adds

>> the required Implies file (similar as powerpc, mips32, and

>> m68k-coldfire have done).

> 

> There hasn't been a --without-fp configure option since commit 

> 8df5d34720dd71e934545bade879e04697830757, so this commit message is 

> clearly wrong.


Indeed, I clearly forgot about this patch and I was fooled by a lingering
comment in configure.ac.

> 

> Based on disassembling a 2.27 binary (2.27 being the first release after 

> the sysdeps/ieee754/soft-fp directory was added), the sysdeps ordering was 

> working then, but I confirm it's broken now.  Thus this raises the 

> question of when the ordering broke, and thus (a) whether it might have 

> broken for any other configurations using sysdeps/ieee754/soft-fp at the 

> same time, and thus need fixing for them, (b) whether the breakage broke 

> ordering for anything other than nofpu directories and (c) whether it 

> might need a bug filed in Bugzilla if the issue was present in a release.  

> The addition of /le sysdeps directories is one change that might have had 

> a risk of breaking such ordering, but I don't know if it was that or not.

> 


It was the LE/BE sysdeps patch, I will send a new version.
Joseph Myers March 5, 2020, 3:16 p.m. | #3
On Thu, 5 Mar 2020, Adhemerval Zanella wrote:

> > Based on disassembling a 2.27 binary (2.27 being the first release after 

> > the sysdeps/ieee754/soft-fp directory was added), the sysdeps ordering was 

> > working then, but I confirm it's broken now.  Thus this raises the 

> > question of when the ordering broke, and thus (a) whether it might have 

> > broken for any other configurations using sysdeps/ieee754/soft-fp at the 

> > same time, and thus need fixing for them, (b) whether the breakage broke 

> > ordering for anything other than nofpu directories and (c) whether it 

> > might need a bug filed in Bugzilla if the issue was present in a release.  

> > The addition of /le sysdeps directories is one change that might have had 

> > a risk of breaking such ordering, but I don't know if it was that or not.

> 

> It was the LE/BE sysdeps patch, I will send a new version.


Thanks.  Did the microblaze / sh changes break the sysdeps ordering in 
those cases?  (In the microblaze case, there's no nofpu directory and 
ieee754/soft-fp is in the same Implies file as ieee754/flt-32 and 
ieee754/dbl-64, so maybe there isn't an issue there.)

-- 
Joseph S. Myers
joseph@codesourcery.com
Adhemerval Zanella March 5, 2020, 4:29 p.m. | #4
On 05/03/2020 12:16, Joseph Myers wrote:
> On Thu, 5 Mar 2020, Adhemerval Zanella wrote:

> 

>>> Based on disassembling a 2.27 binary (2.27 being the first release after 

>>> the sysdeps/ieee754/soft-fp directory was added), the sysdeps ordering was 

>>> working then, but I confirm it's broken now.  Thus this raises the 

>>> question of when the ordering broke, and thus (a) whether it might have 

>>> broken for any other configurations using sysdeps/ieee754/soft-fp at the 

>>> same time, and thus need fixing for them, (b) whether the breakage broke 

>>> ordering for anything other than nofpu directories and (c) whether it 

>>> might need a bug filed in Bugzilla if the issue was present in a release.  

>>> The addition of /le sysdeps directories is one change that might have had 

>>> a risk of breaking such ordering, but I don't know if it was that or not.

>>

>> It was the LE/BE sysdeps patch, I will send a new version.

> 

> Thanks.  Did the microblaze / sh changes break the sysdeps ordering in 

> those cases?  (In the microblaze case, there's no nofpu directory and 

> ieee754/soft-fp is in the same Implies file as ieee754/flt-32 and 

> ieee754/dbl-64, so maybe there isn't an issue there.)

> 


Only ARM is affected, on both sh and microblaze ieee754/soft-fp is selected
prior ieee754/flt-32 or ieee754/dbl-64. 

For sh4-linux-gnu-soft, 2.30 sysdeps order show:

sysdeps/unix/sysv/linux/sh/sh4
sysdeps/unix/sysv/linux/sh
sysdeps/sh/nptl
sysdeps/unix/sysv/linux
sysdeps/nptl
sysdeps/pthread
sysdeps/gnu
sysdeps/unix/inet
sysdeps/unix/sysv
sysdeps/unix/sh
sysdeps/unix
sysdeps/posix
sysdeps/sh/sh4
sysdeps/sh/nofpu
sysdeps/ieee754/soft-fp
sysdeps/sh
sysdeps/wordsize-32
sysdeps/ieee754/flt-32
sysdeps/ieee754/dbl-64
sysdeps/ieee754
sysdeps/generic

While on master:

sysdeps/unix/sysv/linux/sh/le/sh4
sysdeps/unix/sysv/linux/sh/sh4
sysdeps/unix/sysv/linux/sh/le
sysdeps/unix/sysv/linux/sh
sysdeps/sh/nptl
sysdeps/unix/sysv/linux sysdeps/nptl
sysdeps/pthread
sysdeps/gnu
sysdeps/unix/inet
sysdeps/unix/sysv
sysdeps/unix/sh
sysdeps/unix
sysdeps/posix
sysdeps/sh/le/sh4
sysdeps/sh/sh4
sysdeps/sh/le
sysdeps/sh/nofpu
sysdeps/ieee754/soft-fp
sysdeps/sh
sysdeps/wordsize-32
sysdeps/ieee754/flt-32
sysdeps/ieee754/dbl-64
sysdeps/ieee754
sysdeps/generic

And for microblaze-linux-gnu on 2.31:

sysdeps/unix/sysv/linux/microblaze
sysdeps/microblaze/nptl
sysdeps/unix/sysv/linux
sysdeps/nptl
sysdeps/pthread
sysdeps/gnu
sysdeps/unix/inet
sysdeps/unix/sysv
sysdeps/unix
sysdeps/posix
sysdeps/microblaze
sysdeps/wordsize-32
sysdeps/ieee754/soft-fp
sysdeps/ieee754/flt-32
sysdeps/ieee754/dbl-64
sysdeps/ieee754
sysdeps/generic

While on master:

sysdeps/unix/sysv/linux/microblaze/be
sysdeps/unix/sysv/linux/microblaze
sysdeps/microblaze/nptl
sysdeps/unix/sysv/linux sysdeps/nptl
sysdeps/pthread sysdeps/gnu
sysdeps/unix/inet
sysdeps/unix/sysv
sysdeps/unix
sysdeps/posix
sysdeps/microblaze/be
sysdeps/microblaze
sysdeps/wordsize-32
sysdeps/ieee754/soft-fp 
sysdeps/ieee754/flt-32
sysdeps/ieee754/dbl-64
sysdeps/ieee754
sysdeps/generic

Patch

diff --git a/sysdeps/unix/sysv/linux/arm/nofpu/Implies b/sysdeps/unix/sysv/linux/arm/nofpu/Implies
new file mode 100644
index 0000000000..c90dd7fd5c
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/arm/nofpu/Implies
@@ -0,0 +1 @@ 
+arm/nofpu