]> granicus.if.org Git - strace/commitdiff
tests/bpf: fix build with incompatibly old linux/bpf.h and/or gcc
authorDmitry V. Levin <ldv@altlinux.org>
Wed, 29 Jul 2015 16:27:16 +0000 (16:27 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Wed, 29 Jul 2015 22:53:07 +0000 (22:53 +0000)
* configure.ac: Check how union bpf_attr.log_buf initialization works.
* tests/bpf.c: Check for HAVE_UNION_BPF_ATTR_LOG_BUF.

configure.ac
tests/bpf.c

index 20fae61cedb12691754b5b43ea0ca6c297b043da..bdaca4662a492f93bc3483fe51a10760f6b172e2 100644 (file)
@@ -253,7 +253,6 @@ AC_CHECK_HEADERS(m4_normalize([
        elf.h
        inttypes.h
        ioctls.h
-       linux/bpf.h
        linux/bsg.h
        linux/falloc.h
        linux/filter.h
@@ -319,6 +318,20 @@ AC_CHECK_HEADERS([linux/input.h], [
        AC_CHECK_MEMBERS([struct input_absinfo.resolution],,, [#include <linux/input.h>])
 ])
 
+AC_CHECK_HEADERS([linux/bpf.h], [
+       AC_CACHE_CHECK([whether union bpf_attr.log_buf initialization works],
+                      [st_cv_have_union_bpf_attr_log_buf],
+               [AC_COMPILE_IFELSE(
+                       [AC_LANG_PROGRAM([[#include <linux/bpf.h>]],
+                                        [[union bpf_attr a = { .log_buf = 0 };]])],
+                       [st_cv_have_union_bpf_attr_log_buf=yes],
+                       [st_cv_have_union_bpf_attr_log_buf=no])])
+       if test $st_cv_have_union_bpf_attr_log_buf = yes; then
+               AC_DEFINE(HAVE_UNION_BPF_ATTR_LOG_BUF, [1],
+                         [Define to 1 if union bpf_attr.log_buf initialization works])
+       fi
+])
+
 AC_CHECK_DECLS([sys_errlist])
 AC_CHECK_DECLS(m4_normalize([
        PTRACE_PEEKUSER,
index b2e019daac78c1c0ebcddccc134cf5bf9f191c16..636fae889da16f3062dfa40d59a80e5983e89ed1 100644 (file)
@@ -7,7 +7,7 @@
 #include <unistd.h>
 #include <sys/syscall.h>
 
-#if defined HAVE_LINUX_BPF_H && defined __NR_bpf
+#if defined HAVE_UNION_BPF_ATTR_LOG_BUF && defined __NR_bpf
 # include <linux/bpf.h>
 
 static const struct bpf_insn insns[] = {