There is inconsistency in ARM support and I'd like to gather some
opinions on how to resolve it. Circulate this to ARM people near you.

At some point an inconsistency of following nature was introduced and
then just grew. OpenSSL attempts to adapt to processor it's running on
by detecting capabilities and using run-time switch between different
code paths. The code probing capabilities is compiled and executed on
all supported ARM architectures, ARMv4 through ARMv8. Original rationale
was that one should be able to produce "universal" binary that can be
executed on wide range of processors and deliver optimal performance on
all of them. But at the same time assembly modules have #if
__ARM_ARCH__>=X which effectively renders them not as universal as
implied in capability probing code. This is the inconsistency. There are
two ways to resolve it.

1. __ARM_ARCH__ is effectively controlled by compiler -march command
line option, which naturally also controls compiler-generated outcome.
In order to live up to original intention to produce "universal" binary,
it would be appropriate to tell *compiler* to generate code for minimal
architecture one wants to target, but tell *assembler* to accept
instructions for maximum architecture one wants to target, e.g.
-march=armv4 -Wa,-march=armv7-a.

2. Abandon the idea of producing true "universal" binary and limit
capability detection to contemporary processor families, ARMv7/8 for the
moment of this writing. And run pre-ARMv7 without capability detection
(there is nothing to detect really).

I suppose distro vendors would prefer 2nd option, because everything has
to match anyway. ISV on the other hand might prefer 1st one, unless of
course they target specific distros one by one rather than providing
unified binaries that can be executed on multiple distros.
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to