summaryrefslogtreecommitdiff
path: root/crypto/armcap.c
diff options
context:
space:
mode:
authorLars Immisch <immisch@adobe.com>2020-03-05 11:26:06 +0100
committerTomas Mraz <tomas@openssl.org>2021-06-15 12:53:26 +0200
commita5d250e57e88650986e8cf2dff6c698c50eb3255 (patch)
treef56587a362ea78e58a0c8169f5dcd47b1422817f /crypto/armcap.c
parent5bbe2134188a45a937e7aefd46b7eeee258d0ab8 (diff)
downloadopenssl-new-a5d250e57e88650986e8cf2dff6c698c50eb3255.tar.gz
Use getauxval on Android with API level > 18
We received analytics that devices of the device family Oppo A37x are crashing with SIGILL when trying to load libcrypto.so. These crashes were fixed by using the system-supplied getauxval function. Reviewed-by: Kurt Roeckx <kurt@roeckx.be> Reviewed-by: Tim Hudson <tjh@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/11257)
Diffstat (limited to 'crypto/armcap.c')
-rw-r--r--crypto/armcap.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/crypto/armcap.c b/crypto/armcap.c
index 43438e0aa4..93aeac85a3 100644
--- a/crypto/armcap.c
+++ b/crypto/armcap.c
@@ -94,6 +94,15 @@ static unsigned long getauxval(unsigned long key)
# endif
/*
+ * Android: according to https://developer.android.com/ndk/guides/cpu-features,
+ * getauxval is supported starting with API level 18
+ */
+# if defined(__ANDROID__) && defined(__ANDROID_API__) && __ANDROID_API__ >= 18
+# include <sys/auxv.h>
+# define OSSL_IMPLEMENT_GETAUXVAL
+# endif
+
+/*
* ARM puts the feature bits for Crypto Extensions in AT_HWCAP2, whereas
* AArch64 used AT_HWCAP.
*/