blob: 467a1dc4744fc0e3bd17200165d94a75a90f67f7 [file] [log] [blame]
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