Unverified Commit d4271702 authored by Nathan Chancellor's avatar Nathan Chancellor
Browse files

Merge UAPI header testing improvements into kbuild-next

parents 379b749a 2a0a3080
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -362,7 +362,7 @@ struct hv_kvp_exchg_msg_value {
		__u8 value[HV_KVP_EXCHANGE_MAX_VALUE_SIZE];
		__u32 value_u32;
		__u64 value_u64;
	};
	} __attribute__((packed));
} __attribute__((packed));

struct hv_kvp_msg_enumerate {
+2 −2
Original line number Diff line number Diff line
@@ -236,7 +236,7 @@ struct vmmdev_hgcm_function_parameter32 {
			/** Relative to the request header. */
			__u32 offset;
		} page_list;
	} u;
	} __packed u;
} __packed;
VMMDEV_ASSERT_SIZE(vmmdev_hgcm_function_parameter32, 4 + 8);

@@ -251,7 +251,7 @@ struct vmmdev_hgcm_function_parameter64 {
			union {
				__u64 phys_addr;
				__u64 linear_addr;
			} u;
			} __packed u;
		} __packed pointer;
		struct {
			/** Size of the buffer described by the page list. */
+1 −1
Original line number Diff line number Diff line
@@ -247,7 +247,7 @@ config WERROR

config UAPI_HEADER_TEST
	bool "Compile test UAPI headers"
	depends on HEADERS_INSTALL && CC_CAN_LINK
	depends on HEADERS_INSTALL
	help
	  Compile test headers exported to user-space to ensure they are
	  self-contained, i.e. compilable as standalone units.
+86 −1
Original line number Diff line number Diff line
@@ -65,16 +65,101 @@ no-header-test += asm/uctx.h
no-header-test += asm/fbio.h
endif

ifeq ($(SRCARCH),xtensa)
no-header-test += linux/bpf_perf_event.h
endif

# asm-generic/*.h is used by asm/*.h, and should not be included directly
no-header-test += asm-generic/%

# The following are using libc header and types.
#
# Do not add a new header to the list without legitimate reason.
# Please consider to fix the header first.
#
# Sorted alphabetically.
uses-libc += linux/a.out.h
uses-libc += linux/atmbr2684.h
uses-libc += linux/auto_dev-ioctl.h
uses-libc += linux/auto_fs.h
uses-libc += linux/auto_fs4.h
uses-libc += linux/btrfs_tree.h
uses-libc += linux/cec-funcs.h
uses-libc += linux/cec.h
uses-libc += linux/dvb/dmx.h
uses-libc += linux/dvb/video.h
uses-libc += linux/ethtool.h
uses-libc += linux/ethtool_netlink.h
uses-libc += linux/fuse.h
uses-libc += linux/gsmmux.h
uses-libc += linux/icmp.h
uses-libc += linux/idxd.h
uses-libc += linux/if.h
uses-libc += linux/if_arp.h
uses-libc += linux/if_bonding.h
uses-libc += linux/if_pppox.h
uses-libc += linux/if_tunnel.h
uses-libc += linux/input.h
uses-libc += linux/ip6_tunnel.h
uses-libc += linux/joystick.h
uses-libc += linux/llc.h
uses-libc += linux/mctp.h
uses-libc += linux/mdio.h
uses-libc += linux/mii.h
uses-libc += linux/mptcp.h
uses-libc += linux/netdevice.h
uses-libc += linux/netfilter/xt_RATEEST.h
uses-libc += linux/netfilter/xt_hashlimit.h
uses-libc += linux/netfilter/xt_physdev.h
uses-libc += linux/netfilter/xt_rateest.h
uses-libc += linux/netfilter_arp/arp_tables.h
uses-libc += linux/netfilter_arp/arpt_mangle.h
uses-libc += linux/netfilter_bridge.h
uses-libc += linux/netfilter_bridge/ebtables.h
uses-libc += linux/netfilter_ipv4.h
uses-libc += linux/netfilter_ipv4/ip_tables.h
uses-libc += linux/netfilter_ipv6.h
uses-libc += linux/netfilter_ipv6/ip6_tables.h
uses-libc += linux/route.h
uses-libc += linux/shm.h
uses-libc += linux/soundcard.h
uses-libc += linux/string.h
uses-libc += linux/tipc_config.h
uses-libc += linux/uhid.h
uses-libc += linux/uinput.h
uses-libc += linux/vhost.h
uses-libc += linux/vhost_types.h
uses-libc += linux/virtio_ring.h
uses-libc += linux/wireless.h
uses-libc += regulator/regulator.h
uses-libc += scsi/fc/fc_els.h

ifeq ($(SRCARCH),hexagon)
uses-libc += asm/sigcontext.h
endif

ifeq ($(SRCARCH),nios2)
uses-libc += asm/ptrace.h
uses-libc += linux/bpf_perf_event.h
endif

ifeq ($(SRCARCH),s390)
uses-libc += asm/chpid.h
uses-libc += asm/chsc.h
endif

always-y := $(patsubst $(obj)/%.h,%.hdrtest, $(shell find $(obj) -name '*.h' 2>/dev/null))

target-no-libc = $(filter-out $(uses-libc), $*.h)
target-can-compile = $(and $(filter-out $(no-header-test), $*.h), \
                           $(or $(CONFIG_CC_CAN_LINK), $(target-no-libc)))

# Include the header twice to detect missing include guard.
quiet_cmd_hdrtest = HDRTEST $<
      cmd_hdrtest = \
		$(CC) $(c_flags) -fsyntax-only -Werror -x c /dev/null \
			$(if $(filter-out $(no-header-test), $*.h), -include $< -include $<); \
			$(if $(target-no-libc), -nostdinc) \
			$(if $(target-can-compile), -include $< -include $<); \
		$(PERL) $(src)/headers_check.pl $(obj) $<; \
		touch $@