Signed-off-by: Brad Smith <[email protected]>
---
configure.ac | 2 +-
fat-arm64.c | 11 ++++++++++-
fat-ppc.c | 12 ++++++------
3 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/configure.ac b/configure.ac
index 4f27e663..1f53a890 100644
--- a/configure.ac
+++ b/configure.ac
@@ -212,7 +212,7 @@ LSH_FUNC_ALLOCA
# getenv_secure is used for fat overrides,
# getline is used in the testsuite
-AC_CHECK_FUNCS(secure_getenv getline)
+AC_CHECK_FUNCS(secure_getenv getline elf_aux_info)
ASM_WORDS_BIGENDIAN=unknown
AC_C_BIGENDIAN([AC_DEFINE([WORDS_BIGENDIAN], 1)
diff --git a/fat-arm64.c b/fat-arm64.c
index 45cce0cc..36136078 100644
--- a/fat-arm64.c
+++ b/fat-arm64.c
@@ -51,6 +51,8 @@
#if USE_GETAUXVAL
# include <asm/hwcap.h>
# include <sys/auxv.h>
+#elif defined(HAVE_ELF_AUX_INFO)
+# include <sys/auxv.h>
#elif defined(__OpenBSD__)
# include <sys/sysctl.h>
# include <machine/cpu.h>
@@ -133,8 +135,15 @@ get_arm64_features (struct arm64_features *features)
}
else
{
+#if USE_GETAUXVAL || defined(HAVE_ELF_AUX_INFO)
+ unsigned long hwcap = 0;
+
#if USE_GETAUXVAL
- unsigned long hwcap = getauxval(AT_HWCAP);
+ hwcap = getauxval(AT_HWCAP);
+#elif defined(HAVE_ELF_AUX_INFO)
+ elf_aux_info(AT_HWCAP, &hwcap, sizeof(hwcap));
+#endif
+
features->have_aes
= ((hwcap & (HWCAP_ASIMD | HWCAP_AES)) == (HWCAP_ASIMD | HWCAP_AES));
features->have_pmull
diff --git a/fat-ppc.c b/fat-ppc.c
index aaccc116..c4dae3a1 100644
--- a/fat-ppc.c
+++ b/fat-ppc.c
@@ -48,14 +48,14 @@
# include <asm/cputable.h>
# include <sys/auxv.h>
# endif
-#elif defined(__FreeBSD__)
+#elif defined(__FreeBSD__) || defined(__OpenBSD__)
# include <machine/cpu.h>
# ifdef PPC_FEATURE2_HAS_VEC_CRYPTO
# define PPC_FEATURE2_VEC_CRYPTO PPC_FEATURE2_HAS_VEC_CRYPTO
# endif
-# if __FreeBSD__ >= 12
+# ifdef HAVE_ELF_AUX_INFO
# include <sys/auxv.h>
-# else
+# elif !defined(__OpenBSD__)
# include <sys/sysctl.h>
# endif
#endif
@@ -129,11 +129,11 @@ get_ppc_features (struct ppc_features *features)
# if USE_GETAUXVAL
hwcap = getauxval(AT_HWCAP);
hwcap2 = getauxval(AT_HWCAP2);
-# elif defined(__FreeBSD__)
-# if __FreeBSD__ >= 12
+# elif defined(__FreeBSD__) || defined(__OpenBSD__)
+# ifdef HAVE_ELF_AUX_INFO
elf_aux_info(AT_HWCAP, &hwcap, sizeof(hwcap));
elf_aux_info(AT_HWCAP2, &hwcap2, sizeof(hwcap2));
-# else
+# elif !defined(__OpenBSD__)
size_t len;
len = sizeof(hwcap);
sysctlbyname("hw.cpu_features", &hwcap, &len, NULL, 0);
--
2.46.0
_______________________________________________
nettle-bugs mailing list -- [email protected]
To unsubscribe send an email to [email protected]