Blame view

scripts/checksyscalls.sh 7.42 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
  #define __IGNORE_readlink	/* readlinkat */
  #define __IGNORE_symlink	/* symlinkat */
  #define __IGNORE_utimes		/* futimesat */
e64a1617e   Arnd Bergmann   asm-generic: add ...
32
33
  #define __IGNORE_stat		/* fstatat */
  #define __IGNORE_lstat		/* fstatat */
e64a1617e   Arnd Bergmann   asm-generic: add ...
34
35
  #define __IGNORE_stat64		/* fstatat64 */
  #define __IGNORE_lstat64	/* fstatat64 */
e64a1617e   Arnd Bergmann   asm-generic: add ...
36

80d7da1ca   Yury Norov   asm-generic: Drop...
37
38
39
40
  #ifndef __ARCH_WANT_SET_GET_RLIMIT
  #define __IGNORE_getrlimit	/* getrlimit */
  #define __IGNORE_setrlimit	/* setrlimit */
  #endif
7bb7f2ac2   Mike Rapoport   arch, mm: wire up...
41
42
43
  #ifndef __ARCH_WANT_MEMFD_SECRET
  #define __IGNORE_memfd_secret
  #endif
68b775246   James Hogan   scripts/checksysc...
44
45
  /* Missing flags argument */
  #define __IGNORE_renameat	/* renameat2 */
e64a1617e   Arnd Bergmann   asm-generic: add ...
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
  /* 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 ...
73
74
75
76
77
78
79
  /* 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
c53aeca05   Sam Ravnborg   kbuild: complain ...
80
81
  #define __IGNORE_fcntl64
  #define __IGNORE_fadvise64_64
c53aeca05   Sam Ravnborg   kbuild: complain ...
82
83
  #define __IGNORE_fstatfs64
  #define __IGNORE_statfs64
e64a1617e   Arnd Bergmann   asm-generic: add ...
84
85
  #define __IGNORE_llseek
  #define __IGNORE_mmap2
48166e6ea   Arnd Bergmann   y2038: add 64-bit...
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
  #define __IGNORE_clock_gettime64
  #define __IGNORE_clock_settime64
  #define __IGNORE_clock_adjtime64
  #define __IGNORE_clock_getres_time64
  #define __IGNORE_clock_nanosleep_time64
  #define __IGNORE_timer_gettime64
  #define __IGNORE_timer_settime64
  #define __IGNORE_timerfd_gettime64
  #define __IGNORE_timerfd_settime64
  #define __IGNORE_utimensat_time64
  #define __IGNORE_pselect6_time64
  #define __IGNORE_ppoll_time64
  #define __IGNORE_io_pgetevents_time64
  #define __IGNORE_recvmmsg_time64
  #define __IGNORE_mq_timedsend_time64
  #define __IGNORE_mq_timedreceive_time64
  #define __IGNORE_semtimedop_time64
  #define __IGNORE_rt_sigtimedwait_time64
  #define __IGNORE_futex_time64
  #define __IGNORE_sched_rr_get_interval_time64
e64a1617e   Arnd Bergmann   asm-generic: add ...
106
107
108
109
110
111
112
113
114
115
116
117
118
119
  #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
48166e6ea   Arnd Bergmann   y2038: add 64-bit...
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
  #define __IGNORE_clock_gettime
  #define __IGNORE_clock_settime
  #define __IGNORE_clock_adjtime
  #define __IGNORE_clock_getres
  #define __IGNORE_clock_nanosleep
  #define __IGNORE_timer_gettime
  #define __IGNORE_timer_settime
  #define __IGNORE_timerfd_gettime
  #define __IGNORE_timerfd_settime
  #define __IGNORE_utimensat
  #define __IGNORE_pselect6
  #define __IGNORE_ppoll
  #define __IGNORE_io_pgetevents
  #define __IGNORE_recvmmsg
  #define __IGNORE_mq_timedsend
1d5b82331   Arnd Bergmann   checksyscalls: fi...
135
  #define __IGNORE_mq_timedreceive
48166e6ea   Arnd Bergmann   y2038: add 64-bit...
136
137
138
139
  #define __IGNORE_semtimedop
  #define __IGNORE_rt_sigtimedwait
  #define __IGNORE_futex
  #define __IGNORE_sched_rr_get_interval
c8ce48f06   Arnd Bergmann   asm-generic: Make...
140
141
142
143
144
145
146
  #define __IGNORE_gettimeofday
  #define __IGNORE_settimeofday
  #define __IGNORE_wait4
  #define __IGNORE_adjtimex
  #define __IGNORE_nanosleep
  #define __IGNORE_io_getevents
  #define __IGNORE_recvmmsg
c53aeca05   Sam Ravnborg   kbuild: complain ...
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
  #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 ...
164
165
166
167
168
169
170
171
172
173
  #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 ...
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
  #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 ...
193
194
  #define __IGNORE_query_module
  #define __IGNORE_get_kernel_syms
e64a1617e   Arnd Bergmann   asm-generic: add ...
195
196
197
  #define __IGNORE_sysfs
  #define __IGNORE_uselib
  #define __IGNORE__sysctl
f3e455978   Arnd Bergmann   x86/syscalls/32: ...
198
  #define __IGNORE_arch_prctl
930e12992   Firoz Khan   parisc: syscalls:...
199
  #define __IGNORE_nfsservctl
e64a1617e   Arnd Bergmann   asm-generic: add ...
200

c53aeca05   Sam Ravnborg   kbuild: complain ...
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
  /* ... 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 ...
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
  /* 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 ...
237

edd5cd4a9   David Woodhouse   Introduce fixed s...
238
239
240
241
  /* 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 ...
242
243
244
245
246
  /* Unmerged syscalls for AFS, STREAMS, etc. */
  #define __IGNORE_afs_syscall
  #define __IGNORE_getpmsg
  #define __IGNORE_putpmsg
  #define __IGNORE_vserver
3ef6ca4f3   Palmer Dabbelt   checksyscalls: Un...
247
248
249
250
  
  /* 64-bit ports never needed these, and new 32-bit ports can use statx */
  #define __IGNORE_fstat64
  #define __IGNORE_fstatat64
c53aeca05   Sam Ravnborg   kbuild: complain ...
251
252
253
254
  EOF
  }
  
  syscall_list() {
d21832e21   Arnd Bergmann   kbuild: speed up ...
255
      grep '^[0-9]' "$1" | sort -n |
29dc54c67   H. Peter Anvin   checksyscalls: Us...
256
  	while read nr abi name entry ; do
d21832e21   Arnd Bergmann   kbuild: speed up ...
257
258
259
  		echo "#if !defined(__NR_${name}) && !defined(__IGNORE_${name})"
  		echo "#warning syscall ${name} not implemented"
  		echo "#endif"
29dc54c67   H. Peter Anvin   checksyscalls: Us...
260
  	done
c53aeca05   Sam Ravnborg   kbuild: complain ...
261
  }
1f57d5d85   Ingo Molnar   x86/asm/entry: Mo...
262
  (ignore_list && syscall_list $(dirname $0)/../arch/x86/entry/syscalls/syscall_32.tbl) | \
20fbb11fe   Stephen Rothwell   don't make the sy...
263
  $* -Wno-error -E -x c - > /dev/null