Discussion:
[openssl-dev] [openssl.org #4632] AutoReply: Configure does not honor ARMv8 and Aarch32 flags
(too old to reply)
via RT
2016-07-29 09:49:51 UTC
Permalink
Attached is a patch that adds two Configure targets: linux-aarch32 and
linux-aarch32hf. It might make a good starting point for Aarch32
support.

The patch enables CRC and Crypto extensions by default. It allows the
library and users with custom engines to use the instructions to
offload to hardware.

Users will have to add their preference for -mtune.

It tested OK under the RPI3, except for the EVP failure reported at
http://rt.openssl.org/Ticket/Display.html?id=4633&user=guest&pass=guest
.

**********

diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf
index d7db9a8..656b169 100644
--- a/Configurations/10-main.conf
+++ b/Configurations/10-main.conf
@@ -677,6 +677,16 @@ sub vms_info {
inherit_from => [ "linux-generic32", asm("armv4_asm") ],
perlasm_scheme => "linux32",
},
+ "linux-aarch32" => {
+ inherit_from => [ "linux-generic32", asm("armv4_asm") ],
+ cflags => add("-march=armv8-a+crc
-mfpu=crypto-neon-fp-armv8 -mfloat-abi=softfp"),
+ perlasm_scheme => "linux32",
+ },
+ "linux-aarch32hf" => {
+ inherit_from => [ "linux-generic32", asm("armv4_asm") ],
+ cflags => add("-march=armv8-a+crc
-mfpu=crypto-neon-fp-armv8 -mfloat-abi=hard"),
+ perlasm_scheme => "linux32",
+ },
"linux-aarch64" => {
inherit_from => [ "linux-generic64", asm("aarch64_asm") ],
perlasm_scheme => "linux64",

On Fri, Jul 29, 2016 at 4:01 AM, The default queue via RT
Greetings,
This message has been automatically generated in response to the
"Configure does not honor ARMv8 and Aarch32 flags",
a summary of which appears below.
There is no need to reply to this message right now. Your ticket has been
assigned an ID of [openssl.org #4632].
[openssl.org #4632]
-------------------------------------------------------------------------
Working from 1a627771634adba9d4f3b5cf7be74d6bab428a5f on a Raspberry
Pi 3. Its ARMv8 with Broadcom SoC using A53 cores. It lacks Crypto
extensions, but includes vmull and crc32 (vmull include arrangements
other than u8). The gadget also runs Raspian, which is a 32-bit OS
with hard floats.
After Configure completes, the library's -march=armv7 takes precedence
over the user's -march=armv8-a{+crc}.
$ ./config -march=armv8-a+crc -mtune=cortex-a53
-mfpu=crypto-neon-fp-armv8 -mfloat-abi=hard
Operating system: armv7l-whatever-linux2
Configuring for linux-armv4
Configuring OpenSSL version 1.1.0-pre6-dev (0x0x10100006L)
no-asan [default] OPENSSL_NO_ASAN (skip dir)
no-crypto-mdebug [default] OPENSSL_NO_CRYPTO_MDEBUG (skip dir)
no-crypto-mdebug-backtrace [default]
OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE (skip dir)
no-ec_nistp_64_gcc_128 [default] OPENSSL_NO_EC_NISTP_64_GCC_128 (skip dir)
no-egd [default] OPENSSL_NO_EGD (skip dir)
no-fuzz-afl [default] OPENSSL_NO_FUZZ_AFL (skip dir)
no-fuzz-libfuzzer [default] OPENSSL_NO_FUZZ_LIBFUZZER (skip dir)
no-heartbeats [default] OPENSSL_NO_HEARTBEATS (skip dir)
no-md2 [default] OPENSSL_NO_MD2 (skip dir)
no-msan [default] OPENSSL_NO_MSAN (skip dir)
no-rc5 [default] OPENSSL_NO_RC5 (skip dir)
no-sctp [default] OPENSSL_NO_SCTP (skip dir)
no-ssl-trace [default] OPENSSL_NO_SSL_TRACE (skip dir)
no-ssl3 [default] OPENSSL_NO_SSL3 (skip dir)
no-ssl3-method [default] OPENSSL_NO_SSL3_METHOD (skip dir)
no-ubsan [default] OPENSSL_NO_UBSAN (skip dir)
no-unit-test [default] OPENSSL_NO_UNIT_TEST (skip dir)
no-weak-ssl-ciphers [default] OPENSSL_NO_WEAK_SSL_CIPHERS (skip dir)
no-zlib [default]
no-zlib-dynamic [default]
Configuring for linux-armv4
CC =gcc
CFLAG =-Wall -O3 -pthread -march=armv8-a+crc
-mtune=cortex-a53 -mfpu=crypto-neon-fp-armv8 -mfloat-abi=hard
-march=armv7-a -Wa,--noexecstack
...
--
Ticket here: http://rt.openssl.org/Ticket/Display.html?id=4632
Please log in as guest with password guest if prompted
Andy Polyakov via RT
2016-07-30 15:47:23 UTC
Permalink
Post by via RT
Attached is a patch that adds two Configure targets: linux-aarch32 and
linux-aarch32hf. It might make a good starting point for Aarch32
support.
The patch enables CRC and Crypto extensions by default.
Code that utilizes crypto extensions is compiled with -march=armv7-a by
default. Or maybe "assembled" is more accurate term.
Post by via RT
It allows the
library and users with custom engines to use the instructions to
offload to hardware.
If some custom engine requires such command line option, it can be used
when compiling the engine. OpenSSL doesn't have to be.
Post by via RT
Users will have to add their preference for -mtune.
See commentary in linux-armv4 section just few lines above. In your case
default configuration with ./config produces perfectly adequate output,
also modulo -mtune argument. Suggested modifications hardly add any value...
--
Ticket here: http://rt.openssl.org/Ticket/Display.html?id=4632
Please log in as guest with password guest if prompted
--
openssl-dev mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev
Loading...