| From c915be634cbfb90eb7880ec9efbdba9b98c6d4c1 Mon Sep 17 00:00:00 2001 |
| From: Giulio Benetti <giulio.benetti@benettiengineering.com> |
| Date: Wed, 23 Oct 2019 11:47:03 +0200 |
| Subject: [PATCH] Bug 1590676 - Fix build if arm doesn't support NEON |
| |
| At the moment NSS assumes that ARM supports NEON extension but this is |
| not true and leads to build failure on ARM without NEON extension. |
| Add check to assure USE_HW_AES is not defined if ARM without NEON |
| extension is used. |
| |
| Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com> |
| --- |
| nss/lib/freebl/aes-armv8.c | 5 +++-- |
| nss/lib/freebl/rijndael.c | 3 ++- |
| 2 files changed, 5 insertions(+), 3 deletions(-) |
| |
| diff --git a/nss/lib/freebl/aes-armv8.c b/nss/lib/freebl/aes-armv8.c |
| index 40d5e2d34..057d1aed3 100644 |
| --- a/nss/lib/freebl/aes-armv8.c |
| +++ b/nss/lib/freebl/aes-armv8.c |
| @@ -5,9 +5,10 @@ |
| #include "secerr.h" |
| #include "rijndael.h" |
| |
| -#if (defined(__clang__) || \ |
| +#if ((defined(__clang__) || \ |
| (defined(__GNUC__) && defined(__GNUC_MINOR__) && \ |
| - (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 8)))) |
| + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 8)))) && \ |
| + (defined(__ARM_NEON) || defined(__ARM_NEON__))) |
| |
| #ifndef __ARM_FEATURE_CRYPTO |
| #error "Compiler option is invalid" |
| diff --git a/nss/lib/freebl/rijndael.c b/nss/lib/freebl/rijndael.c |
| index 26bd58ee0..6d77d942d 100644 |
| --- a/nss/lib/freebl/rijndael.c |
| +++ b/nss/lib/freebl/rijndael.c |
| @@ -20,7 +20,8 @@ |
| #include "gcm.h" |
| #include "mpi.h" |
| |
| -#if !defined(IS_LITTLE_ENDIAN) && !defined(NSS_X86_OR_X64) |
| +#if (!defined(IS_LITTLE_ENDIAN) && !defined(NSS_X86_OR_X64)) || \ |
| + (defined(__arm__) && !defined(__ARM_NEON) && !defined(__ARM_NEON__)) |
| // not test yet on big endian platform of arm |
| #undef USE_HW_AES |
| #endif |
| -- |
| 2.20.1 |
| |