Message ID | 20161109092508.4503-1-jezz@sysmic.org |
---|---|
State | Accepted |
Headers | show |
Hi Jérôme, On Wed, Nov 09, 2016 at 10:25:07AM +0100, Jérôme Pouiller wrote: > Python is not able to detect if compiler double representation is > compliant with IEE754: > > checking whether C doubles are little-endian IEEE 754 binary64... no > checking whether C doubles are big-endian IEEE 754 binary64... no > checking whether C doubles are ARM mixed-endian IEEE 754 binary64... no > > Accordingly 'legacy' mode isused. It is possible to check this at runtime by > check if 'sys.float_repr_style' contains 'short' or 'legacy'. Calculus > correctness is not garanteed with 'legacy'. > > Problem is better described here: > > http://stackoverflow.com/questions/29920294/what-causes-pythons-float-repr-style-to-use-legacy > https://bugs.python.org/issue7117 > > However, all gcc architecture use a representation compliant with IEE754. So, > we can enable it unconditionnaly. > > Signed-off-by: Jérôme Pouiller <jezz@sysmic.org> > --- > package/python/python.mk | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/package/python/python.mk b/package/python/python.mk > index cc65376..0191d59 100644 > --- a/package/python/python.mk > +++ b/package/python/python.mk > @@ -140,6 +140,13 @@ PYTHON_CONF_ENV += \ > ac_cv_prog_HAS_HG=/bin/false \ > ac_cv_prog_SVNVERSION=/bin/false > > +# GCC is always complient with IEEE754 > +ifeq ($(call qstrip,$(BR2_ENDIAN)),LITTLE) I think that ifeq ($(BR2_ENDIAN),"LITTLE") is more readable. That's what most other <pkg>.mk files do. > +PYTHON_CONF_ENV += ac_cv_little_endian_double=yes > +else > +PYTHON_CONF_ENV += ac_cv_big_endian_double=yes > +endif baruch
Hello, On Wed, 9 Nov 2016 10:25:07 +0100, Jérôme Pouiller wrote: > Python is not able to detect if compiler double representation is > compliant with IEE754: > > checking whether C doubles are little-endian IEEE 754 binary64... no > checking whether C doubles are big-endian IEEE 754 binary64... no > checking whether C doubles are ARM mixed-endian IEEE 754 binary64... no > > Accordingly 'legacy' mode isused. It is possible to check this at runtime by > check if 'sys.float_repr_style' contains 'short' or 'legacy'. Calculus > correctness is not garanteed with 'legacy'. > > Problem is better described here: > > http://stackoverflow.com/questions/29920294/what-causes-pythons-float-repr-style-to-use-legacy > https://bugs.python.org/issue7117 > > However, all gcc architecture use a representation compliant with IEE754. So, > we can enable it unconditionnaly. > > Signed-off-by: Jérôme Pouiller <jezz@sysmic.org> > --- > package/python/python.mk | 7 +++++++ > 1 file changed, 7 insertions(+) I've applied both patches, after taking into account the comment from Baruch. Also, I verified that even ARM is not "mixed endian", by running the test case under Qemu ARM. It seems like "mixed endian" was only for the old ARM ABI, which we no longer care about. Thanks for those patches! Thomas
diff --git a/package/python/python.mk b/package/python/python.mk index cc65376..0191d59 100644 --- a/package/python/python.mk +++ b/package/python/python.mk @@ -140,6 +140,13 @@ PYTHON_CONF_ENV += \ ac_cv_prog_HAS_HG=/bin/false \ ac_cv_prog_SVNVERSION=/bin/false +# GCC is always complient with IEEE754 +ifeq ($(call qstrip,$(BR2_ENDIAN)),LITTLE) +PYTHON_CONF_ENV += ac_cv_little_endian_double=yes +else +PYTHON_CONF_ENV += ac_cv_big_endian_double=yes +endif + PYTHON_CONF_OPTS += \ --without-cxx-main \ --without-doc-strings \
Python is not able to detect if compiler double representation is compliant with IEE754: checking whether C doubles are little-endian IEEE 754 binary64... no checking whether C doubles are big-endian IEEE 754 binary64... no checking whether C doubles are ARM mixed-endian IEEE 754 binary64... no Accordingly 'legacy' mode isused. It is possible to check this at runtime by check if 'sys.float_repr_style' contains 'short' or 'legacy'. Calculus correctness is not garanteed with 'legacy'. Problem is better described here: http://stackoverflow.com/questions/29920294/what-causes-pythons-float-repr-style-to-use-legacy https://bugs.python.org/issue7117 However, all gcc architecture use a representation compliant with IEE754. So, we can enable it unconditionnaly. Signed-off-by: Jérôme Pouiller <jezz@sysmic.org> --- package/python/python.mk | 7 +++++++ 1 file changed, 7 insertions(+)