diff options
author | Lars Immisch <immisch@adobe.com> | 2020-03-05 11:26:06 +0100 |
---|---|---|
committer | Tomas Mraz <tomas@openssl.org> | 2021-06-15 12:53:26 +0200 |
commit | a5d250e57e88650986e8cf2dff6c698c50eb3255 (patch) | |
tree | f56587a362ea78e58a0c8169f5dcd47b1422817f /crypto/armcap.c | |
parent | 5bbe2134188a45a937e7aefd46b7eeee258d0ab8 (diff) |
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.c | 9 |
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. */ |