summaryrefslogtreecommitdiff
path: root/sysdeps/unix
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2013-12-31 03:12:54 -0500
committerMike Frysinger <vapier@gentoo.org>2013-12-31 03:16:42 -0500
commitc8590f9d9edc8d2b8540586648fc9a0130da469e (patch)
tree4c7c1cc4004fb98455b8c956ab21797cd08da97b /sysdeps/unix
parentdd1d85e5ddd6baaf99f53964a718fab85b160149 (diff)
tst-fanotify: check for linux/fanotify.h existence
We support older kernels that lack this header, so check for it before we try to use it. Reported-by: Adhemerval Zanella <azanella@linux.vnet.ibm.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'sysdeps/unix')
-rw-r--r--sysdeps/unix/sysv/linux/configure41
-rw-r--r--sysdeps/unix/sysv/linux/configure.ac6
-rw-r--r--sysdeps/unix/sysv/linux/tst-fanotify.c14
3 files changed, 61 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/configure b/sysdeps/unix/sysv/linux/configure
index 643da86efa..ab0f03c35e 100644
--- a/sysdeps/unix/sysv/linux/configure
+++ b/sysdeps/unix/sysv/linux/configure
@@ -1,3 +1,34 @@
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
# Local configure fragment for sysdeps/unix/sysv/linux.
@@ -267,6 +298,16 @@ else
*** compatible kernel version" "$LINENO" 5
fi
+# Until we start requiring 2.6.37+ headers, we need to check for the
+# availability of linux/fanotify.h for testing purposes.
+ac_fn_c_check_header_compile "$LINENO" "linux/fanotify.h" "ac_cv_header_linux_fanotify_h" "/* No default includes. */
+"
+if test "x$ac_cv_header_linux_fanotify_h" = xyes; then :
+ DEFINES="$DEFINES -DHAVE_LINUX_FANOTIFY_H=1"
+fi
+
+
+
# The result of the above test for the use of the FDE code is invalid if
# the user overrides the decision about the minimum ABI.
if test "$oldest_abi" != default && test "2.2.4" \< "$oldest_abi"; then
diff --git a/sysdeps/unix/sysv/linux/configure.ac b/sysdeps/unix/sysv/linux/configure.ac
index 1be921f65e..6d6053f27e 100644
--- a/sysdeps/unix/sysv/linux/configure.ac
+++ b/sysdeps/unix/sysv/linux/configure.ac
@@ -105,6 +105,12 @@ else
*** compatible kernel version])
fi
+# Until we start requiring 2.6.37+ headers, we need to check for the
+# availability of linux/fanotify.h for testing purposes.
+AC_CHECK_HEADER(linux/fanotify.h,
+ [DEFINES="$DEFINES -DHAVE_LINUX_FANOTIFY_H=1"], ,
+ [/* No default includes. */])
+
# The result of the above test for the use of the FDE code is invalid if
# the user overrides the decision about the minimum ABI.
if test "$oldest_abi" != default && test "2.2.4" \< "$oldest_abi"; then
diff --git a/sysdeps/unix/sysv/linux/tst-fanotify.c b/sysdeps/unix/sysv/linux/tst-fanotify.c
index ad9836b582..7b27545978 100644
--- a/sysdeps/unix/sysv/linux/tst-fanotify.c
+++ b/sysdeps/unix/sysv/linux/tst-fanotify.c
@@ -19,6 +19,18 @@
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
+
+#ifndef HAVE_LINUX_FANOTIFY_H
+
+static int
+do_test (void)
+{
+ puts ("SKIP: missing support for fanotify due to old kernel headers");
+ return 0;
+}
+
+#else
+
#include <sys/fanotify.h>
static int
@@ -56,5 +68,7 @@ do_test (void)
return 0;
}
+#endif
+
#define TEST_FUNCTION do_test ()
#include "../test-skeleton.c"