summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2018-03-12 10:46:23 +0100
committerAndy Polyakov <appro@openssl.org>2018-03-13 19:31:53 +0100
commitb3e02d06ba802aaa137b5f5000b02c504b72cdcb (patch)
tree5d29d48037f17b98f07f93d52bf2c8e35bd47964 /crypto
parentstore/loader_file.c: rename variables causing conflicts with Android NDK. (diff)
downloadopenssl-b3e02d06ba802aaa137b5f5000b02c504b72cdcb.tar.xz
openssl-b3e02d06ba802aaa137b5f5000b02c504b72cdcb.zip
ec/curve25519.c: resolve regression with Android NDK's arm64 gcc.
Unlike "upstream", Android NDK's arm64 gcc [but not clang] performs 64x64=128-bit multiplications with library calls, which appears to have devastating impact on performance. [The condition is reduced to __ANDROID__ [&& !__clang__], because x86_64 has corresponding assembly module.] Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/5589)
Diffstat (limited to 'crypto')
-rw-r--r--crypto/ec/curve25519.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/crypto/ec/curve25519.c b/crypto/ec/curve25519.c
index 45525f4742..0f18ff7c7d 100644
--- a/crypto/ec/curve25519.c
+++ b/crypto/ec/curve25519.c
@@ -13,7 +13,8 @@
#if defined(X25519_ASM) \
|| ( (defined(__SIZEOF_INT128__) && __SIZEOF_INT128__ == 16) \
- && !defined(__sparc__) )
+ && !defined(__sparc__) \
+ && !(defined(__ANDROID__) && !defined(__clang__)) )
/*
* Base 2^51 implementation.
*/