Blame view

scripts/checksyscalls.sh 7.27 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
68b775246   James Hogan   scripts/checksysc...
41
42
  /* Missing flags argument */
  #define __IGNORE_renameat	/* renameat2 */
e64a1617e   Arnd Bergmann   asm-generic: add ...
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
68
69
  /* 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 ...
70
71
72
73
74
75
76
77
78
79
80
81
82
  /* 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 ...
83
84
  #define __IGNORE_llseek
  #define __IGNORE_mmap2
48166e6ea   Arnd Bergmann   y2038: add 64-bit...
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
  #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 ...
105
106
107
108
109
110
111
112
113
114
115
116
117
118
  #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...
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
  #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...
134
  #define __IGNORE_mq_timedreceive
48166e6ea   Arnd Bergmann   y2038: add 64-bit...
135
136
137
138
  #define __IGNORE_semtimedop
  #define __IGNORE_rt_sigtimedwait
  #define __IGNORE_futex
  #define __IGNORE_sched_rr_get_interval
c8ce48f06   Arnd Bergmann   asm-generic: Make...
139
140
141
142
143
144
145
  #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 ...
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
  #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 ...
163
164
165
166
167
168
169
170
171
172
  #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 ...
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
  #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 ...
192
193
  #define __IGNORE_query_module
  #define __IGNORE_get_kernel_syms
e64a1617e   Arnd Bergmann   asm-generic: add ...
194
195
196
  #define __IGNORE_sysfs
  #define __IGNORE_uselib
  #define __IGNORE__sysctl
f3e455978   Arnd Bergmann   x86/syscalls/32: ...
197
  #define __IGNORE_arch_prctl
930e12992   Firoz Khan   parisc: syscalls:...
198
  #define __IGNORE_nfsservctl
e64a1617e   Arnd Bergmann   asm-generic: add ...
199

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

edd5cd4a9   David Woodhouse   Introduce fixed s...
237
238
239
240
  /* 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 ...
241
242
243
244
245
246
247
248
249
  /* 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 ...
250
      grep '^[0-9]' "$1" | sort -n |
29dc54c67   H. Peter Anvin   checksyscalls: Us...
251
  	while read nr abi name entry ; do
d21832e21   Arnd Bergmann   kbuild: speed up ...
252
253
254
  		echo "#if !defined(__NR_${name}) && !defined(__IGNORE_${name})"
  		echo "#warning syscall ${name} not implemented"
  		echo "#endif"
29dc54c67   H. Peter Anvin   checksyscalls: Us...
255
  	done
c53aeca05   Sam Ravnborg   kbuild: complain ...
256
  }
1f57d5d85   Ingo Molnar   x86/asm/entry: Mo...
257
  (ignore_list && syscall_list $(dirname $0)/../arch/x86/entry/syscalls/syscall_32.tbl) | \
c53aeca05   Sam Ravnborg   kbuild: complain ...
258
  $* -E -x c - > /dev/null