From e1baa6b439c06f3d0e6be3e381cc746ffb55aee1 Mon Sep 17 00:00:00 2001 From: Mika Lindqvist 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 --- 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 # ifdef ARM_ASM_HWCAP # include 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 , IBM + * Copyright (C) 2021-2022 Mika T. Lindqvist * For conditions of distribution and use, see copyright notice in zlib.h */ -#include +#ifdef HAVE_SYS_AUXV_H +# include +#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 < +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