xref: /utopia/UTPA2-700.0.x/projects/build/scripts/checksyscalls.sh (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi#!/bin/sh
2*53ee8cc1Swenshuai.xi#
3*53ee8cc1Swenshuai.xi# Check if current architecture are missing any function calls compared
4*53ee8cc1Swenshuai.xi# to i386.
5*53ee8cc1Swenshuai.xi# i386 define a number of legacy system calls that are i386 specific
6*53ee8cc1Swenshuai.xi# and listed below so they are ignored.
7*53ee8cc1Swenshuai.xi#
8*53ee8cc1Swenshuai.xi# Usage:
9*53ee8cc1Swenshuai.xi# checksyscalls.sh gcc gcc-options
10*53ee8cc1Swenshuai.xi#
11*53ee8cc1Swenshuai.xi
12*53ee8cc1Swenshuai.xiignore_list() {
13*53ee8cc1Swenshuai.xicat << EOF
14*53ee8cc1Swenshuai.xi#include <asm/types.h>
15*53ee8cc1Swenshuai.xi#include <asm/unistd.h>
16*53ee8cc1Swenshuai.xi
17*53ee8cc1Swenshuai.xi/* *at */
18*53ee8cc1Swenshuai.xi#define __IGNORE_open		/* openat */
19*53ee8cc1Swenshuai.xi#define __IGNORE_link		/* linkat */
20*53ee8cc1Swenshuai.xi#define __IGNORE_unlink		/* unlinkat */
21*53ee8cc1Swenshuai.xi#define __IGNORE_mknod		/* mknodat */
22*53ee8cc1Swenshuai.xi#define __IGNORE_chmod		/* fchmodat */
23*53ee8cc1Swenshuai.xi#define __IGNORE_chown		/* fchownat */
24*53ee8cc1Swenshuai.xi#define __IGNORE_mkdir		/* mkdirat */
25*53ee8cc1Swenshuai.xi#define __IGNORE_rmdir		/* unlinkat */
26*53ee8cc1Swenshuai.xi#define __IGNORE_lchown		/* fchownat */
27*53ee8cc1Swenshuai.xi#define __IGNORE_access		/* faccessat */
28*53ee8cc1Swenshuai.xi#define __IGNORE_rename		/* renameat */
29*53ee8cc1Swenshuai.xi#define __IGNORE_readlink	/* readlinkat */
30*53ee8cc1Swenshuai.xi#define __IGNORE_symlink	/* symlinkat */
31*53ee8cc1Swenshuai.xi#define __IGNORE_utimes		/* futimesat */
32*53ee8cc1Swenshuai.xi#if BITS_PER_LONG == 64
33*53ee8cc1Swenshuai.xi#define __IGNORE_stat		/* fstatat */
34*53ee8cc1Swenshuai.xi#define __IGNORE_lstat		/* fstatat */
35*53ee8cc1Swenshuai.xi#else
36*53ee8cc1Swenshuai.xi#define __IGNORE_stat64		/* fstatat64 */
37*53ee8cc1Swenshuai.xi#define __IGNORE_lstat64	/* fstatat64 */
38*53ee8cc1Swenshuai.xi#endif
39*53ee8cc1Swenshuai.xi
40*53ee8cc1Swenshuai.xi/* CLOEXEC flag */
41*53ee8cc1Swenshuai.xi#define __IGNORE_pipe		/* pipe2 */
42*53ee8cc1Swenshuai.xi#define __IGNORE_dup2		/* dup3 */
43*53ee8cc1Swenshuai.xi#define __IGNORE_epoll_create	/* epoll_create1 */
44*53ee8cc1Swenshuai.xi#define __IGNORE_inotify_init	/* inotify_init1 */
45*53ee8cc1Swenshuai.xi#define __IGNORE_eventfd	/* eventfd2 */
46*53ee8cc1Swenshuai.xi#define __IGNORE_signalfd	/* signalfd4 */
47*53ee8cc1Swenshuai.xi
48*53ee8cc1Swenshuai.xi/* MMU */
49*53ee8cc1Swenshuai.xi#ifndef CONFIG_MMU
50*53ee8cc1Swenshuai.xi#define __IGNORE_madvise
51*53ee8cc1Swenshuai.xi#define __IGNORE_mbind
52*53ee8cc1Swenshuai.xi#define __IGNORE_mincore
53*53ee8cc1Swenshuai.xi#define __IGNORE_mlock
54*53ee8cc1Swenshuai.xi#define __IGNORE_mlockall
55*53ee8cc1Swenshuai.xi#define __IGNORE_munlock
56*53ee8cc1Swenshuai.xi#define __IGNORE_munlockall
57*53ee8cc1Swenshuai.xi#define __IGNORE_mprotect
58*53ee8cc1Swenshuai.xi#define __IGNORE_msync
59*53ee8cc1Swenshuai.xi#define __IGNORE_migrate_pages
60*53ee8cc1Swenshuai.xi#define __IGNORE_move_pages
61*53ee8cc1Swenshuai.xi#define __IGNORE_remap_file_pages
62*53ee8cc1Swenshuai.xi#define __IGNORE_get_mempolicy
63*53ee8cc1Swenshuai.xi#define __IGNORE_set_mempolicy
64*53ee8cc1Swenshuai.xi#define __IGNORE_swapoff
65*53ee8cc1Swenshuai.xi#define __IGNORE_swapon
66*53ee8cc1Swenshuai.xi#endif
67*53ee8cc1Swenshuai.xi
68*53ee8cc1Swenshuai.xi/* System calls for 32-bit kernels only */
69*53ee8cc1Swenshuai.xi#if BITS_PER_LONG == 64
70*53ee8cc1Swenshuai.xi#define __IGNORE_sendfile64
71*53ee8cc1Swenshuai.xi#define __IGNORE_ftruncate64
72*53ee8cc1Swenshuai.xi#define __IGNORE_truncate64
73*53ee8cc1Swenshuai.xi#define __IGNORE_stat64
74*53ee8cc1Swenshuai.xi#define __IGNORE_lstat64
75*53ee8cc1Swenshuai.xi#define __IGNORE_fstat64
76*53ee8cc1Swenshuai.xi#define __IGNORE_fcntl64
77*53ee8cc1Swenshuai.xi#define __IGNORE_fadvise64_64
78*53ee8cc1Swenshuai.xi#define __IGNORE_fstatat64
79*53ee8cc1Swenshuai.xi#define __IGNORE_fstatfs64
80*53ee8cc1Swenshuai.xi#define __IGNORE_statfs64
81*53ee8cc1Swenshuai.xi#define __IGNORE_llseek
82*53ee8cc1Swenshuai.xi#define __IGNORE_mmap2
83*53ee8cc1Swenshuai.xi#else
84*53ee8cc1Swenshuai.xi#define __IGNORE_sendfile
85*53ee8cc1Swenshuai.xi#define __IGNORE_ftruncate
86*53ee8cc1Swenshuai.xi#define __IGNORE_truncate
87*53ee8cc1Swenshuai.xi#define __IGNORE_stat
88*53ee8cc1Swenshuai.xi#define __IGNORE_lstat
89*53ee8cc1Swenshuai.xi#define __IGNORE_fstat
90*53ee8cc1Swenshuai.xi#define __IGNORE_fcntl
91*53ee8cc1Swenshuai.xi#define __IGNORE_fadvise64
92*53ee8cc1Swenshuai.xi#define __IGNORE_newfstatat
93*53ee8cc1Swenshuai.xi#define __IGNORE_fstatfs
94*53ee8cc1Swenshuai.xi#define __IGNORE_statfs
95*53ee8cc1Swenshuai.xi#define __IGNORE_lseek
96*53ee8cc1Swenshuai.xi#define __IGNORE_mmap
97*53ee8cc1Swenshuai.xi#endif
98*53ee8cc1Swenshuai.xi
99*53ee8cc1Swenshuai.xi/* i386-specific or historical system calls */
100*53ee8cc1Swenshuai.xi#define __IGNORE_break
101*53ee8cc1Swenshuai.xi#define __IGNORE_stty
102*53ee8cc1Swenshuai.xi#define __IGNORE_gtty
103*53ee8cc1Swenshuai.xi#define __IGNORE_ftime
104*53ee8cc1Swenshuai.xi#define __IGNORE_prof
105*53ee8cc1Swenshuai.xi#define __IGNORE_lock
106*53ee8cc1Swenshuai.xi#define __IGNORE_mpx
107*53ee8cc1Swenshuai.xi#define __IGNORE_ulimit
108*53ee8cc1Swenshuai.xi#define __IGNORE_profil
109*53ee8cc1Swenshuai.xi#define __IGNORE_ioperm
110*53ee8cc1Swenshuai.xi#define __IGNORE_iopl
111*53ee8cc1Swenshuai.xi#define __IGNORE_idle
112*53ee8cc1Swenshuai.xi#define __IGNORE_modify_ldt
113*53ee8cc1Swenshuai.xi#define __IGNORE_ugetrlimit
114*53ee8cc1Swenshuai.xi#define __IGNORE_vm86
115*53ee8cc1Swenshuai.xi#define __IGNORE_vm86old
116*53ee8cc1Swenshuai.xi#define __IGNORE_set_thread_area
117*53ee8cc1Swenshuai.xi#define __IGNORE_get_thread_area
118*53ee8cc1Swenshuai.xi#define __IGNORE_madvise1
119*53ee8cc1Swenshuai.xi#define __IGNORE_oldstat
120*53ee8cc1Swenshuai.xi#define __IGNORE_oldfstat
121*53ee8cc1Swenshuai.xi#define __IGNORE_oldlstat
122*53ee8cc1Swenshuai.xi#define __IGNORE_oldolduname
123*53ee8cc1Swenshuai.xi#define __IGNORE_olduname
124*53ee8cc1Swenshuai.xi#define __IGNORE_umount
125*53ee8cc1Swenshuai.xi#define __IGNORE_waitpid
126*53ee8cc1Swenshuai.xi#define __IGNORE_stime
127*53ee8cc1Swenshuai.xi#define __IGNORE_nice
128*53ee8cc1Swenshuai.xi#define __IGNORE_signal
129*53ee8cc1Swenshuai.xi#define __IGNORE_sigaction
130*53ee8cc1Swenshuai.xi#define __IGNORE_sgetmask
131*53ee8cc1Swenshuai.xi#define __IGNORE_sigsuspend
132*53ee8cc1Swenshuai.xi#define __IGNORE_sigpending
133*53ee8cc1Swenshuai.xi#define __IGNORE_ssetmask
134*53ee8cc1Swenshuai.xi#define __IGNORE_readdir
135*53ee8cc1Swenshuai.xi#define __IGNORE_socketcall
136*53ee8cc1Swenshuai.xi#define __IGNORE_ipc
137*53ee8cc1Swenshuai.xi#define __IGNORE_sigreturn
138*53ee8cc1Swenshuai.xi#define __IGNORE_sigprocmask
139*53ee8cc1Swenshuai.xi#define __IGNORE_bdflush
140*53ee8cc1Swenshuai.xi#define __IGNORE__llseek
141*53ee8cc1Swenshuai.xi#define __IGNORE__newselect
142*53ee8cc1Swenshuai.xi#define __IGNORE_create_module
143*53ee8cc1Swenshuai.xi#define __IGNORE_query_module
144*53ee8cc1Swenshuai.xi#define __IGNORE_get_kernel_syms
145*53ee8cc1Swenshuai.xi#define __IGNORE_sysfs
146*53ee8cc1Swenshuai.xi#define __IGNORE_uselib
147*53ee8cc1Swenshuai.xi#define __IGNORE__sysctl
148*53ee8cc1Swenshuai.xi
149*53ee8cc1Swenshuai.xi/* ... including the "new" 32-bit uid syscalls */
150*53ee8cc1Swenshuai.xi#define __IGNORE_lchown32
151*53ee8cc1Swenshuai.xi#define __IGNORE_getuid32
152*53ee8cc1Swenshuai.xi#define __IGNORE_getgid32
153*53ee8cc1Swenshuai.xi#define __IGNORE_geteuid32
154*53ee8cc1Swenshuai.xi#define __IGNORE_getegid32
155*53ee8cc1Swenshuai.xi#define __IGNORE_setreuid32
156*53ee8cc1Swenshuai.xi#define __IGNORE_setregid32
157*53ee8cc1Swenshuai.xi#define __IGNORE_getgroups32
158*53ee8cc1Swenshuai.xi#define __IGNORE_setgroups32
159*53ee8cc1Swenshuai.xi#define __IGNORE_fchown32
160*53ee8cc1Swenshuai.xi#define __IGNORE_setresuid32
161*53ee8cc1Swenshuai.xi#define __IGNORE_getresuid32
162*53ee8cc1Swenshuai.xi#define __IGNORE_setresgid32
163*53ee8cc1Swenshuai.xi#define __IGNORE_getresgid32
164*53ee8cc1Swenshuai.xi#define __IGNORE_chown32
165*53ee8cc1Swenshuai.xi#define __IGNORE_setuid32
166*53ee8cc1Swenshuai.xi#define __IGNORE_setgid32
167*53ee8cc1Swenshuai.xi#define __IGNORE_setfsuid32
168*53ee8cc1Swenshuai.xi#define __IGNORE_setfsgid32
169*53ee8cc1Swenshuai.xi
170*53ee8cc1Swenshuai.xi/* these can be expressed using other calls */
171*53ee8cc1Swenshuai.xi#define __IGNORE_alarm		/* setitimer */
172*53ee8cc1Swenshuai.xi#define __IGNORE_creat		/* open */
173*53ee8cc1Swenshuai.xi#define __IGNORE_fork		/* clone */
174*53ee8cc1Swenshuai.xi#define __IGNORE_futimesat	/* utimensat */
175*53ee8cc1Swenshuai.xi#define __IGNORE_getpgrp	/* getpgid */
176*53ee8cc1Swenshuai.xi#define __IGNORE_getdents	/* getdents64 */
177*53ee8cc1Swenshuai.xi#define __IGNORE_pause		/* sigsuspend */
178*53ee8cc1Swenshuai.xi#define __IGNORE_poll		/* ppoll */
179*53ee8cc1Swenshuai.xi#define __IGNORE_select		/* pselect6 */
180*53ee8cc1Swenshuai.xi#define __IGNORE_epoll_wait	/* epoll_pwait */
181*53ee8cc1Swenshuai.xi#define __IGNORE_time		/* gettimeofday */
182*53ee8cc1Swenshuai.xi#define __IGNORE_uname		/* newuname */
183*53ee8cc1Swenshuai.xi#define __IGNORE_ustat		/* statfs */
184*53ee8cc1Swenshuai.xi#define __IGNORE_utime		/* utimes */
185*53ee8cc1Swenshuai.xi#define __IGNORE_vfork		/* clone */
186*53ee8cc1Swenshuai.xi
187*53ee8cc1Swenshuai.xi/* sync_file_range had a stupid ABI. Allow sync_file_range2 instead */
188*53ee8cc1Swenshuai.xi#ifdef __NR_sync_file_range2
189*53ee8cc1Swenshuai.xi#define __IGNORE_sync_file_range
190*53ee8cc1Swenshuai.xi#endif
191*53ee8cc1Swenshuai.xi
192*53ee8cc1Swenshuai.xi/* Unmerged syscalls for AFS, STREAMS, etc. */
193*53ee8cc1Swenshuai.xi#define __IGNORE_afs_syscall
194*53ee8cc1Swenshuai.xi#define __IGNORE_getpmsg
195*53ee8cc1Swenshuai.xi#define __IGNORE_putpmsg
196*53ee8cc1Swenshuai.xi#define __IGNORE_vserver
197*53ee8cc1Swenshuai.xiEOF
198*53ee8cc1Swenshuai.xi}
199*53ee8cc1Swenshuai.xi
200*53ee8cc1Swenshuai.xisyscall_list() {
201*53ee8cc1Swenshuai.xised -n -e '/^\#define/ s/[^_]*__NR_\([^[:space:]]*\).*/\
202*53ee8cc1Swenshuai.xi\#if !defined \(__NR_\1\) \&\& !defined \(__IGNORE_\1\)\
203*53ee8cc1Swenshuai.xi\#warning syscall \1 not implemented\
204*53ee8cc1Swenshuai.xi\#endif/p' $1
205*53ee8cc1Swenshuai.xi}
206*53ee8cc1Swenshuai.xi
207*53ee8cc1Swenshuai.xi
208