From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755943AbbE3Pjw (ORCPT ); Sat, 30 May 2015 11:39:52 -0400 Received: from mail.kapsi.fi ([217.30.184.167]:51043 "EHLO mail.kapsi.fi" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753929AbbE3Pjp (ORCPT ); Sat, 30 May 2015 11:39:45 -0400 From: Mikko Rapeli To: linux-kernel@vger.kernel.org Cc: Mikko Rapeli Subject: [PATCH v03 00/98] Userspace compile test and fixes for exported uapi header files Date: Sat, 30 May 2015 17:37:52 +0200 Message-Id: <1433000370-19509-1-git-send-email-mikko.rapeli@iki.fi> X-Mailer: git-send-email 2.1.4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 2a02:8070:d18d:d800:7c0d:5e59:fd9c:b615 X-SA-Exim-Mail-From: mikko.rapeli@iki.fi X-SA-Exim-Scanned: No (on mail.kapsi.fi); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org v3: tried to fix all v2 review findings tried to guess how to fix a few more issue with a few hacks, 0 files fail and 760 files pass the compile test on 32bit x86 v2: https://lkml.org/lkml/2015/2/16/521 added cross compiler support with CROSS_COMPILE, detecting libc and GCC headers from compiler, more header file fixes v1: https://lkml.org/lkml/2014/8/21/665 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. This patch set introduces a compile test for headers exported to userspace and then fixes many of the userspace header compilation failures. Changes are also available in headers_test_v03 branch at github: https://github.com/mcfrisk/linux/tree/headers_test_v03 The patch set includes some obvious hacks for which I'd like to get some feedback and suggestions how to properly fix them. Here's how to run the userspace compile tests: $ make headers_install && cd usr/include && \ ../../scripts/headers_compile_test.sh Additionally tested an allyesconfig compilation on 32bit x86. Mikko Rapeli (98): headers_install.sh: enhance error handling scripts/headers_compile_test.sh: compile test script for exported headers drm.h: use __kernel_size_t instead of size_t drm_mode.h: use __u32 and __u64 from linux/types.h exynos_drm.h: use __u64 from linux/types.h nouveau_drm.h: use __u32 and __u64 from linux/types.h radeon_drm.h: use __u32 and __u64 from linux/types.h r128_drm.h: include drm/drm.h via_drm.h: include linux/types.h instead of non-existing via_drmclient.h via_drm.h: hide struct via_file_private in userspace savage_drm.h: include sis_drm.h: hide sis_file_private in userspace drm/i810_drm.h: include drm/drm.h include/uapi/drm/vmwgfx_drm.h: use __s32, __u32 and __u64 from linux/types.h include/uapi/drm/qxl_drm.h: use __s32, __u32 and __u64 from linux/types.h include/uapi/drm/msm_drm.h: use __s32, __s64, __u32 and __u64 from linux/types.h include/uapi/linux/agpgart.h: include stdlib.h in userspace include/uapi/sound/emu10k1.h: added EMU10K1 version of DECLARE_BITMAP etc macros dm-log-userspace.h: use __u32, __s32 and __u64 from linux/types.h hsi_char.h: use __u32 from linux/types.h include/uapi/linux/hsi/cs-protocol.h: include linux/time.h ebtables.h: use __u64 from linux/types.h cld.h: use __u8, __u16, __s16, __u32 and __s64 from linux/types.h rds.h: use __u8, __u16, __s16, __u32 and __s64 from linux/types.h sctp.h: use __u8 and __u32 from linux/types.h scsi_bsg_fc.h: use __u8, __u32 and __u64 from linux/types.h scsi_netlink.h: use __u8, __u16 and __u64 from linux/types.h scsi_netlink_fc.h: use __u16, __u32 and __u64 from linux/types.h scsi_netlink_fc.h: include stdint.h in userspace hdspm.h: use __u8, __u32 and __u64 from linux/types.h gntalloc.h: use __u16, __u32 and __u64 from linux/types.h gntdev.h: use __u32 and __u64 from linux/types.h include/uapi/linux/sysctl.h: use __kernel_size_t instead of size_t include/uapi/asm-generic/ipcbuf.h: include linux/posix_types.h include/uapi/asm-generic/msgbuf.h: include asm/ipcbuf.h include/uapi/asm-generic/shmbuf.h: include fixes asm-generic/sembuf.h: include asm/posix_types.h and asm/ipcbuf.h include/uapi/asm-generic/signal.h: use __kernel_size_t instead of size_t include/uapi/linux/socket.h: include sys/socket.h in userspace include/uapi/linux/rds.h: include linux/socket.h and linux/types.h include/uapi/linux/if_pppox.h: include linux/if.h include/uapi/linux/if_tunnel.h: include linux/if.h, linux/ip.h and linux/in6.h include/uapi/linux/hdlc/ioctl.h: include linux/if.h nf_conntrack_tuple_common.h: include linux/types.h and linux/netfilter.h include/uapi/linux/ipv6_route.h: include linux/in6.h include/uapi/linux/ipv6_route.h: include linux/in6.h include/uapi/linux/if_pppol2tp.h: include linux/in.h and linux/in6.h include/uapi/linux/if_pppox.h: include linux/in.h and linux/in6.h Break dependency loop between linux/if.h and linux/hdlc/ioctl.h include/uapi/linux/packet_diag.h: include linux/netdevice.h include/uapi/linux/llc.h: include linux/if.h include/uapi/linux/mqueue.h: include linux/types.h include/uapi/linux/mroute.h: include linux/in.h include/uapi/linux/dlm_netlink.h: include linux/dlmconstants.h include/uapi/linux/ip6_tunnel.h: include linux/if.h and linux/in6.h include/uapi/linux/netfilter.h: include in.h and in6.h include/uapi/linux/netfilter_bridge.h: include in.h include/uapi/linux/netfilter_ipv4/ip_tables.h: include linux/if.h include/uapi/linux/netfilter: include linux/if.h in several headers include/uapi/linux/netfilter/xt_osf.h: include linux/ip.h and linux/tcp.h include/uapi/linux/netfilter_ipv6/ip6t_rt.h: include linux/in6.h include/uapi/linux/netfilter_bridge/ebt_ip6.h: include linux/in6.h include/uapi/linux/netfilter/xt_policy.h: include linux/in.h and linux/in6.h include/uapi/linux/netfilter_bridge/ebt_arp.h: include linux/if_ether.h include/uapi/linux/netfilter_bridge/ebt_arpreply.h: include linux/if_ether.h include/uapi/linux/netfilter_bridge/ebt_nat.h: include linux/if_ether.h include/uapi/linux/netfilter/ipset/ip_set_bitmap.h: include linux/netfilter/ipset/ip_set.h include/uapi/linux/netfilter/ipset/ip_set_hash.h: include linux/netfilter/ipset/ip_set.h include/uapi/linux/netfilter/ipset/ip_set_list.h: include linux/netfilter/ipset/ip_set.h include/uapi/linux/netfilter/xt_HMARK.h: include linux/netfilter.h include/uapi/linux/netfilter/xt_TEE.h: include linux/netfilter.h include/uapi/linux/netfilter/xt_TPROXY.h: include linux/netfilter.h include/uapi/linux/netfilter/xt_ipvs.h: include linux/netfilter.h include/uapi/linux/netfilter/xt_mac.h: include linux/if_ether.h include/uapi/linux/netfilter/xt_sctp.h: use _Bool type, 1 for true and 0 for false include/uapi/linux/netfilter/xt_recent.h: include linux/netfilter.h include/uapi/linux/errqueue.h: include linux/time.h include/uapi/asm-generic/ucontext.h: include asm/signal.h and asm/sigcontext.h arch/x86/include/uapi/asm/signal.h: use __kernel_size_t instead of size_t include/uapi/linux/auto_fs.h: include linux/limits.h include/uapi/linux/openvswitch.h: use __u32 from linux/types.h include/uapi/linux/target_core_user.h: use __u8, __u16, __u32 and __u64 from linux/types.h include/uapi/linux/omapfb.h: use __kernel_size_t instead of size_t include/uapi/linux/atm_zatm.h: include linux/time.h include/uapi/linux/scc.h: include linux/sockios.h include/uapi/linux/btrfs.h: define NULL include/uapi/linux/kexec.h: use __kernel_size_t instead of size_t include/uapi/linux/reiserfs_xattr.h: use __kernel_size_t instead of size_t include/uapi/linux/patchkey.h: change #error to #warning if file included directly include/uapi/linux/coda.h: use __kernel_pid_t and add u_short etc definitions for userspace include/uapi/linux/android/binder.h: use __kernel_pid_t and __kernel_uid_t arch/x86/include/uapi/asm/sembuf.h: include linux/types.h and linux/ipc.h include/uapi/linux/virtio_balloon.h: include linux/virtio_types.h HACK arch/x86/include/uapi/asm/sigcontext32.h: remove _fpx_sw_bytes from union HACK: fix include/uapi/xen/privcmd.h compilation in userspace HACK include/uapi/linux/coda_psdev.h: fix compilation in userspace HACK include/uapi/linux/elfcore.h: use __kernel_pid_t and remove elf_greg_t stuff in userspace HACK include/uapi/linux/errqueue.h: include time.h in userspace arch/x86/include/asm/pvclock-abi.h | 41 +- arch/x86/include/asm/xen/interface.h | 185 +---- arch/x86/include/asm/xen/interface_32.h | 98 +-- arch/x86/include/asm/xen/interface_64.h | 144 +--- arch/x86/include/uapi/asm/Kbuild | 2 + arch/x86/include/uapi/asm/pvclock-abi.h | 47 ++ arch/x86/include/uapi/asm/sembuf.h | 3 + arch/x86/include/uapi/asm/sigcontext32.h | 1 - arch/x86/include/uapi/asm/signal.h | 2 +- arch/x86/include/uapi/asm/xen/Kbuild | 5 + arch/x86/include/uapi/asm/xen/interface.h | 198 ++++++ arch/x86/include/uapi/asm/xen/interface_32.h | 103 +++ arch/x86/include/uapi/asm/xen/interface_64.h | 150 ++++ include/uapi/asm-generic/ipcbuf.h | 2 + include/uapi/asm-generic/msgbuf.h | 2 + include/uapi/asm-generic/sembuf.h | 2 + include/uapi/asm-generic/shmbuf.h | 4 +- include/uapi/asm-generic/signal.h | 2 +- include/uapi/asm-generic/ucontext.h | 3 + include/uapi/drm/drm.h | 8 +- include/uapi/drm/drm_mode.h | 16 +- include/uapi/drm/exynos_drm.h | 7 +- include/uapi/drm/i810_drm.h | 2 + include/uapi/drm/msm_drm.h | 76 +-- include/uapi/drm/nouveau_drm.h | 86 +-- include/uapi/drm/qxl_drm.h | 74 +- include/uapi/drm/r128_drm.h | 2 + include/uapi/drm/radeon_drm.h | 129 ++-- include/uapi/drm/savage_drm.h | 2 + include/uapi/drm/sis_drm.h | 2 + include/uapi/drm/via_drm.h | 6 +- include/uapi/drm/vmwgfx_drm.h | 260 +++---- include/uapi/linux/agpgart.h | 1 + include/uapi/linux/android/binder.h | 4 +- include/uapi/linux/atm_zatm.h | 1 + include/uapi/linux/auto_fs.h | 1 + include/uapi/linux/btrfs.h | 6 + include/uapi/linux/coda.h | 11 +- include/uapi/linux/coda_psdev.h | 13 +- include/uapi/linux/dlm_netlink.h | 1 + include/uapi/linux/dm-log-userspace.h | 43 +- include/uapi/linux/elfcore.h | 14 +- include/uapi/linux/errqueue.h | 6 + include/uapi/linux/hdlc/ioctl.h | 4 + include/uapi/linux/hsi/cs-protocol.h | 1 + include/uapi/linux/hsi/hsi_char.h | 17 +- include/uapi/linux/if.h | 4 + include/uapi/linux/if_pppol2tp.h | 3 +- include/uapi/linux/if_pppox.h | 3 + include/uapi/linux/if_tunnel.h | 3 + include/uapi/linux/ip6_tunnel.h | 2 + include/uapi/linux/ipv6_route.h | 1 + include/uapi/linux/kexec.h | 4 +- include/uapi/linux/llc.h | 1 + include/uapi/linux/mqueue.h | 2 + include/uapi/linux/mroute.h | 1 + include/uapi/linux/mroute6.h | 1 + include/uapi/linux/netfilter.h | 3 +- include/uapi/linux/netfilter/ipset/ip_set_bitmap.h | 2 + include/uapi/linux/netfilter/ipset/ip_set_hash.h | 2 + include/uapi/linux/netfilter/ipset/ip_set_list.h | 2 + .../linux/netfilter/nf_conntrack_tuple_common.h | 3 + include/uapi/linux/netfilter/xt_HMARK.h | 1 + include/uapi/linux/netfilter/xt_RATEEST.h | 1 + include/uapi/linux/netfilter/xt_TEE.h | 2 + include/uapi/linux/netfilter/xt_TPROXY.h | 1 + include/uapi/linux/netfilter/xt_hashlimit.h | 1 + include/uapi/linux/netfilter/xt_ipvs.h | 1 + include/uapi/linux/netfilter/xt_mac.h | 2 + include/uapi/linux/netfilter/xt_osf.h | 2 + include/uapi/linux/netfilter/xt_physdev.h | 2 +- include/uapi/linux/netfilter/xt_policy.h | 2 + include/uapi/linux/netfilter/xt_rateest.h | 1 + include/uapi/linux/netfilter/xt_recent.h | 1 + include/uapi/linux/netfilter/xt_sctp.h | 12 +- include/uapi/linux/netfilter_arp/arp_tables.h | 1 + include/uapi/linux/netfilter_bridge.h | 1 + include/uapi/linux/netfilter_bridge/ebt_arp.h | 1 + include/uapi/linux/netfilter_bridge/ebt_arpreply.h | 2 + include/uapi/linux/netfilter_bridge/ebt_ip6.h | 1 + include/uapi/linux/netfilter_bridge/ebt_nat.h | 2 + include/uapi/linux/netfilter_bridge/ebtables.h | 6 +- include/uapi/linux/netfilter_ipv4/ip_tables.h | 1 + include/uapi/linux/netfilter_ipv6/ip6_tables.h | 1 + include/uapi/linux/netfilter_ipv6/ip6t_rt.h | 2 +- include/uapi/linux/nfsd/cld.h | 14 +- include/uapi/linux/omapfb.h | 2 +- include/uapi/linux/openvswitch.h | 4 +- include/uapi/linux/packet_diag.h | 1 + include/uapi/linux/patchkey.h | 2 +- include/uapi/linux/rds.h | 103 +-- include/uapi/linux/reiserfs_xattr.h | 2 +- include/uapi/linux/scc.h | 1 + include/uapi/linux/sctp.h | 8 +- include/uapi/linux/socket.h | 4 + include/uapi/linux/sysctl.h | 4 +- include/uapi/linux/target_core_user.h | 22 +- include/uapi/linux/virtio_balloon.h | 1 + include/uapi/scsi/scsi_bsg_fc.h | 54 +- include/uapi/scsi/scsi_netlink.h | 22 +- include/uapi/scsi/scsi_netlink_fc.h | 21 +- include/uapi/sound/emu10k1.h | 23 +- include/uapi/sound/hdspm.h | 40 +- include/uapi/xen/Kbuild | 1 + include/uapi/xen/gntalloc.h | 22 +- include/uapi/xen/gntdev.h | 34 +- include/uapi/xen/interface/Kbuild | 2 + include/uapi/xen/interface/xen.h | 759 +++++++++++++++++++++ include/xen/interface/xen.h | 754 +------------------- scripts/headers_compile_test.sh | 143 ++++ scripts/headers_install.sh | 14 +- 111 files changed, 2142 insertions(+), 1786 deletions(-) create mode 100644 arch/x86/include/uapi/asm/pvclock-abi.h create mode 100644 arch/x86/include/uapi/asm/xen/Kbuild create mode 100644 arch/x86/include/uapi/asm/xen/interface.h create mode 100644 arch/x86/include/uapi/asm/xen/interface_32.h create mode 100644 arch/x86/include/uapi/asm/xen/interface_64.h create mode 100644 include/uapi/xen/interface/Kbuild create mode 100644 include/uapi/xen/interface/xen.h create mode 100755 scripts/headers_compile_test.sh -- 2.1.4