Blame view

scripts/checksyscalls.sh 5.68 KB
c53aeca05   Sam Ravnborg   kbuild: complain ...
1
  #!/bin/sh
b24413180   Greg Kroah-Hartman   License cleanup: ...
2
  # SPDX-License-Identifier: GPL-2.0
c53aeca05   Sam Ravnborg   kbuild: complain ...
3
4
5
6
7
8
9
  #
  # Check if current architecture are missing any function calls compared
  # to i386.
  # i386 define a number of legacy system calls that are i386 specific
  # and listed below so they are ignored.
  #
  # Usage:
6e5f68564   Geert Uytterhoeven   checksyscalls: Fi...
10
  # checksyscalls.sh gcc gcc-options
c53aeca05   Sam Ravnborg   kbuild: complain ...
11
12
13
14
15
16
  #
  
  ignore_list() {
  cat << EOF
  #include <asm/types.h>
  #include <asm/unistd.h>
e64a1617e   Arnd Bergmann   asm-generic: add ...
17
18
19
20
21
22
23
24
25
26
27
  /* *at */
  #define __IGNORE_open		/* openat */
  #define __IGNORE_link		/* linkat */
  #define __IGNORE_unlink		/* unlinkat */
  #define __IGNORE_mknod		/* mknodat */
  #define __IGNORE_chmod		/* fchmodat */
  #define __IGNORE_chown		/* fchownat */
  #define __IGNORE_mkdir		/* mkdirat */
  #define __IGNORE_rmdir		/* unlinkat */
  #define __IGNORE_lchown		/* fchownat */
  #define __IGNORE_access		/* faccessat */
68b775246   James Hogan   scripts/checksysc...
28
  #define __IGNORE_rename		/* renameat2 */
e64a1617e   Arnd Bergmann   asm-generic: add ...
29
30
31
32
33
34
35
36
37
38
  #define __IGNORE_readlink	/* readlinkat */
  #define __IGNORE_symlink	/* symlinkat */
  #define __IGNORE_utimes		/* futimesat */
  #if BITS_PER_LONG == 64
  #define __IGNORE_stat		/* fstatat */
  #define __IGNORE_lstat		/* fstatat */
  #else
  #define __IGNORE_stat64		/* fstatat64 */
  #define __IGNORE_lstat64	/* fstatat64 */
  #endif
68b775246   James Hogan   scripts/checksysc...
39
40
  /* Missing flags argument */
  #define __IGNORE_renameat	/* renameat2 */
e64a1617e   Arnd Bergmann   asm-generic: add ...
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
  /* CLOEXEC flag */
  #define __IGNORE_pipe		/* pipe2 */
  #define __IGNORE_dup2		/* dup3 */
  #define __IGNORE_epoll_create	/* epoll_create1 */
  #define __IGNORE_inotify_init	/* inotify_init1 */
  #define __IGNORE_eventfd	/* eventfd2 */
  #define __IGNORE_signalfd	/* signalfd4 */
  
  /* MMU */
  #ifndef CONFIG_MMU
  #define __IGNORE_madvise
  #define __IGNORE_mbind
  #define __IGNORE_mincore
  #define __IGNORE_mlock
  #define __IGNORE_mlockall
  #define __IGNORE_munlock
  #define __IGNORE_munlockall
  #define __IGNORE_mprotect
  #define __IGNORE_msync
  #define __IGNORE_migrate_pages
  #define __IGNORE_move_pages
  #define __IGNORE_remap_file_pages
  #define __IGNORE_get_mempolicy
  #define __IGNORE_set_mempolicy
  #define __IGNORE_swapoff
  #define __IGNORE_swapon
  #endif
c53aeca05   Sam Ravnborg   kbuild: complain ...
68
69
70
71
72
73
74
75
76
77
78
79
80
  /* 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
  #define __IGNORE_fstatfs64
  #define __IGNORE_statfs64
e64a1617e   Arnd Bergmann   asm-generic: add ...
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
  #define __IGNORE_llseek
  #define __IGNORE_mmap2
  #else
  #define __IGNORE_sendfile
  #define __IGNORE_ftruncate
  #define __IGNORE_truncate
  #define __IGNORE_stat
  #define __IGNORE_lstat
  #define __IGNORE_fstat
  #define __IGNORE_fcntl
  #define __IGNORE_fadvise64
  #define __IGNORE_newfstatat
  #define __IGNORE_fstatfs
  #define __IGNORE_statfs
  #define __IGNORE_lseek
  #define __IGNORE_mmap
c53aeca05   Sam Ravnborg   kbuild: complain ...
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
  #endif
  
  /* i386-specific or historical system calls */
  #define __IGNORE_break
  #define __IGNORE_stty
  #define __IGNORE_gtty
  #define __IGNORE_ftime
  #define __IGNORE_prof
  #define __IGNORE_lock
  #define __IGNORE_mpx
  #define __IGNORE_ulimit
  #define __IGNORE_profil
  #define __IGNORE_ioperm
  #define __IGNORE_iopl
  #define __IGNORE_idle
  #define __IGNORE_modify_ldt
  #define __IGNORE_ugetrlimit
c53aeca05   Sam Ravnborg   kbuild: complain ...
114
115
116
117
118
119
120
121
122
123
  #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
c53aeca05   Sam Ravnborg   kbuild: complain ...
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
  #define __IGNORE_umount
  #define __IGNORE_waitpid
  #define __IGNORE_stime
  #define __IGNORE_nice
  #define __IGNORE_signal
  #define __IGNORE_sigaction
  #define __IGNORE_sgetmask
  #define __IGNORE_sigsuspend
  #define __IGNORE_sigpending
  #define __IGNORE_ssetmask
  #define __IGNORE_readdir
  #define __IGNORE_socketcall
  #define __IGNORE_ipc
  #define __IGNORE_sigreturn
  #define __IGNORE_sigprocmask
  #define __IGNORE_bdflush
  #define __IGNORE__llseek
  #define __IGNORE__newselect
  #define __IGNORE_create_module
c53aeca05   Sam Ravnborg   kbuild: complain ...
143
144
  #define __IGNORE_query_module
  #define __IGNORE_get_kernel_syms
e64a1617e   Arnd Bergmann   asm-generic: add ...
145
146
147
  #define __IGNORE_sysfs
  #define __IGNORE_uselib
  #define __IGNORE__sysctl
f3e455978   Arnd Bergmann   x86/syscalls/32: ...
148
  #define __IGNORE_arch_prctl
e64a1617e   Arnd Bergmann   asm-generic: add ...
149

c53aeca05   Sam Ravnborg   kbuild: complain ...
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
  /* ... 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
e64a1617e   Arnd Bergmann   asm-generic: add ...
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
  /* these can be expressed using other calls */
  #define __IGNORE_alarm		/* setitimer */
  #define __IGNORE_creat		/* open */
  #define __IGNORE_fork		/* clone */
  #define __IGNORE_futimesat	/* utimensat */
  #define __IGNORE_getpgrp	/* getpgid */
  #define __IGNORE_getdents	/* getdents64 */
  #define __IGNORE_pause		/* sigsuspend */
  #define __IGNORE_poll		/* ppoll */
  #define __IGNORE_select		/* pselect6 */
  #define __IGNORE_epoll_wait	/* epoll_pwait */
  #define __IGNORE_time		/* gettimeofday */
  #define __IGNORE_uname		/* newuname */
  #define __IGNORE_ustat		/* statfs */
  #define __IGNORE_utime		/* utimes */
  #define __IGNORE_vfork		/* clone */
e64a1617e   Arnd Bergmann   asm-generic: add ...
186

edd5cd4a9   David Woodhouse   Introduce fixed s...
187
188
189
190
  /* sync_file_range had a stupid ABI. Allow sync_file_range2 instead */
  #ifdef __NR_sync_file_range2
  #define __IGNORE_sync_file_range
  #endif
c53aeca05   Sam Ravnborg   kbuild: complain ...
191
192
193
194
195
196
197
198
199
  /* Unmerged syscalls for AFS, STREAMS, etc. */
  #define __IGNORE_afs_syscall
  #define __IGNORE_getpmsg
  #define __IGNORE_putpmsg
  #define __IGNORE_vserver
  EOF
  }
  
  syscall_list() {
d21832e21   Arnd Bergmann   kbuild: speed up ...
200
      grep '^[0-9]' "$1" | sort -n |
29dc54c67   H. Peter Anvin   checksyscalls: Us...
201
  	while read nr abi name entry ; do
d21832e21   Arnd Bergmann   kbuild: speed up ...
202
203
204
  		echo "#if !defined(__NR_${name}) && !defined(__IGNORE_${name})"
  		echo "#warning syscall ${name} not implemented"
  		echo "#endif"
29dc54c67   H. Peter Anvin   checksyscalls: Us...
205
  	done
c53aeca05   Sam Ravnborg   kbuild: complain ...
206
  }
1f57d5d85   Ingo Molnar   x86/asm/entry: Mo...
207
  (ignore_list && syscall_list $(dirname $0)/../arch/x86/entry/syscalls/syscall_32.tbl) | \
c53aeca05   Sam Ravnborg   kbuild: complain ...
208
  $* -E -x c - > /dev/null