From a5d250e57e88650986e8cf2dff6c698c50eb3255 Mon Sep 17 00:00:00 2001 From: Lars Immisch Date: Thu, 5 Mar 2020 11:26:06 +0100 Subject: [PATCH] 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 Reviewed-by: Tim Hudson Reviewed-by: Paul Dale Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/11257) --- crypto/armcap.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/crypto/armcap.c b/crypto/armcap.c index 43438e0aa4f..93aeac85a37 100644 --- a/crypto/armcap.c +++ b/crypto/armcap.c @@ -93,6 +93,15 @@ static unsigned long getauxval(unsigned long key) # endif # 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 +# define OSSL_IMPLEMENT_GETAUXVAL +# endif + /* * ARM puts the feature bits for Crypto Extensions in AT_HWCAP2, whereas * AArch64 used AT_HWCAP. -- 2.47.3