public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
From: Li Wang <liwang@redhat.com>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH v2] include: undefine _LINUX_TYPES_H if including old sys/capability.h
Date: Wed, 16 Oct 2019 16:01:46 +0800	[thread overview]
Message-ID: <20191016080146.18657-1-liwang@redhat.com> (raw)

In some of the libcap-devel(1.96~2.16) versions, it defines the _LINUX_TYPES_H
macro that makes ltp-lib can not include linux/types.h essentially.

    # cat -n /usr/include/sys/capability.h
    ...
    25  /*
    26   * Make sure we can be included from userland by preventing
    27   * capability.h from including other kernel headers
    28   */
    29  #define _LINUX_TYPES_H

To get rid of this compiling errors on rhel6(libcap-devel-2.16) series platform,
here undefine _LINUX_TYPES_H if test included that old sys/capability.h.

  == Error log ==
  In file included from ../include/tst_netlink.h:26,
                 from tst_crypto.c:13:
  /usr/include/linux/netlink.h:45: error: expected specifier-qualifier-list before ?__u16?
  /usr/include/linux/netlink.h:135: error: expected specifier-qualifier-list before ?__u16?
  tst_crypto.c: In function ?tst_crypto_recv_ack?:
  tst_crypto.c:46: error: ?struct nlmsghdr? has no member named ?nlmsg_seq?
  tst_crypto.c:47: error: ?struct nlmsghdr? has no member named ?nlmsg_type?
  tst_crypto.c:47: error: ?struct nlmsghdr? has no member named ?nlmsg_seq?
  tst_crypto.c:55: error: ?struct nlmsghdr? has no member named ?nlmsg_type?
  tst_crypto.c:58: error: ?struct nlmsghdr? has no member named ?nlmsg_type?
  tst_crypto.c:58: error: ?struct nlmsghdr? has no member named ?nlmsg_seq?
  tst_crypto.c: In function ?tst_crypto_add_alg?:
  ...
  make: *** [tst_crypto.o] Error 1

Reported-by: Ping Fang <pifang@redhat.com>
Signed-off-by: Li Wang <liwang@redhat.com>
Cc: Ping Fang <pifang@redhat.com>
Cc: Richard Palethorpe <rpalethorpe@suse.com>
Acked-by: Richard Palethorpe <rpalethorpe@suse.com>
---
 include/lapi/capability.h |  8 ++++++++
 m4/ltp-cap.m4             | 17 ++++++++++++++++-
 2 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/include/lapi/capability.h b/include/lapi/capability.h
index dac233d84..8833f0605 100644
--- a/include/lapi/capability.h
+++ b/include/lapi/capability.h
@@ -10,6 +10,14 @@
 
 #ifdef HAVE_SYS_CAPABILITY_H
 # include <sys/capability.h>
+/**
+ * Some old libcap-devel(1.96~2.16) define _LINUX_TYPES_H in
+ * sys/capability.h that makes ltp-lib cann't include linux/types.h
+ * essentially. Here undefine it if include such old header-file.
+ */
+# ifndef HAVE_NEWER_LIBCAP
+#  undef _LINUX_TYPES_H
+# endif
 #endif
 
 #ifndef CAP_NET_RAW
diff --git a/m4/ltp-cap.m4 b/m4/ltp-cap.m4
index 02d3cac8c..4981e843d 100644
--- a/m4/ltp-cap.m4
+++ b/m4/ltp-cap.m4
@@ -1,6 +1,6 @@
 dnl SPDX-License-Identifier: GPL-2.0-or-later
 dnl Copyright (c) Cisco Systems Inc., 2009
-dnl Copyright (c) Linux Test Project, 2010
+dnl Copyright (c) Linux Test Project, 2019
 dnl Author: Ngie Cooper <yaneurabeya@gmail.com>
 
 AC_DEFUN([LTP_CHECK_CAPABILITY_SUPPORT],[
@@ -14,4 +14,19 @@ if test "x$cap_libs" != x; then
 	AC_DEFINE(HAVE_LIBCAP)
 fi
 AC_SUBST(CAP_LIBS,$cap_libs)
+
+AH_TEMPLATE(HAVE_NEWER_LIBCAP,
+[Define to 1 if you have newer libcap-2 installed.])
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([
+#include <sys/capability.h>
+#include <linux/types.h>
+int main(void) {
+	__u16 a;
+	__u32 b;
+	return 0;
+}])],[has_newer_libcap="yes"])
+
+if test "x$has_newer_libcap" = xyes; then
+	AC_DEFINE(HAVE_NEWER_LIBCAP)
+fi
 ])
-- 
2.20.1


             reply	other threads:[~2019-10-16  8:01 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-16  8:01 Li Wang [this message]
2019-10-16 10:01 ` [LTP] [PATCH v2] include: undefine _LINUX_TYPES_H if including old sys/capability.h Richard Palethorpe
2019-10-17  2:18   ` Li Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191016080146.18657-1-liwang@redhat.com \
    --to=liwang@redhat.com \
    --cc=ltp@lists.linux.it \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox