New submission from Ross Burton <r...@burtonini.com>:

Currently configure.ac uses AC_RUN_IFELSE to determine the byte order of floats 
and doubles.  This hurts when cross-compiling because a default is set, 
resulting in Python silently falling back to sub-optimal codepaths.

A partial improvement would be to not set a fallback, to force the user to set 
the right byte order explicitly.

However this test can be done without running anything.  autoconf-archive has a 
macro that uses a carefully constructed double that encodes to an ASCII string 
in the binary, which is then examined using grep.  Evil genius.

Attached is a POC using this.  Currently the autoconf-archive macro only 
handles big and little endian not the ARM OABI mixed-endian format, so 
configure.ac assumes if the byte order is unknown then it's the crazy 
mixed-endian.

To be honest OABI is so old now, I don't believe anyone actually uses it 
anymore: everyone still on ARMv4 should have moved to EABI many years ago, and 
the mixed-endian support could be removed from Py3 in the future.

----------
components: Build
files: 0001-Don-t-do-runtime-test-to-get-float-byte-order.patch
keywords: patch
messages: 324627
nosy: rossburton
priority: normal
severity: normal
status: open
title: Don't use AC_RUN_IFELSE to determine float endian
versions: Python 3.8
Added file: 
https://bugs.python.org/file47788/0001-Don-t-do-runtime-test-to-get-float-byte-order.patch

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue34585>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to