linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mikko Rapeli <mikko.rapeli@iki.fi>
To: linux-kernel@vger.kernel.org
Cc: Mikko Rapeli <mikko.rapeli@iki.fi>
Subject: [PATCH 02/98] scripts/headers_compile_test.sh: compile test script for exported headers
Date: Sat, 30 May 2015 17:37:54 +0200	[thread overview]
Message-ID: <1433000370-19509-3-git-send-email-mikko.rapeli@iki.fi> (raw)
In-Reply-To: <1433000370-19509-1-git-send-email-mikko.rapeli@iki.fi>

Users of kernel header files would be happier if they did not contain
kernel specific parts and would contain #include statements for all
other header files that they depend on, and in general would compile.

For each header file exported to userspace, this script creates
a simple .c file which just includes the header file. Then it
tries to compile it together with minimal header files from GCC
and libc, and reports results.

Default libc and GCC header file locations are parsed from compiler
configuration.

Kernel headers depend on GCC headers so their path is included in
the test compiler command line.

Some gcc and kernel headers depend on libc headers which are made available
by copying from the compiler default location to a temporary location and
removing possibly existing kernel headers from this directory. This is a bit
of a hack but seems to work in multiple environments.

Tested natively on:

Debian unstable, i586-linux-gnu and gcc 4.9.2
Raspbian Wheezy, arm-linux-gnueabihf and gcc 4.6.3
Ubuntu 12.04 LTS, x86_64-linux-gnu and gcc 4.6.3

Tested cross compilation using standard CROSS_COMPILE=/path/to/gcc with:

arm-linux-gnueabihf-gcc (crosstool-NG linaro-1.13.1-4.9-2014.09 - Linaro GCC 4.9-2014.09) 4.9.2 20140904 (prerelease)

Execute the script in the directory where kernel header files are installed.
For example:

$ make headers_install
$ cd usr/include
$ ../../scripts/headers_compile_test.sh

Example statistics from 3.18.4 kernel:

130 files failed the compile test.
609 files passed the compile test.

Example error types from 3.18.4 kernel:

$ ../../scripts/headers_compile_test.sh 2>&1 | \
grep error: | sed -e 's/.*error://g' | sort | uniq -c | sort -rn

    352  unknown type name ‘uint32_t’
    134  unknown type name ‘uint64_t’
    103  unknown type name ‘size_t’
     43  unknown type name ‘__kernel_ulong_t’
     38  unknown type name ‘uint8_t’
     24  unknown type name ‘int32_t’
     22  field ‘addr’ has incomplete type
     18  field ‘tstamp’ has incomplete type
     16  unknown type name ‘__kernel_time_t’
     16  field ‘in’ has incomplete type
     16  field ‘in6’ has incomplete type
     14  unknown type name ‘__be16’
     13  ‘IFNAMSIZ’ undeclared here (not in a function)
     12  unknown type name ‘uint16_t’
      9  field ‘ifru_netmask’ has incomplete type
      9  field ‘ifru_hwaddr’ has incomplete type
      9  field ‘ifru_dstaddr’ has incomplete type
      9  field ‘ifru_broadaddr’ has incomplete type
      9  field ‘ifru_addr’ has incomplete type
      8  unknown type name ‘__kernel_pid_t’
      7  unknown type name ‘u_short’
      7  unknown type name ‘pid_t’
      6  invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
      6  field ‘src’ has incomplete type
      6  field ‘audio_tstamp’ has incomplete type
      6  array type has incomplete element type
      5  unknown type name ‘__kernel_long_t’
      5  requested alignment is not an integer constant
      5  field ‘smsk’ has incomplete type
      4  unknown type name ‘__kernel_uid32_t’
      4  unknown type name ‘__kernel_gid32_t’
      4  ‘ETH_ALEN’ undeclared here (not in a function)
      3  unknown type name ‘int64_t’
      3  unknown type name ‘caddr_t’
      3  ‘IPSET_ERR_TYPE_SPECIFIC’ undeclared here (not in a function)
      3  field ‘trigger_tstamp’ has incomplete type
      3  field ‘src_addr’ has incomplete type
      3  field ‘sin_addr’ has incomplete type
      3  field ‘laddr’ has incomplete type
      3  field ‘id’ has incomplete type
      3  field ‘dmsk’ has incomplete type
      3  field ‘bssid’ has incomplete type
      3  expected specifier-qualifier-list before ‘uint64_t’
      2  unknown type name ‘u_long’
      2  unknown type name ‘stack_t’
      2  unknown type name ‘sigset_t’
      2  unknown type name ‘sa_family_t’
      2  unknown type name ‘__kernel_mode_t’
      2  unknown type name ‘__kernel_key_t’
      2  unknown type name ‘elf_gregset_t’
      2  unknown type name ‘bool’
      2  ‘uint64_t’ undeclared here (not in a function)
      2  ‘true’ undeclared (first use in this function)
      2  ‘NAME_MAX’ undeclared here (not in a function)
      2  ‘__kernel_mode_t’ undeclared here (not in a function)
      2  invalid application of ‘sizeof’ to incomplete type ‘struct sockaddr’
      2  field ‘uc_mcontext’ has incomplete type
      2  field ‘tmsk’ has incomplete type
      2  field ‘tgt’ has incomplete type
      2  field ‘shm_perm’ has incomplete type
      2  field ‘sem_perm’ has incomplete type
      2  field ‘raddr’ has incomplete type
      2  field ‘msg_perm’ has incomplete type
      2  field ‘grp’ has incomplete type
      2  field ‘dst’ has incomplete type
      2  field ‘dst_addr’ has incomplete type
      2  field ‘arp_pa’ has incomplete type
      2  field ‘arp_netmask’ has incomplete type
      2  field ‘arp_ha’ has incomplete type
      2  ‘false’ undeclared (first use in this function)
      1  xen/interface/xen.h: No such file or directory
      1  via_drmclient.h: No such file or directory
      1  unknown type name ‘wait_queue_head_t’
      1  unknown type name ‘snd_seq_client_type_t’
      1  unknown type name ‘int16_t’
      1  unknown type name ‘ino_t’
      1  unknown type name ‘elf_greg_t’
      1  unknown type name ‘elf_fpxregset_t’
      1  unknown type name ‘elf_fpregset_t’
      1  unknown type name ‘__be32’
      1  ‘SIOCDEVPRIVATE’ undeclared here (not in a function)
      1  ‘sa_family_t’ undeclared here (not in a function)
      1  ‘NULL’ undeclared (first use in this function)
      1  ‘MSG_FIN’ undeclared here (not in a function)
      1  ‘MAX_IPOPTLEN’ undeclared here (not in a function)
      1  ‘MAX_ADDR_LEN’ undeclared here (not in a function)
      1  ‘IFHWADDRLEN’ undeclared here (not in a function)
      1  field ‘vmask’ has incomplete type
      1  field ‘vifc_rmt_addr’ has incomplete type
      1  field ‘vifc_lcl_addr’ has incomplete type
      1  field ‘vaddr’ has incomplete type
      1  field ‘uc_chain’ has incomplete type
      1  field ‘tgt_ip’ has incomplete type
      1  field ‘tcp’ has incomplete type
      1  field ‘sw_reserved’ has incomplete type
      1  field ‘sspp_addr’ has incomplete type
      1  field ‘ssp_addr’ has incomplete type
      1  field ‘src_mask’ has incomplete type
      1  field ‘src_ip’ has incomplete type
      1  field ‘spt_address’ has incomplete type
      1  field ‘spp_address’ has incomplete type
      1  field ‘spinfo_address’ has incomplete type
      1  field ‘spc_aaddr’ has incomplete type
      1  field ‘sas_obs_rto_ipaddr’ has incomplete type
      1  field ‘saddr’ has incomplete type
      1  field ‘rtmsg_src’ has incomplete type
      1  field ‘rtmsg_gateway’ has incomplete type
      1  field ‘rtmsg_dst’ has incomplete type
      1  field ‘rt_genmask’ has incomplete type
      1  field ‘rt_gateway’ has incomplete type
      1  field ‘rt_dst’ has incomplete type
      1  field ‘real’ has incomplete type
      1  field ‘prefix’ has incomplete type
      1  field ‘obj_list’ has incomplete type
      1  field ‘mfcc_origin’ has incomplete type
      1  field ‘mfcc_mcastgrp’ has incomplete type
      1  field ‘mf6cc_origin’ has incomplete type
      1  field ‘mf6cc_mcastgrp’ has incomplete type
      1  field ‘mask’ has incomplete type
      1  field ‘ival2’ has incomplete type
      1  field ‘ival1’ has incomplete type
      1  field ‘iph’ has incomplete type
      1  field ‘ip’ has incomplete type
      1  field ‘im_src’ has incomplete type
      1  field ‘im_dst’ has incomplete type
      1  field ‘im6_src’ has incomplete type
      1  field ‘im6_dst’ has incomplete type
      1  field ‘gw’ has incomplete type
      1  field ‘expected’ has incomplete type
      1  field ‘dst_mask’ has incomplete type
      1  field ‘dest_addr’ has incomplete type
      1  field ‘daddr’ has incomplete type
      1  field ‘ap_addr’ has incomplete type
      1  field ‘a6’ has incomplete type
      1  field ‘a4’ has incomplete type
      1  expected specifier-qualifier-list before ‘DECLARE_BITMAP’
      1  expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘snd_seq_client_type_t’
      1  #error "patchkey.h included directly"
      1  ‘DLM_RESNAME_MAXLEN’ undeclared here (not in a function)

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
---
 scripts/headers_compile_test.sh | 143 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 143 insertions(+)
 create mode 100755 scripts/headers_compile_test.sh

diff --git a/scripts/headers_compile_test.sh b/scripts/headers_compile_test.sh
new file mode 100755
index 0000000..9a73945
--- /dev/null
+++ b/scripts/headers_compile_test.sh
@@ -0,0 +1,143 @@
+#!/bin/bash
+# bash due to arithmetics and pipefail
+set -euo pipefail
+
+# Debugging
+#set -x
+
+echo Simple compile test for header files meant for userspace.
+
+# sanity test
+if [ ! -d ./linux ]; then
+	echo Sanity check error: ./linux directory not found
+	echo Should be called in usr/include after \'make headers_install\'.
+	echo Returns number of failed files, 0 if none.
+	exit 1
+fi
+
+# Support CC variable for compiler and ccache, and cross compiling.
+# CC is used without quotes to support CC="ccache gcc".
+set +u
+if [ "$CC"foobar == "foobar" ]; then
+	CC=cc
+fi
+
+if [ "$CROSS_COMPILE"foobar != "foobar" ]; then
+	# Using gcc name since some cross compiler tool chains don't provide
+	# the cc symlink
+	CC="$CROSS_COMPILE"gcc
+fi
+set -u
+
+# Kernel headers refer to some gcc and libc headers so make them available.
+set +u
+if [ "$ARCH_TRIPLET"foobar == "foobar" ]; then
+	# Taking triplet from gcc/cpp
+	ARCH_TRIPLET="$( $CC -v -x c -E - < /dev/null 2>&1 | \
+			grep Target | sed -e 's/Target: //' )"
+fi
+
+if [ "$LIBC"foobar == "foobar" ]; then
+	# trying to grep libc includes from gcc/cpp defaults
+	_TEMP="$( $CC -v -x c -E - < /dev/null 2>&1 | \
+		sed -n -e '/^#include <...> search starts here:$/,/^End of search list.$/{//!p}' | \
+		sed -e 's/^\ \//\//g' | \
+		grep '/usr/include' )"
+
+	# sanity check and prepare LIBC dirs
+	for d in $_TEMP; do
+		if [ ! -d "$d" ]; then
+			echo "$d not a directory"
+			exit 1
+		fi
+		LIBC="$LIBC $d"
+	done
+fi
+set -u
+
+# Copy libc include files to temp directory for the tests.
+
+COMPILE_TEST_INC=../headers_compile_test_include
+rm -rf "$COMPILE_TEST_INC"
+mkdir -p "$COMPILE_TEST_INC"
+
+for d in $LIBC; do
+	# check if last part of dir is the arch triplet, cross compile paths
+	# can have it also elsewhere so just the last one counts.
+	if !( echo "$d" | egrep "$ARCH_TRIPLET$" > /dev/null ); then
+		# hopefully just main libc dir, e.g. /usr/include
+		cp -a "$d"/* "$COMPILE_TEST_INC"/
+	elif ( echo "$d" | egrep "$ARCH_TRIPLET$" > /dev/null ); then
+		# hopefully the arch specific dir, e.g. /usr/include/x86_64-linux-gnu
+		cp -ar "$d"/* "$COMPILE_TEST_INC/"
+	else
+		echo "$d unexpected, bailing out"
+		exit 1
+	fi
+done
+
+# Simulate libc headers without kernel headers by removing
+# all known kernel header dirs from the copied libc ones.
+# This seems to magically work.
+_KERNEL_DIRS="$( find . -type d | grep -v '^\.$' )"
+( cd "$COMPILE_TEST_INC" && rm -rf $_KERNEL_DIRS )
+
+# GCC headers
+set +u
+if [ "$GCC_INC"foobar == "foobar" ]; then
+	# Take from $CC default system include paths, filter out
+	# /usr/local/include and /usr/include stuff first, then try to match
+	# for gcc.
+	_TEMP="$( $CC -v -x c -E - < /dev/null 2>&1 | \
+		sed -n -e '/^#include <...> search starts here:$/,/^End of search list.$/{//!p}' | \
+		sed -e 's/^\ \//\//g' | \
+		egrep -v '/usr/local/include' | \
+		egrep -v '/usr/include' | \
+		grep gcc | \
+		xargs )"
+
+	# merge and prepare for use with $CC
+	for d in $_TEMP; do
+		# sanity test
+		if [ ! -d "$d" ]; then
+			echo "$d: is not a directory"
+			exit 1
+		fi
+		GCC_INC="$GCC_INC -I $d"
+	done
+fi
+set -u
+
+# For each header file, create a .c which includes the header file
+# and try to compile it using only current directory for searching other
+# included header files.
+_FAILED=0
+_PASSED=0
+for f in $( find . -name "*\.h" | xargs ); do
+	_FAIL=0
+	CFILE="$( echo "$( dirname "$f" )"/"$( basename "$f" .h )".c )"
+
+	# create .c file
+	echo "#include <"$( echo "$f" | sed -e 's|^.\/||' )">" \
+		> "$(dirname "$f")"/"$(basename "$f" .h)".c
+
+	# compile test, CC not quoted to support ccache
+	echo $CC -Wall -c -nostdinc $GCC_INC -I . -I "$COMPILE_TEST_INC" -I "$COMPILE_TEST_INC/$ARCH_TRIPLET" "$CFILE"
+	$CC -Wall -c -nostdinc $GCC_INC -I . -I "$COMPILE_TEST_INC" -I "$COMPILE_TEST_INC/$ARCH_TRIPLET" "$CFILE" \
+		|| _FAIL=1
+
+	# report errors
+	if [ "$_FAIL" -gt 0 ]; then
+		echo "FAILED: $f"
+		_FAILED="$(( $_FAILED + 1 ))"
+	else
+		echo "PASSED: $f"
+		_PASSED="$(( $_PASSED + 1))"
+	fi
+done
+
+echo Statistics:
+echo "$_FAILED files failed the compile test."
+echo "$_PASSED files passed the compile test."
+
+exit "$_FAILED"
-- 
2.1.4


  parent reply	other threads:[~2015-05-30 15:40 UTC|newest]

Thread overview: 143+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-30 15:37 [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Mikko Rapeli
2015-05-30 15:37 ` [PATCH 01/98] headers_install.sh: enhance error handling Mikko Rapeli
2015-05-30 15:37 ` Mikko Rapeli [this message]
2015-05-30 15:37 ` [PATCH 03/98] drm.h: use __kernel_size_t instead of size_t Mikko Rapeli
2015-06-03 17:19   ` Emil Velikov
2015-08-30 10:42     ` Mikko Rapeli
2015-10-15  6:49     ` Daniel Vetter
2015-05-30 15:37 ` [PATCH 04/98] drm_mode.h: use __u32 and __u64 from linux/types.h Mikko Rapeli
2015-05-30 19:58   ` Frans Klaver
2015-05-30 15:37 ` [PATCH 05/98] exynos_drm.h: use " Mikko Rapeli
2015-05-30 16:46   ` Russell King - ARM Linux
2015-06-01  8:20     ` Christian König
2015-06-01  8:56       ` Russell King - ARM Linux
2015-06-01  9:08         ` Christian König
2015-06-01  9:14           ` Frans Klaver
2015-06-01  9:38           ` Russell King - ARM Linux
2015-06-01  9:51             ` Christian König
2015-06-01  9:15       ` Mikko Rapeli
2015-06-02 18:59     ` Mikko Rapeli
2015-05-30 15:37 ` [PATCH 06/98] nouveau_drm.h: use __u32 and " Mikko Rapeli
2015-05-30 15:37 ` [PATCH 07/98] radeon_drm.h: " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 08/98] r128_drm.h: include drm/drm.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 09/98] via_drm.h: include linux/types.h instead of non-existing via_drmclient.h Mikko Rapeli
2015-06-03 17:16   ` Emil Velikov
2015-06-04 11:34     ` Emil Velikov
2015-05-30 15:38 ` [PATCH 10/98] via_drm.h: hide struct via_file_private in userspace Mikko Rapeli
2015-06-03 16:50   ` Emil Velikov
2015-09-02 19:17     ` Mikko Rapeli
2015-05-30 15:38 ` [PATCH 11/98] savage_drm.h: include <drm/drm.h> Mikko Rapeli
2015-05-30 15:38 ` [PATCH 12/98] sis_drm.h: hide sis_file_private in userspace Mikko Rapeli
2015-05-30 15:38 ` [PATCH 13/98] drm/i810_drm.h: include drm/drm.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 14/98] include/uapi/drm/vmwgfx_drm.h: use __s32, __u32 and __u64 from linux/types.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 15/98] include/uapi/drm/qxl_drm.h: " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 16/98] include/uapi/drm/msm_drm.h: use __s32, __s64, " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 17/98] include/uapi/linux/agpgart.h: include stdlib.h in userspace Mikko Rapeli
2015-05-30 15:38 ` [PATCH 18/98] include/uapi/sound/emu10k1.h: added EMU10K1 version of DECLARE_BITMAP etc macros Mikko Rapeli
2015-05-31  7:18   ` Takashi Iwai
2015-05-31  8:12     ` Takashi Iwai
2015-06-02 19:08       ` Mikko Rapeli
2015-05-30 15:38 ` [PATCH 19/98] dm-log-userspace.h: use __u32, __s32 and __u64 from linux/types.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 20/98] hsi_char.h: use __u32 " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 21/98] include/uapi/linux/hsi/cs-protocol.h: include linux/time.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 22/98] ebtables.h: use __u64 from linux/types.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 23/98] cld.h: use __u8, __u16, __s16, __u32 and __s64 " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 24/98] rds.h: " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 25/98] sctp.h: use __u8 and __u32 " Mikko Rapeli
2015-06-01 13:40   ` Neil Horman
2015-05-30 15:38 ` [PATCH 26/98] scsi_bsg_fc.h: use __u8, __u32 and __u64 " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 27/98] scsi_netlink.h: use __u8, __u16 " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 28/98] scsi_netlink_fc.h: use __u16, __u32 " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 29/98] scsi_netlink_fc.h: include stdint.h in userspace Mikko Rapeli
2015-05-30 20:17   ` Frans Klaver
2015-06-02 19:14     ` Mikko Rapeli
2015-05-30 15:38 ` [PATCH 30/98] hdspm.h: use __u8, __u32 and __u64 from linux/types.h Mikko Rapeli
2015-05-31  7:11   ` Takashi Iwai
2015-06-02 19:18     ` Mikko Rapeli
2015-05-30 15:38 ` [PATCH 31/98] gntalloc.h: use __u16, " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 32/98] gntdev.h: use " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 33/98] include/uapi/linux/sysctl.h: use __kernel_size_t instead of size_t Mikko Rapeli
2015-05-30 15:38 ` [PATCH 34/98] include/uapi/asm-generic/ipcbuf.h: include linux/posix_types.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 35/98] include/uapi/asm-generic/msgbuf.h: include asm/ipcbuf.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 36/98] include/uapi/asm-generic/shmbuf.h: include fixes Mikko Rapeli
2015-05-30 15:38 ` [PATCH 37/98] asm-generic/sembuf.h: include asm/posix_types.h and asm/ipcbuf.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 38/98] include/uapi/asm-generic/signal.h: use __kernel_size_t instead of size_t Mikko Rapeli
2015-05-30 15:38 ` [PATCH 39/98] include/uapi/linux/socket.h: include sys/socket.h in userspace Mikko Rapeli
2015-05-30 15:38 ` [PATCH 40/98] include/uapi/linux/rds.h: include linux/socket.h and linux/types.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 41/98] include/uapi/linux/if_pppox.h: include linux/if.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 42/98] include/uapi/linux/if_tunnel.h: include linux/if.h, linux/ip.h and linux/in6.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 43/98] include/uapi/linux/hdlc/ioctl.h: include linux/if.h Mikko Rapeli
2015-05-30 20:22   ` Frans Klaver
2015-06-02 19:34     ` Mikko Rapeli
2015-05-30 15:38 ` [PATCH 44/98] nf_conntrack_tuple_common.h: include linux/types.h and linux/netfilter.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 45/98] include/uapi/linux/ipv6_route.h: include linux/in6.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 46/98] " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 47/98] include/uapi/linux/if_pppol2tp.h: include linux/in.h and linux/in6.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 48/98] include/uapi/linux/if_pppox.h: " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 49/98] Break dependency loop between linux/if.h and linux/hdlc/ioctl.h Mikko Rapeli
2015-05-30 19:52   ` Frans Klaver
2015-05-30 15:38 ` [PATCH 50/98] include/uapi/linux/packet_diag.h: include linux/netdevice.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 51/98] include/uapi/linux/llc.h: include linux/if.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 52/98] include/uapi/linux/mqueue.h: include linux/types.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 53/98] include/uapi/linux/mroute.h: include linux/in.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 54/98] include/uapi/linux/dlm_netlink.h: include linux/dlmconstants.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 55/98] include/uapi/linux/ip6_tunnel.h: include linux/if.h and linux/in6.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 56/98] include/uapi/linux/netfilter.h: include in.h and in6.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 57/98] include/uapi/linux/netfilter_bridge.h: include in.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 58/98] include/uapi/linux/netfilter_ipv4/ip_tables.h: include linux/if.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 59/98] include/uapi/linux/netfilter: include linux/if.h in several headers Mikko Rapeli
2015-05-30 15:38 ` [PATCH 60/98] include/uapi/linux/netfilter/xt_osf.h: include linux/ip.h and linux/tcp.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 61/98] include/uapi/linux/netfilter_ipv6/ip6t_rt.h: include linux/in6.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 62/98] include/uapi/linux/netfilter_bridge/ebt_ip6.h: " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 63/98] include/uapi/linux/netfilter/xt_policy.h: include linux/in.h and linux/in6.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 64/98] include/uapi/linux/netfilter_bridge/ebt_arp.h: include linux/if_ether.h Mikko Rapeli
2015-05-30 15:38 ` [PATCH 65/98] include/uapi/linux/netfilter_bridge/ebt_arpreply.h: " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 66/98] include/uapi/linux/netfilter_bridge/ebt_nat.h: " Mikko Rapeli
2015-05-30 15:38 ` [PATCH 67/98] include/uapi/linux/netfilter/ipset/ip_set_bitmap.h: include linux/netfilter/ipset/ip_set.h Mikko Rapeli
2015-05-31 18:15   ` Jozsef Kadlecsik
2015-06-02 19:42     ` Mikko Rapeli
2015-05-30 15:39 ` [PATCH 68/98] include/uapi/linux/netfilter/ipset/ip_set_hash.h: " Mikko Rapeli
2015-05-30 15:39 ` [PATCH 69/98] include/uapi/linux/netfilter/ipset/ip_set_list.h: " Mikko Rapeli
2015-05-30 15:39 ` [PATCH 70/98] include/uapi/linux/netfilter/xt_HMARK.h: include linux/netfilter.h Mikko Rapeli
2015-05-30 15:39 ` [PATCH 71/98] include/uapi/linux/netfilter/xt_TEE.h: " Mikko Rapeli
2015-05-30 15:39 ` [PATCH 72/98] include/uapi/linux/netfilter/xt_TPROXY.h: " Mikko Rapeli
2015-05-30 15:39 ` [PATCH 73/98] include/uapi/linux/netfilter/xt_ipvs.h: " Mikko Rapeli
2015-05-30 15:39 ` [PATCH 74/98] include/uapi/linux/netfilter/xt_mac.h: include linux/if_ether.h Mikko Rapeli
2015-05-30 15:39 ` [PATCH 75/98] include/uapi/linux/netfilter/xt_sctp.h: use _Bool type, 1 for true and 0 for false Mikko Rapeli
2015-05-30 15:39 ` [PATCH 76/98] include/uapi/linux/netfilter/xt_recent.h: include linux/netfilter.h Mikko Rapeli
2015-05-30 15:39 ` [PATCH 77/98] include/uapi/linux/errqueue.h: include linux/time.h Mikko Rapeli
2015-05-30 15:39 ` [PATCH 78/98] include/uapi/asm-generic/ucontext.h: include asm/signal.h and asm/sigcontext.h Mikko Rapeli
2015-05-30 15:39 ` [PATCH 79/98] arch/x86/include/uapi/asm/signal.h: use __kernel_size_t instead of size_t Mikko Rapeli
2015-05-30 15:39 ` [PATCH 80/98] include/uapi/linux/auto_fs.h: include linux/limits.h Mikko Rapeli
2015-05-30 15:39 ` [PATCH 81/98] include/uapi/linux/openvswitch.h: use __u32 from linux/types.h Mikko Rapeli
2015-05-30 15:39 ` [PATCH 82/98] include/uapi/linux/target_core_user.h: use __u8, __u16, __u32 and __u64 " Mikko Rapeli
2015-05-30 15:39 ` [PATCH 83/98] include/uapi/linux/omapfb.h: use __kernel_size_t instead of size_t Mikko Rapeli
2015-05-30 15:39 ` [PATCH 84/98] include/uapi/linux/atm_zatm.h: include linux/time.h Mikko Rapeli
2015-05-30 15:39 ` [PATCH 85/98] include/uapi/linux/scc.h: include linux/sockios.h Mikko Rapeli
2015-05-30 15:39 ` [PATCH 86/98] include/uapi/linux/btrfs.h: define NULL Mikko Rapeli
2015-05-30 15:39 ` [PATCH 87/98] include/uapi/linux/kexec.h: use __kernel_size_t instead of size_t Mikko Rapeli
2015-05-30 15:39 ` [PATCH 88/98] include/uapi/linux/reiserfs_xattr.h: " Mikko Rapeli
2015-05-30 15:39 ` [PATCH 89/98] include/uapi/linux/patchkey.h: change #error to #warning if file included directly Mikko Rapeli
2015-05-30 15:39 ` [PATCH 90/98] include/uapi/linux/coda.h: use __kernel_pid_t and add u_short etc definitions for userspace Mikko Rapeli
2015-05-30 15:39 ` [PATCH 91/98] include/uapi/linux/android/binder.h: use __kernel_pid_t and __kernel_uid_t Mikko Rapeli
2015-05-30 15:39 ` [PATCH 92/98] arch/x86/include/uapi/asm/sembuf.h: include linux/types.h and linux/ipc.h Mikko Rapeli
2015-05-30 15:39 ` [PATCH 93/98] include/uapi/linux/virtio_balloon.h: include linux/virtio_types.h Mikko Rapeli
2015-05-30 15:39 ` [PATCH 94/98] HACK arch/x86/include/uapi/asm/sigcontext32.h: remove _fpx_sw_bytes from union Mikko Rapeli
2015-09-02 19:34   ` Mikko Rapeli
2015-09-03  7:42     ` [PATCH] x86/headers: Fix (old) header file dependency bug in uapi/asm/sigcontext32.h Ingo Molnar
2015-09-04  7:10       ` Mikko Rapeli
2015-09-04  8:58         ` Ingo Molnar
2015-09-04 12:18           ` Mikko Rapeli
2015-09-05  7:32             ` Ingo Molnar
2015-05-30 15:39 ` [PATCH 95/98] HACK: fix include/uapi/xen/privcmd.h compilation in userspace Mikko Rapeli
2015-05-30 17:56   ` [Xen-devel] " Andrew Cooper
2015-09-10 19:46     ` Mikko Rapeli
2015-05-30 15:39 ` [PATCH 96/98] HACK include/uapi/linux/coda_psdev.h: fix " Mikko Rapeli
2015-05-31 11:19   ` Jan Harkes
2015-09-10 19:48     ` Mikko Rapeli
2015-05-30 15:39 ` [PATCH 97/98] HACK include/uapi/linux/elfcore.h: use __kernel_pid_t and remove elf_greg_t stuff " Mikko Rapeli
2015-10-06 19:20   ` Mikko Rapeli
2015-05-30 15:39 ` [PATCH 98/98] HACK include/uapi/linux/errqueue.h: include time.h " Mikko Rapeli
2015-10-06 19:56   ` Mikko Rapeli
2015-05-30 20:12 ` [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Richard Weinberger
2015-05-31  4:05   ` Mikko Rapeli

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=1433000370-19509-3-git-send-email-mikko.rapeli@iki.fi \
    --to=mikko.rapeli@iki.fi \
    --cc=linux-kernel@vger.kernel.org \
    /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;
as well as URLs for NNTP newsgroup(s).