| From e1baa6b439c06f3d0e6be3e381cc746ffb55aee1 Mon Sep 17 00:00:00 2001 |
| From: Mika Lindqvist <postmaster@raasu.org> |
| Date: Wed, 13 Apr 2022 01:22:29 +0300 |
| Subject: [PATCH] Check that sys/auxv.h exists at configure time and add |
| preprocessor define for it. * Protect including sys/auxv.h in all relevant |
| files with the new preprocessor define * Test for both existence of both |
| sys/auxv.h and getauxval() with both cmake and configure |
| |
| [Ben Hutchings: Backport to 2.0.6: |
| - Drop the s390 changes |
| - Change some filenames] |
| |
| Backported from: e1baa6b439c06f3d0e6be3e381cc746ffb55aee1 |
| Signed-off-by: Ben Hutchings <ben.hutchings@mind.be> |
| --- |
| CMakeLists.txt | 4 ++++ |
| arch/arm/armfeature.c | 2 +- |
| arch/power/power.c | 5 ++++- |
| configure | 13 +++++++++++++ |
| 4 files changed, 22 insertions(+), 2 deletions(-) |
| |
| diff --git a/CMakeLists.txt b/CMakeLists.txt |
| index 0dd196130..e4e4b7332 100644 |
| --- a/CMakeLists.txt |
| +++ b/CMakeLists.txt |
| @@ -338,6 +338,10 @@ endif() |
| # |
| # Check for standard/system includes |
| # |
| +check_include_file(sys/auxv.h HAVE_SYS_AUXV_H) |
| +if(HAVE_SYS_AUXV_H) |
| + add_definitions(-DHAVE_SYS_AUXV_H) |
| +endif() |
| check_include_file(sys/sdt.h HAVE_SYS_SDT_H) |
| if(HAVE_SYS_SDT_H) |
| add_definitions(-DHAVE_SYS_SDT_H) |
| diff --git a/arch/arm/arm_features.c b/arch/arm/arm_features.c |
| index 195c94992..f6b67687f 100644 |
| --- a/arch/arm/armfeature.c |
| +++ b/arch/arm/armfeature.c |
| @@ -1,6 +1,6 @@ |
| #include "../../zutil.h" |
| |
| -#if defined(__linux__) |
| +#if defined(__linux__) && defined(HAVE_SYS_AUXV_H) |
| # include <sys/auxv.h> |
| # ifdef ARM_ASM_HWCAP |
| # include <asm/hwcap.h> |
| diff --git a/arch/power/power_features.c b/arch/power/power_features.c |
| index 9186b40d8..65599d9a7 100644 |
| --- a/arch/power/power.c |
| +++ b/arch/power/power.c |
| @@ -1,9 +1,12 @@ |
| /* POWER feature check |
| * Copyright (C) 2020 Matheus Castanho <msc@linux.ibm.com>, IBM |
| + * Copyright (C) 2021-2022 Mika T. Lindqvist <postmaster@raasu.org> |
| * For conditions of distribution and use, see copyright notice in zlib.h |
| */ |
| |
| -#include <sys/auxv.h> |
| +#ifdef HAVE_SYS_AUXV_H |
| +# include <sys/auxv.h> |
| +#endif |
| #include "../../zutil.h" |
| |
| Z_INTERNAL int power_cpu_has_arch_2_07; |
| diff --git a/configure b/configure |
| index aed1909cc..a357e1c8a 100755 |
| --- a/configure |
| +++ b/configure |
| @@ -776,6 +776,19 @@ else |
| echo "Checking for strerror... No." | tee -a configure.log |
| fi |
| |
| +# check for getauxval() for architecture feature detection at run-time |
| +cat > $test.c <<EOF |
| +#include <sys/auxv.h> |
| +int main() { return getauxval(0); } |
| +EOF |
| +if try $CC $CFLAGS -o $test $test.c $LDSHAREDLIBC; then |
| + echo "Checking for getauxval() in sys/auxv.h... Yes." | tee -a configure.log |
| + CFLAGS="${CFLAGS} -DHAVE_SYS_AUXV_H" |
| + SFLAGS="${SFLAGS} -DHAVE_SYS_AUXV_H" |
| +else |
| + echo "Checking for getauxval() in sys/auxv.h... No." | tee -a configure.log |
| +fi |
| + |
| # We need to remove zconf.h from source directory if building outside of it |
| if [ "$SRCDIR" != "$BUILDDIR" ]; then |
| rm -f $SRCDIR/zconf${SUFFIX}.h |