The patch titled Complain about missing system calls. has been added to the -mm tree. Its filename is complain-about-missing-system-calls.patch *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: Complain about missing system calls. From: David Woodhouse <dwmw2@xxxxxxxxxxxxx> Most system calls seem to get added to i386 first. This patch automatically generates a warning for any new system call which is implemented on i386 but not the architecture currently being compiled. On PowerPC at the moment, for example, it results in these warnings: init/missing_syscalls.h:935:3: warning: #warning syscall sync_file_range not implemented init/missing_syscalls.h:947:3: warning: #warning syscall getcpu not implemented init/missing_syscalls.h:950:3: warning: #warning syscall epoll_pwait not implemented Signed-off-by: David Woodhouse <dwmw2@xxxxxxxxxxxxx> Cc: "David S. Miller" <davem@xxxxxxxxxxxxx> Cc: Russell King <rmk@xxxxxxxxxxxxxxxx> Cc: Andi Kleen <ak@xxxxxxx> Cc: Anton Blanchard <anton@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- init/Makefile | 15 ++++++++-- init/missing_syscalls.c | 57 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 2 deletions(-) diff -puN init/Makefile~complain-about-missing-system-calls init/Makefile --- a/init/Makefile~complain-about-missing-system-calls +++ a/init/Makefile @@ -2,7 +2,7 @@ # Makefile for the linux kernel. # -obj-y := main.o version.o mounts.o +obj-y := main.o version.o mounts.o missing_syscalls.o ifneq ($(CONFIG_BLK_DEV_INITRD),y) obj-y += noinitramfs.o else @@ -16,11 +16,12 @@ mounts-$(CONFIG_BLK_DEV_INITRD) += do_mo mounts-$(CONFIG_BLK_DEV_MD) += do_mounts_md.o # files to be removed upon make clean -clean-files := ../include/linux/compile.h +clean-files := ../include/linux/compile.h $(obj)/missing_syscalls.h # dependencies on generated files need to be listed explicitly $(obj)/version.o: include/linux/compile.h +$(obj)/missing_syscalls.o: $(obj)/missing_syscalls.h include/linux/compile.h FORCE # compile.h changes depending on hostname, generation number, etc, # so we regenerate it always. @@ -31,3 +32,13 @@ include/linux/compile.h: FORCE @echo ' CHK $@' $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkcompile_h $@ \ "$(UTS_MACHINE)" "$(CONFIG_SMP)" "$(CONFIG_PREEMPT)" "$(CC) $(CFLAGS)" + + +quiet_cmd_missing_syscalls = GEN $@ + cmd_missing_syscalls = sed -n '/^\#define/s/[^_]*__NR_\([^[:space:]]*\).*/\ + \#if !defined (__NR_\1) \&\& !defined (__IGNORE_\1)\n\ + \#warning syscall \1 not implemented\n\ + \#endif/p' $(srctree)/include/asm-i386/unistd.h >$@ +targets += missing_syscalls.h +$(obj)/missing_syscalls.h: include/asm-i386/unistd.h + $(call if_changed,missing_syscalls) diff -puN /dev/null init/missing_syscalls.c --- /dev/null +++ a/init/missing_syscalls.c @@ -0,0 +1,57 @@ +#include <asm/types.h> +#include <asm/unistd.h> + +/* Force recompilation (and thus warnings) every time we rebuild the kernel */ +#include <linux/compile.h> + +/* System calls for 32-bit kernels only */ +#if BITS_PER_LONG == 64 +#define __IGNORE_sendfile64 +#define __IGNORE_ftruncate64 +#define __IGNORE_truncate64 +#define __IGNORE_stat64 +#define __IGNORE_lstat64 +#define __IGNORE_fstat64 +#define __IGNORE_fcntl64 +#define __IGNORE_fadvise64_64 +#define __IGNORE_fstatat64 +#endif + +/* i386-specific or historical system calls */ +#define __IGNORE_mmap2 +#define __IGNORE_vm86 +#define __IGNORE_vm86old +#define __IGNORE_set_thread_area +#define __IGNORE_get_thread_area +#define __IGNORE_madvise1 +#define __IGNORE_oldstat +#define __IGNORE_oldfstat +#define __IGNORE_oldlstat +#define __IGNORE_oldolduname +#define __IGNORE_olduname +#define __IGNORE_umount2 +/* ... including the "new" 32-bit uid syscalls */ +#define __IGNORE_lchown32 +#define __IGNORE_getuid32 +#define __IGNORE_getgid32 +#define __IGNORE_geteuid32 +#define __IGNORE_getegid32 +#define __IGNORE_setreuid32 +#define __IGNORE_setregid32 +#define __IGNORE_getgroups32 +#define __IGNORE_setgroups32 +#define __IGNORE_fchown32 +#define __IGNORE_setresuid32 +#define __IGNORE_getresuid32 +#define __IGNORE_setresgid32 +#define __IGNORE_getresgid32 +#define __IGNORE_chown32 +#define __IGNORE_setuid32 +#define __IGNORE_setgid32 +#define __IGNORE_setfsuid32 +#define __IGNORE_setfsgid32 + +/* Not yet upstream */ +#define __IGNORE_vserver + +#include "missing_syscalls.h" _ Patches currently in -mm which might be from dwmw2@xxxxxxxxxxxxx are add-epoll-compat_-code-to-fs-compatc.patch mtd-chips-oops-in-cfi_amdstd_sync.patch mtd-esb2-check-for-closed-rom-window.patch dilnetpc-fix-warning.patch mtd-correct-misspelled-preprocessor-variable.patch complain-about-missing-system-calls.patch complain-about-missing-system-calls-update.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html