poco: disable fpenvironment for MIPS without FPU
PATCH v2 1/1 poco: disable fpenvironment for MIPS without FPU
From: Yegor Yefremov <[email protected]>
glibc fixed a bug, that defined FPU capabilities not available for MIPS without FPU. So add --no-fpenvironment to the configuration options for this case.
---
Changes v1 -> v2:
- put all conditions in one ifeq statement (Thomas Petazzoni)
package/poco/poco.mk | 5 +++++ 1 file changed, 5 insertions(+)
package/poco/poco.mk +5 -0
@@ -42,6 +42,11 @@ ifeq ($(BR2_sh4a)$(BR2_nios2),y) POCO_CONF_OPTS += --no-fpenvironment endif +# MIPS without FPU +ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el):$(BR2_MIPS_SOFT_FLOAT),y:y) +POCO_CONF_OPTS += --no-fpenvironment +endif + ifeq ($(BR2_STATIC_LIBS),y) POCO_MAKE_TARGET = static_release else ifeq ($(BR2_SHARED_LIBS),y)
Signature · 1 line
2.17.0
PATCH v2 1/1 poco: disable fpenvironment for MIPS without FPU
Quoted 5 lines · yegorslists at googlemail.com
From: Yegor Yefremov <[email protected]>
glibc fixed a bug, that defined FPU capabilities not available for MIPS without FPU. So add --no-fpenvironment to the configuration options for this case.
The commit message is still very vague. I think I understand it though,
something like:
On MIPS soft-float, glibc defines some FPU capabilities in fpenv that don't actually exist. This is a bug that has been fixed in glibc but not yet released. Therefore, pass --no-fpenvironment to disable floating-point operations entirely.
It would also be nice to point to the glibc bug.
Quoted 14 lines
Signed-off-by Yegor Yefremov <[email protected]>---
Changes v1 -> v2:
- put all conditions in one ifeq statement (Thomas Petazzoni)package/poco/poco.mk | 5 +++++ 1 file changed, 5 insertions(+)package/poco/poco.mk +0
-0
package/poco/poco.mk ifeq ($(BR2_sh4a)$(BR2_nios2),y) · line 46
Quoted 5 lines
package/poco/poco.mk +2
-0@@ -42,6 +42,11 @@ ifeq ($(BR2_sh4a)$(BR2_nios2),y) POCO_CONF_OPTS += --no-fpenvironment endif +# MIPS without FPU +ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el):$(BR2_MIPS_SOFT_FLOAT),y:y)
BR2_MIPS_SOFT_FLOAT is only defined on MIPS, so it is sufficient to do
ifeq ($(BR2_MIPS_SOFT_FLOAT),y)
However, since this is about a glibc bug, shouldn't it check for a glibc
toolchain as well?
Regards,
Arnout
Quoted 7 lines
package/poco/poco.mk +3
-0+POCO_CONF_OPTS += --no-fpenvironment +endif + ifeq ($(BR2_STATIC_LIBS),y) POCO_MAKE_TARGET = static_release else ifeq ($(BR2_SHARED_LIBS),y)
Signature · 6 lines
Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
PATCH v2 1/1 poco: disable fpenvironment for MIPS without FPU
Hello,
Quoted 2 lines · Arnout Vandecappelle
The commit message is still very vague. I think I understand it though,
something like:
Yes, I agree the commit log was still too vague.
Quoted 9 lines
package/poco/poco.mk ifeq ($(BR2_sh4a)$(BR2_nios2),y) · line 46
Quoted 2 lines
package/poco/poco.mk +2
-0+# MIPS without FPU +ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el):$(BR2_MIPS_SOFT_FLOAT),y:y)
BR2_MIPS_SOFT_FLOATis only defined on MIPS, so it is sufficient to doifeq ($(BR2_MIPS_SOFT_FLOAT),y)
However, since this is about a glibc bug, shouldn't it check for a glibc
toolchain as well?
Isn't the glibc bug that it allowed to use fpenv in situations where it shouldn't have allowed it ? If that's the case, perhaps the other libcs didn't had this bug, and fpenv really shouldn't be used with MIPS soft-float, regardless of the C library in use ?
Best regards,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
PATCH v2 1/1 poco: disable fpenvironment for MIPS without FPU
Quoted 17 lines · Thomas Petazzoni
Hello,
Quoted 2 lines · Arnout Vandecappelle
The commit message is still very vague. I think I understand it though,
something like:Yes, I agree the commit log was still too vague.
Quoted 7 lines
package/poco/poco.mk ifeq ($(BR2_sh4a)$(BR2_nios2),y) · line 46
Quoted 2 lines
package/poco/poco.mk +2
-0+# MIPS without FPU +ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el):$(BR2_MIPS_SOFT_FLOAT),y:y)
BR2_MIPS_SOFT_FLOATis only defined on MIPS, so it is sufficient to doifeq ($(BR2_MIPS_SOFT_FLOAT),y)
Quoted 7 lines
Quoted 2 lines
However, since this is about a glibc bug, shouldn't it check for a glibc
toolchain as well?Isn't the glibc bug that it allowed to use fpenv in situations where it shouldn't have allowed it ? If that's the case, perhaps the other libcs didn't had this bug, and fpenv really shouldn't be used with MIPS soft-float, regardless of the C library in use ?
I've made a compile test with musl and it fails too. So I'll just disable fpenv if BR2_MIPS_SOFT_FLOAT is selected. So ne need to mention glibc.
Strange, that it didn't show up in the build tests ...
Yegor
PATCH v2 1/1 poco: disable fpenvironment for MIPS without FPU
Quoted 28 lines · Yegor Yefremov
Quoted 17 lines · Thomas Petazzoni
Hello,
Quoted 2 lines · Arnout Vandecappelle
The commit message is still very vague. I think I understand it though,
something like:Yes, I agree the commit log was still too vague.
Quoted 7 lines
package/poco/poco.mk ifeq ($(BR2_sh4a)$(BR2_nios2),y) · line 46
Quoted 2 lines
package/poco/poco.mk +2
-0+# MIPS without FPU +ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el):$(BR2_MIPS_SOFT_FLOAT),y:y)
BR2_MIPS_SOFT_FLOATis only defined on MIPS, so it is sufficient to doifeq ($(BR2_MIPS_SOFT_FLOAT),y)
Quoted 7 lines
Quoted 2 lines
However, since this is about a glibc bug, shouldn't it check for a glibc
toolchain as well?Isn't the glibc bug that it allowed to use fpenv in situations where it shouldn't have allowed it ? If that's the case, perhaps the other libcs didn't had this bug, and fpenv really shouldn't be used with MIPS soft-float, regardless of the C library in use ?
Quoted 5 lines
I've made a compile test with musl and it fails too. So I'll just disable fpenv if
BR2_MIPS_SOFT_FLOATis selected. So ne need to mention glibc.Strange, that it didn't show up in the build tests ...
For now we disable fpenv for two archs:
# architectures missing some FE_* in their fenv.h ifeq ($(BR2_sh4a)$(BR2_nios2),y) POCO_CONF_OPTS += --no-fpenvironment endif
Should I just add $(BR2_MIPS_SOFT_FLOAT) to this statement even without changing the comment?
Yegor
PATCH v2 1/1 poco: disable fpenvironment for MIPS without FPU
In reply to Yegor YefremovHello,
Quoted 10 lines · Yegor Yefremov
Quoted 4 lines
Isn't the glibc bug that it allowed to use fpenv in situations where it shouldn't have allowed it ? If that's the case, perhaps the other libcs didn't had this bug, and fpenv really shouldn't be used with MIPS soft-float, regardless of the C library in use ?
I've made a compile test with musl and it fails too. So I'll just disable fpenv if
BR2_MIPS_SOFT_FLOATis selected. So ne need to mention glibc.Strange, that it didn't show up in the build tests ...
We don't test mips/musl in the autobuilders. However, we do test mips/uclibc, but maybe not in soft-float mode.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
PATCH v2 1/1 poco: disable fpenvironment for MIPS without FPU
Quoted 10 lines · Thomas Petazzoni
Hello,
Quoted 5 lines · Yegor Yefremov
Quoted 4 lines
Isn't the glibc bug that it allowed to use fpenv in situations where it shouldn't have allowed it ? If that's the case, perhaps the other libcs didn't had this bug, and fpenv really shouldn't be used with MIPS soft-float, regardless of the C library in use ?
Quoted 8 lines
Quoted 5 lines
I've made a compile test with musl and it fails too. So I'll just disable fpenv if
BR2_MIPS_SOFT_FLOATis selected. So ne need to mention glibc.Strange, that it didn't show up in the build tests ...
We don't test mips/musl in the autobuilders. However, we do test mips/uclibc, but maybe not in soft-float mode.
uclibc has special handling: both fpenv and wstring will be disabled.
Yegor
PATCH v2 1/1 poco: disable fpenvironment for MIPS without FPU
Quoted 16 lines · Yegor Yefremov
Quoted 14 lines · Thomas Petazzoni
Hello,
Quoted 9 lines · Yegor Yefremov
Quoted 4 lines
Isn't the glibc bug that it allowed to use fpenv in situations where it shouldn't have allowed it ? If that's the case, perhaps the other libcs didn't had this bug, and fpenv really shouldn't be used with MIPS soft-float, regardless of the C library in use ?
I've made a compile test with musl and it fails too. So I'll just disable fpenv if
BR2_MIPS_SOFT_FLOATis selected. So ne need to mention glibc.
Quoted 6 lines
Quoted 4 lines
Quoted 1 line
Strange, that it didn't show up in the build tests ...
We don't test mips/musl in the autobuilders. However, we do test mips/uclibc, but maybe not in soft-float mode.
uclibc has special handling: both fpenv and wstring will be disabled.
So, to be fully correct, poco should be build-tested and preferably
runtime-tested on all these softfloat architectures.
Wouldn't it be a lot simpler to just disable the whole fpenv stuff on soft
float unconditionally? Yes, this is not perfect, because there are a few cases where it actually *does* work. But if someone needs those cases, let them please write a proper configure script that detects them. Until then, disable the entire feature on soft float.
Regards,
Arnout
Signature · 6 lines
Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
PATCH v2 1/1 poco: disable fpenvironment for MIPS without FPU
Quoted 27 lines · Arnout Vandecappelle
Quoted 16 lines · Yegor Yefremov
Quoted 14 lines · Thomas Petazzoni
Hello,
Quoted 9 lines · Yegor Yefremov
Quoted 4 lines
Isn't the glibc bug that it allowed to use fpenv in situations where it shouldn't have allowed it ? If that's the case, perhaps the other libcs didn't had this bug, and fpenv really shouldn't be used with MIPS soft-float, regardless of the C library in use ?
I've made a compile test with musl and it fails too. So I'll just disable fpenv if
BR2_MIPS_SOFT_FLOATis selected. So ne need to mention glibc.Quoted 6 lines
Quoted 4 lines
Quoted 1 line
Strange, that it didn't show up in the build tests ...
We don't test mips/musl in the autobuilders. However, we do test mips/uclibc, but maybe not in soft-float mode.
uclibc has special handling: both fpenv and wstring will be disabled.
Quoted 8 lines
So, to be fully correct, poco should be build-tested and preferably
runtime-tested on all these softfloat architectures.Wouldn't it be a lot simpler to just disable the whole fpenv stuff on soft
float unconditionally? Yes, this is not perfect, because there are a few cases where it actually *does* work. But if someone needs those cases, let them please write a proper configure script that detects them. Until then, disable the entire feature on soft float.
Patch already sent. I've tried ARM with soft floating point and it also fails with enabled fpenvironment.
Yegor