Revert "Remove the return type from the syscall lists and parser."

This reverts commit 83f08aa3c6aaaa810319e7068c1bb3f63bfdb6a0.

Reason for revert: DroidMonitor: Potential culprit for b/395697512 - verifying through ABTD before revert submission. This is part of the standard investigation process, and does not mean your CL will be reverted.

Change-Id: I891cb76071b5745743676eada6154302cc3f5dae
diff --git a/libc/SECCOMP_ALLOWLIST_APP.TXT b/libc/SECCOMP_ALLOWLIST_APP.TXT
index a46a33c..80b15b2 100644
--- a/libc/SECCOMP_ALLOWLIST_APP.TXT
+++ b/libc/SECCOMP_ALLOWLIST_APP.TXT
@@ -4,59 +4,59 @@
 # This file is processed by a python script named genseccomp.py.
 
 # Needed for debugging 32-bit Chrome
-pipe(int pipefd[2])	lp32
+int	pipe(int pipefd[2])	lp32
 
 # b/34651972
-access(const char *pathname, int mode)	lp32
-stat64(const char*, struct stat64*)	lp32
+int	access(const char *pathname, int mode)	lp32
+int	stat64(const char*, struct stat64*)	lp32
 
 # b/34813887
-open(const char *path, int oflag, ... ) lp32,x86_64
-getdents(unsigned int fd, struct linux_dirent *dirp, unsigned int count) lp32,x86_64
+int	open(const char *path, int oflag, ... ) lp32,x86_64
+int	getdents(unsigned int fd, struct linux_dirent *dirp, unsigned int count) lp32,x86_64
 
 # b/34719286
-eventfd(unsigned int initval, int flags)	lp32
+int	eventfd(unsigned int initval, int flags)	lp32
 
 # b/34817266
-epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout)	lp32
+int	epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout)	lp32
 
 # b/34908783
-epoll_create(int size)	lp32
+int	epoll_create(int size)	lp32
 
 # b/34979910
-creat(const char *pathname, mode_t mode)	lp32
-unlink(const char *pathname)	lp32
+int	creat(const char *pathname, mode_t mode)	lp32
+int	unlink(const char *pathname)	lp32
 
 # b/35059702
-lstat64(const char*, struct stat64*)	lp32
+int	lstat64(const char*, struct stat64*)	lp32
 
 # b/35217603
-fcntl(int fd, int cmd, ... /* arg */ )	lp32
-fork()	lp32
-poll(struct pollfd *fds, nfds_t nfds, int timeout)	lp32
+int	fcntl(int fd, int cmd, ... /* arg */ )	lp32
+pid_t	fork()	lp32
+int	poll(struct pollfd *fds, nfds_t nfds, int timeout)	lp32
 
 # b/35906875
-inotify_init()	lp32
-getuid()	lp32
+int	inotify_init()	lp32
+uid_t	getuid()	lp32
 
 # b/36435222
-remap_file_pages(void *addr, size_t size, int prot, size_t pgoff, int flags)	lp32
+int	remap_file_pages(void *addr, size_t size, int prot, size_t pgoff, int flags)	lp32
 
 # b/36449658
-rename(const char *oldpath, const char *newpath)	lp32
+int	rename(const char *oldpath, const char *newpath)	lp32
 
 # b/36726183. Note arm does not support mmap
-mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset)	x86
+void*	mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset)	x86
 
 # b/37769298
-dup2(int oldfd, int newfd)	lp32
+int dup2(int oldfd, int newfd)	lp32
 
 # b/62779795
-compat_select:_newselect(int n, unsigned long* inp, unsigned long* outp, unsigned long* exp, struct timeval* timeout) lp32
+int compat_select:_newselect(int n, unsigned long* inp, unsigned long* outp, unsigned long* exp, struct timeval* timeout) lp32
 
 # b/62090571
-mkdir(const char *pathname, mode_t mode)	lp32
+int mkdir(const char *pathname, mode_t mode)	lp32
 
 # Not used by bionic in U because riscv64 doesn't have it, but still
 # used by legacy apps (http://b/254179267).
-renameat(int, const char*, int, const char*)  arm,x86,arm64,x86_64
+int renameat(int, const char*, int, const char*)  arm,x86,arm64,x86_64
diff --git a/libc/SECCOMP_ALLOWLIST_COMMON.TXT b/libc/SECCOMP_ALLOWLIST_COMMON.TXT
index b921aae..5594910 100644
--- a/libc/SECCOMP_ALLOWLIST_COMMON.TXT
+++ b/libc/SECCOMP_ALLOWLIST_COMMON.TXT
@@ -4,78 +4,78 @@
 # This file is processed by a python script named genseccomp.py.
 
 # Syscalls needed to boot android
-pivot_root(const char*, const char*)	lp64
-ioprio_get(int, int)	lp64
-ioprio_set(int, int, int)	lp64
+int	pivot_root(const char*, const char*)	lp64
+int	ioprio_get(int, int)	lp64
+int	ioprio_set(int, int, int)	lp64
 
 # Syscalls used internally by bionic, but not exposed directly.
-gettid()	all
-futex(int*, int, int, const timespec*, int*, int)	all
-clone(int (*)(void*), void*, int, void*, ...) all
-sigreturn(unsigned long)	lp32
-rt_sigreturn(unsigned long)	all
-rt_tgsigqueueinfo(pid_t, pid_t, int, siginfo_t*)	all
-restart_syscall()	all
+pid_t	gettid()	all
+int	futex(int*, int, int, const timespec*, int*, int)	all
+pid_t	clone(int (*)(void*), void*, int, void*, ...) all
+int	sigreturn(unsigned long)	lp32
+int	rt_sigreturn(unsigned long)	all
+int	rt_tgsigqueueinfo(pid_t, pid_t, int, siginfo_t*)	all
+int	restart_syscall()	all
 
 # The public API doesn't set errno, so we call this via inline assembler.
-riscv_hwprobe(riscv_hwprobe*, size_t, size_t, unsigned long*, unsigned) riscv64
+int riscv_hwprobe(riscv_hwprobe*, size_t, size_t, unsigned long*, unsigned) riscv64
 
 # vfork is used by bionic (and java.lang.ProcessBuilder) on some
 # architectures. (The others use clone(2) directly instead.)
-vfork()	arm,x86,x86_64
+pid_t	vfork()	arm,x86,x86_64
 
 # Needed for performance tools.
-perf_event_open(perf_event_attr*, pid_t, int, int, unsigned long)	all
+int	perf_event_open(perf_event_attr*, pid_t, int, int, unsigned long)	all
 
 # Needed for strace.
-tkill(int, int)	all
+int	tkill(int, int)	all
 
 # Needed for a CTS test of seccomp (b/34763393).
-seccomp(unsigned, unsigned, void*)	all
+int	seccomp(unsigned, unsigned, void*)	all
 
 # TODO: remove these now we've updated the toolchain (http://b/229989971).
-open(const char*, int, ...)  arm,x86,x86_64
-stat64(const char*, stat64*)  arm,x86
-readlink(const char*, char*, size_t)  arm,x86,x86_64
-stat(const char*, stat*)  arm,x86,x86_64
+int open(const char*, int, ...)  arm,x86,x86_64
+int stat64(const char*, stat64*)  arm,x86
+ssize_t readlink(const char*, char*, size_t)  arm,x86,x86_64
+int stat(const char*, stat*)  arm,x86,x86_64
 
 #
 # (Potentially) useful new syscalls which we don't yet use in bionic.
 #
 
 # Since Linux 2.5, not in glibc.
-io_setup(unsigned, aio_context_t*) all
-io_destroy(aio_context_t) all
-io_submit(aio_context_t, long,  iocb**) all
-io_getevents(aio_context_t, long, long, io_event*, timespec*) all
-io_cancel(aio_context_t, iocb*, io_event*) all
+int io_setup(unsigned, aio_context_t*) all
+int io_destroy(aio_context_t) all
+int io_submit(aio_context_t, long,  iocb**) all
+int io_getevents(aio_context_t, long, long, io_event*, timespec*) all
+int io_cancel(aio_context_t, iocb*, io_event*) all
 # Since Linux 3.19, not in glibc (and not really needed to implement fexecve).
-execveat(int, const char*, char* const*, char* const*, int)  all
+int execveat(int, const char*, char* const*, char* const*, int)  all
 # Since Linux 4.3, not in glibc. Probed for and conditionally used by ART.
-membarrier(int, int) all
-userfaultfd(int) all
+int membarrier(int, int) all
+int userfaultfd(int) all
 # Since Linux 5.1, not in glibc. Not used by bionic, and not likely ever
 # to be (because the last thing anyone needs is a new 32-bit ABI in the
 # 2020s!) but http://b/138781460 showed cuttlefish needed at least the
 # clock_gettime64 syscall.
-clock_gettime64(clockid_t, timespec64*) lp32
-clock_settime64(clockid_t, const timespec64*) lp32
-clock_adjtime64(clockid_t, timex64*) lp32
-clock_getres_time64(clockid_t, timespec64*) lp32
-clock_nanosleep_time64(clockid_t, int, const timespec64*, timespec*) lp32
-timer_gettime64(__kernel_timer_t, itimerspec64*) lp32
-timer_settime64(__kernel_timer_t, int, const itimerspec64*, itimerspec64*) lp32
-timerfd_gettime64(int, itimerspec64*) lp32
-timerfd_settime64(int, int, const itimerspec64*, itimerspec64*) lp32
-utimensat_time64(int, const char*, const timespec64[2], int) lp32
-pselect6_time64(int, fd_set*, fd_set*, timespec64*, void*) lp32
-ppoll_time64(pollfd*, unsigned int, timespec64*, const sigset64_t*, size_t) lp32
-recvmmsg_time64(int, mmsghdr*, unsigned int, int, const timespec64*) lp32
-rt_sigtimedwait_time64(const sigset64_t*, siginfo_t*, const timespec64*, size_t) lp32
-futex_time64(int*, int, int, const timespec64*, int*, int) lp32
-sched_rr_get_interval_time64(pid_t, timespec64*) lp32
+int clock_gettime64(clockid_t, timespec64*) lp32
+int clock_settime64(clockid_t, const timespec64*) lp32
+int clock_adjtime64(clockid_t, timex64*) lp32
+int clock_getres_time64(clockid_t, timespec64*) lp32
+int clock_nanosleep_time64(clockid_t, int, const timespec64*, timespec*) lp32
+int timer_gettime64(__kernel_timer_t, itimerspec64*) lp32
+int timer_settime64(__kernel_timer_t, int, const itimerspec64*, itimerspec64*) lp32
+int timerfd_gettime64(int, itimerspec64*) lp32
+int timerfd_settime64(int, int, const itimerspec64*, itimerspec64*) lp32
+int utimensat_time64(int, const char*, const timespec64[2], int) lp32
+int pselect6_time64(int, fd_set*, fd_set*, timespec64*, void*) lp32
+int ppoll_time64(pollfd*, unsigned int, timespec64*, const sigset64_t*, size_t) lp32
+int recvmmsg_time64(int, mmsghdr*, unsigned int, int, const timespec64*) lp32
+int rt_sigtimedwait_time64(const sigset64_t*, siginfo_t*, const timespec64*, size_t) lp32
+int futex_time64(int*, int, int, const timespec64*, int*, int) lp32
+int sched_rr_get_interval_time64(pid_t, timespec64*) lp32
 # Since Linux 5.3, not in glibc. Not used by bionic, but increasingly
 # likely to be useful as new features are added. In particular, cgroups
 # support seems potentially useful for Android (though the struct that
 # changes size over time is obviously problematic).
-clone3(clone_args*, size_t) all
+pid_t clone3(clone_args*, size_t) all
diff --git a/libc/SECCOMP_ALLOWLIST_SYSTEM.TXT b/libc/SECCOMP_ALLOWLIST_SYSTEM.TXT
index ac90aac..756affe 100644
--- a/libc/SECCOMP_ALLOWLIST_SYSTEM.TXT
+++ b/libc/SECCOMP_ALLOWLIST_SYSTEM.TXT
@@ -3,4 +3,4 @@
 #
 # This file is processed by a python script named genseccomp.py.
 
-bpf(int cmd, union bpf_attr *attr, unsigned int size) all
+int bpf(int cmd, union bpf_attr *attr, unsigned int size) all
diff --git a/libc/SECCOMP_BLOCKLIST_APP.TXT b/libc/SECCOMP_BLOCKLIST_APP.TXT
index 5c317cf..b9ecc02 100644
--- a/libc/SECCOMP_BLOCKLIST_APP.TXT
+++ b/libc/SECCOMP_BLOCKLIST_APP.TXT
@@ -11,40 +11,40 @@
 # before uid change, including capset and setresuid. This is because the seccomp
 # filter must be installed while the process still has CAP_SYS_ADMIN; changing
 # the uid would remove that capability.
-setgid32(gid_t)     lp32
-setgid(gid_t)       lp64
-setuid32(uid_t)    lp32
-setuid(uid_t)      lp64
-setregid32(gid_t, gid_t)  lp32
-setregid(gid_t, gid_t)    lp64
-setreuid32(uid_t, uid_t)   lp32
-setreuid(uid_t, uid_t)     lp64
-setresgid32(gid_t, gid_t, gid_t)   lp32
-setresgid(gid_t, gid_t, gid_t)     lp64
+int     setgid32(gid_t)     lp32
+int     setgid(gid_t)       lp64
+int     setuid32(uid_t)    lp32
+int     setuid(uid_t)      lp64
+int     setregid32(gid_t, gid_t)  lp32
+int     setregid(gid_t, gid_t)    lp64
+int     setreuid32(uid_t, uid_t)   lp32
+int     setreuid(uid_t, uid_t)     lp64
+int     setresgid32(gid_t, gid_t, gid_t)   lp32
+int     setresgid(gid_t, gid_t, gid_t)     lp64
 # setresuid is explicitly allowed, see above.
-setfsgid32(gid_t) lp32
-setfsgid(gid_t)   lp64
-setfsuid32(uid_t) lp32
-setfsuid(uid_t)   lp64
-setgroups32(int, const gid_t*)   lp32
-setgroups(int, const gid_t*)     lp64
+int     setfsgid32(gid_t) lp32
+int     setfsgid(gid_t)   lp64
+int     setfsuid32(uid_t) lp32
+int     setfsuid(uid_t)   lp64
+int     setgroups32(int, const gid_t*)   lp32
+int     setgroups(int, const gid_t*)     lp64
 
 # Syscalls to modify times.
-adjtimex(struct timex*)   all
-clock_adjtime(clockid_t, struct timex*)   all
-clock_settime(clockid_t, const struct timespec*)  all
-settimeofday(const struct timeval*, const struct timezone*)   all
+int     adjtimex(struct timex*)   all
+int     clock_adjtime(clockid_t, struct timex*)   all
+int     clock_settime(clockid_t, const struct timespec*)  all
+int     settimeofday(const struct timeval*, const struct timezone*)   all
 
-acct(const char*  filepath)  all
-syslog(int, char*, int)   all
-chroot(const char*)  all
+int     acct(const char*  filepath)  all
+int     syslog(int, char*, int)   all
+int     chroot(const char*)  all
 
-init_module(void*, unsigned long, const char*)  all
-delete_module(const char*, unsigned int)   all
-mount(const char*, const char*, const char*, unsigned long, const void*)  all
-umount2(const char*, int)  all
-swapon(const char*, int) all
-swapoff(const char*) all
-setdomainname(const char*, size_t)  all
-sethostname(const char*, size_t)  all
-reboot(int, int, int, void*)  all
+int     init_module(void*, unsigned long, const char*)  all
+int     delete_module(const char*, unsigned int)   all
+int     mount(const char*, const char*, const char*, unsigned long, const void*)  all
+int     umount2(const char*, int)  all
+int     swapon(const char*, int) all
+int     swapoff(const char*) all
+int     setdomainname(const char*, size_t)  all
+int     sethostname(const char*, size_t)  all
+int     reboot(int, int, int, void*)  all
diff --git a/libc/SECCOMP_BLOCKLIST_COMMON.TXT b/libc/SECCOMP_BLOCKLIST_COMMON.TXT
index 0c6e1ae..22c9844 100644
--- a/libc/SECCOMP_BLOCKLIST_COMMON.TXT
+++ b/libc/SECCOMP_BLOCKLIST_COMMON.TXT
@@ -6,5 +6,5 @@
 #
 # This file is processed by a python script named genseccomp.py.
 
-swapon(const char*, int) all
-swapoff(const char*) all
+int     swapon(const char*, int) all
+int     swapoff(const char*) all
diff --git a/libc/SYSCALLS.TXT b/libc/SYSCALLS.TXT
index 7c09e88..1506e13 100644
--- a/libc/SYSCALLS.TXT
+++ b/libc/SYSCALLS.TXT
@@ -2,7 +2,7 @@
 #
 # Each non-blank, non-comment line has the following format:
 #
-# func_name[|alias_list][:syscall_name[:socketcall_id]]([parameter_list]) arch_list
+# return_type func_name[|alias_list][:syscall_name[:socketcall_id]]([parameter_list]) arch_list
 #
 # where:
 #       arch_list ::= "all" | arches
@@ -16,8 +16,6 @@
 #
 #      - alias_list is optional comma separated list of function aliases.
 #
-#      - No return type is specified.
-#
 #      - The call_id parameter, given that func_name and syscall_name have
 #        been provided, allows the user to specify dispatch style syscalls.
 #        For example, socket() syscall on i386 actually becomes:
@@ -29,359 +27,359 @@
 # genrules in Android.bp.
 
 # Calls that have historical 16-bit variants camping on the best names (CONFIG_UID16).
-getuid:getuid32()   lp32
-getuid:getuid()     lp64
-getgid:getgid32()   lp32
-getgid:getgid()     lp64
-geteuid:geteuid32() lp32
-geteuid:geteuid()   lp64
-getegid:getegid32() lp32
-getegid:getegid()   lp64
-getresuid:getresuid32(uid_t* ruid, uid_t* euid, uid_t* suid) lp32
-getresuid:getresuid(uid_t* ruid, uid_t* euid, uid_t* suid)   lp64
-getresgid:getresgid32(gid_t* rgid, gid_t* egid, gid_t* sgid) lp32
-getresgid:getresgid(gid_t* rgid, gid_t* egid, gid_t* sgid)   lp64
-getgroups:getgroups32(int, gid_t*) lp32
-getgroups:getgroups(int, gid_t*)   lp64
-setgid:setgid32(gid_t) lp32
-setgid:setgid(gid_t)   lp64
-setuid:setuid32(uid_t) lp32
-setuid:setuid(uid_t)   lp64
-setreuid:setreuid32(uid_t, uid_t) lp32
-setreuid:setreuid(uid_t, uid_t)   lp64
-setresuid:setresuid32(uid_t, uid_t, uid_t) lp32
-setresuid:setresuid(uid_t, uid_t, uid_t)   lp64
-setresgid:setresgid32(gid_t, gid_t, gid_t) lp32
-setresgid:setresgid(gid_t, gid_t, gid_t)   lp64
-setfsgid:setfsgid32(gid_t) lp32
-setfsgid:setfsgid(gid_t)   lp64
-setfsuid:setfsuid32(uid_t) lp32
-setfsuid:setfsuid(uid_t)   lp64
+uid_t getuid:getuid32()   lp32
+uid_t getuid:getuid()     lp64
+gid_t getgid:getgid32()   lp32
+gid_t getgid:getgid()     lp64
+uid_t geteuid:geteuid32() lp32
+uid_t geteuid:geteuid()   lp64
+gid_t getegid:getegid32() lp32
+gid_t getegid:getegid()   lp64
+uid_t getresuid:getresuid32(uid_t* ruid, uid_t* euid, uid_t* suid) lp32
+uid_t getresuid:getresuid(uid_t* ruid, uid_t* euid, uid_t* suid)   lp64
+gid_t getresgid:getresgid32(gid_t* rgid, gid_t* egid, gid_t* sgid) lp32
+gid_t getresgid:getresgid(gid_t* rgid, gid_t* egid, gid_t* sgid)   lp64
+int getgroups:getgroups32(int, gid_t*) lp32
+int getgroups:getgroups(int, gid_t*)   lp64
+int setgid:setgid32(gid_t) lp32
+int setgid:setgid(gid_t)   lp64
+int setuid:setuid32(uid_t) lp32
+int setuid:setuid(uid_t)   lp64
+int setreuid:setreuid32(uid_t, uid_t) lp32
+int setreuid:setreuid(uid_t, uid_t)   lp64
+int setresuid:setresuid32(uid_t, uid_t, uid_t) lp32
+int setresuid:setresuid(uid_t, uid_t, uid_t)   lp64
+int setresgid:setresgid32(gid_t, gid_t, gid_t) lp32
+int setresgid:setresgid(gid_t, gid_t, gid_t)   lp64
+int setfsgid:setfsgid32(gid_t) lp32
+int setfsgid:setfsgid(gid_t)   lp64
+int setfsuid:setfsuid32(uid_t) lp32
+int setfsuid:setfsuid(uid_t)   lp64
 
-readahead(int, off64_t, size_t) all
-getpgid(pid_t) all
-getppid() all
-getsid(pid_t) all
-setsid() all
-kill(pid_t, int) all
-tgkill(pid_t tgid, pid_t tid, int sig) all
+ssize_t readahead(int, off64_t, size_t) all
+pid_t getpgid(pid_t) all
+pid_t getppid() all
+pid_t getsid(pid_t) all
+pid_t setsid() all
+int kill(pid_t, int) all
+int tgkill(pid_t tgid, pid_t tid, int sig) all
 
-__brk:brk(void*) all
-execve(const char*, char* const*, char* const*)  all
-__ptrace:ptrace(int request, int pid, void* addr, void* data) all
+void* __brk:brk(void*) all
+int execve(const char*, char* const*, char* const*)  all
+int __ptrace:ptrace(int request, int pid, void* addr, void* data) all
 
 # <sys/resource.h>
-getrusage(int, struct rusage*)  all
-__getpriority:getpriority(int, id_t)  all
-setpriority(int, id_t, int)   all
+int getrusage(int, struct rusage*)  all
+int __getpriority:getpriority(int, id_t)  all
+int setpriority(int, id_t, int)   all
 # On LP64, rlimit and rlimit64 are the same.
 # On 32-bit systems we use prlimit64 to implement the rlimit64 functions.
-getrlimit:ugetrlimit(int, struct rlimit*)  lp32
-getrlimit|getrlimit64(int, struct rlimit*)  lp64
-setrlimit(int, const struct rlimit*)  lp32
-setrlimit|setrlimit64(int, const struct rlimit*)  lp64
-prlimit64|prlimit(pid_t, int, struct rlimit64*, const struct rlimit64*)  lp64
-prlimit64(pid_t, int, struct rlimit64*, const struct rlimit64*)  lp32
+int getrlimit:ugetrlimit(int, struct rlimit*)  lp32
+int getrlimit|getrlimit64(int, struct rlimit*)  lp64
+int setrlimit(int, const struct rlimit*)  lp32
+int setrlimit|setrlimit64(int, const struct rlimit*)  lp64
+int prlimit64|prlimit(pid_t, int, struct rlimit64*, const struct rlimit64*)  lp64
+int prlimit64(pid_t, int, struct rlimit64*, const struct rlimit64*)  lp32
 
-setgroups:setgroups32(int, const gid_t*)   lp32
-setgroups:setgroups(int, const gid_t*)     lp64
-setpgid(pid_t, pid_t)  all
-setregid:setregid32(gid_t, gid_t)  lp32
-setregid:setregid(gid_t, gid_t)    lp64
-chroot(const char*)  all
-prctl(int, unsigned long, unsigned long, unsigned long, unsigned long) all
-capget(cap_user_header_t header, cap_user_data_t data) all
-capset(cap_user_header_t header, const cap_user_data_t data) all
-sigaltstack(const stack_t*, stack_t*) all
-acct(const char*  filepath)  all
+int     setgroups:setgroups32(int, const gid_t*)   lp32
+int     setgroups:setgroups(int, const gid_t*)     lp64
+int     setpgid(pid_t, pid_t)  all
+int     setregid:setregid32(gid_t, gid_t)  lp32
+int     setregid:setregid(gid_t, gid_t)    lp64
+int     chroot(const char*)  all
+int     prctl(int, unsigned long, unsigned long, unsigned long, unsigned long) all
+int     capget(cap_user_header_t header, cap_user_data_t data) all
+int     capset(cap_user_header_t header, const cap_user_data_t data) all
+int     sigaltstack(const stack_t*, stack_t*) all
+int     acct(const char*  filepath)  all
 
 # file descriptors
-read(int, void*, size_t)        all
-write(int, const void*, size_t)       all
-pread64(int, void*, size_t, off64_t) lp32
-pread64|pread(int, void*, size_t, off_t) lp64
-pwrite64(int, void*, size_t, off64_t) lp32
-pwrite64|pwrite(int, void*, size_t, off_t) lp64
+ssize_t     read(int, void*, size_t)        all
+ssize_t     write(int, const void*, size_t)       all
+ssize_t     pread64(int, void*, size_t, off64_t) lp32
+ssize_t     pread64|pread(int, void*, size_t, off_t) lp64
+ssize_t     pwrite64(int, void*, size_t, off64_t) lp32
+ssize_t     pwrite64|pwrite(int, void*, size_t, off_t) lp64
 
 # On LP32, preadv/pwritev don't use off64_t --- they use pairs of 32-bit
 # arguments to avoid problems on architectures like arm32 where 64-bit arguments
 # must be in a register pair starting with an even-numbered register.
 # See linux/fs/read_write.c and https://lwn.net/Articles/311630/.
 # Note that there's an unused always-0 second long even on LP64!
-__preadv64:preadv(int, const struct iovec*, int, long, long) all
-__pwritev64:pwritev(int, const struct iovec*, int, long, long) all
-__preadv64v2:preadv2(int, const struct iovec*, int, long, long, int) all
-__pwritev64v2:pwritev2(int, const struct iovec*, int, long, long, int) all
+ssize_t     __preadv64:preadv(int, const struct iovec*, int, long, long) all
+ssize_t     __pwritev64:pwritev(int, const struct iovec*, int, long, long) all
+ssize_t     __preadv64v2:preadv2(int, const struct iovec*, int, long, long, int) all
+ssize_t     __pwritev64v2:pwritev2(int, const struct iovec*, int, long, long, int) all
 
-__close:close(int)  all
-close_range(unsigned int, unsigned int, int) all
-copy_file_range(int, off64_t*, int, off64_t*, size_t, unsigned int) all
-__getpid:getpid()  all
-memfd_create(const char*, unsigned) all
-munmap(void*, size_t)  all
-msync(const void*, size_t, int)    all
-mprotect(const void*, size_t, int)  all
-madvise(void*, size_t, int)  all
-process_madvise(int, const struct iovec*, size_t, int, unsigned int)     all
-mlock(const void* addr, size_t len)    all
-mlock2(const void* addr, size_t len, int flags)    all
-munlock(const void* addr, size_t len)   all
-mlockall(int flags)   all
-mseal(void*, size_t, unsigned long) lp64
-munlockall()   all
-mincore(void*  start, size_t  length, unsigned char*  vec)   all
-__ioctl:ioctl(int, int, void*)  all
-readv(int, const struct iovec*, int)   all
-writev(int, const struct iovec*, int)  all
-__fcntl64:fcntl64(int, int, void*)  lp32
-__fcntl:fcntl(int, int, void*)  lp64
-flock(int, int)   all
-__fchmod:fchmod(int, mode_t)  all
-__pipe2:pipe2(int*, int) all
-__dup:dup(int)  all
-__dup3:dup3(int, int, int)   all
-fsync(int)  all
-fdatasync(int) all
-fchown:fchown32(int, uid_t, gid_t)  lp32
-fchown:fchown(int, uid_t, gid_t)    lp64
-sync(void)  all
-syncfs(int)  all
-__fsetxattr:fsetxattr(int, const char*, const void*, size_t, int) all
-__fgetxattr:fgetxattr(int, const char*, void*, size_t) all
-__flistxattr:flistxattr(int, char*, size_t) all
-fremovexattr(int, const char*) all
+int         __close:close(int)  all
+int         close_range(unsigned int, unsigned int, int) all
+ssize_t     copy_file_range(int, off64_t*, int, off64_t*, size_t, unsigned int) all
+pid_t       __getpid:getpid()  all
+int memfd_create(const char*, unsigned) all
+int         munmap(void*, size_t)  all
+int         msync(const void*, size_t, int)    all
+int         mprotect(const void*, size_t, int)  all
+int         madvise(void*, size_t, int)  all
+ssize_t     process_madvise(int, const struct iovec*, size_t, int, unsigned int)     all
+int mlock(const void* addr, size_t len)    all
+int mlock2(const void* addr, size_t len, int flags)    all
+int         munlock(const void* addr, size_t len)   all
+int         mlockall(int flags)   all
+int mseal(void*, size_t, unsigned long) lp64
+int         munlockall()   all
+int         mincore(void*  start, size_t  length, unsigned char*  vec)   all
+int         __ioctl:ioctl(int, int, void*)  all
+ssize_t     readv(int, const struct iovec*, int)   all
+ssize_t     writev(int, const struct iovec*, int)  all
+int         __fcntl64:fcntl64(int, int, void*)  lp32
+int         __fcntl:fcntl(int, int, void*)  lp64
+int         flock(int, int)   all
+int         __fchmod:fchmod(int, mode_t)  all
+int         __pipe2:pipe2(int*, int) all
+int         __dup:dup(int)  all
+int         __dup3:dup3(int, int, int)   all
+int         fsync(int)  all
+int         fdatasync(int) all
+int         fchown:fchown32(int, uid_t, gid_t)  lp32
+int         fchown:fchown(int, uid_t, gid_t)    lp64
+void        sync(void)  all
+int         syncfs(int)  all
+int         __fsetxattr:fsetxattr(int, const char*, const void*, size_t, int) all
+ssize_t     __fgetxattr:fgetxattr(int, const char*, void*, size_t) all
+ssize_t     __flistxattr:flistxattr(int, char*, size_t) all
+int         fremovexattr(int, const char*) all
 
-__getdents64:getdents64(unsigned int, struct dirent*, unsigned int)   all
+int __getdents64:getdents64(unsigned int, struct dirent*, unsigned int)   all
 
-__openat:openat(int, const char*, int, mode_t) all
-__faccessat:faccessat(int, const char*, int)  all
-__fchmodat:fchmodat(int, const char*, mode_t)  all
-fchownat(int, const char*, uid_t, gid_t, int)  all
-fstatat64|fstatat:fstatat64(int, const char*, struct stat*, int)   lp32
-fstatat64|fstatat:newfstatat(int, const char*, struct stat*, int)  lp64
-linkat(int, const char*, int, const char*, int)  all
-mkdirat(int, const char*, mode_t)  all
-mknodat(int, const char*, mode_t, dev_t)  all
-readlinkat(int, const char*, char*, size_t)  all
-renameat2(int, const char*, int, const char*, unsigned)  all
-symlinkat(const char*, int, const char*)  all
-unlinkat(int, const char*, int)   all
-utimensat(int, const char*, const struct timespec times[2], int)  all
+int __openat:openat(int, const char*, int, mode_t) all
+int __faccessat:faccessat(int, const char*, int)  all
+int __fchmodat:fchmodat(int, const char*, mode_t)  all
+int fchownat(int, const char*, uid_t, gid_t, int)  all
+int fstatat64|fstatat:fstatat64(int, const char*, struct stat*, int)   lp32
+int fstatat64|fstatat:newfstatat(int, const char*, struct stat*, int)  lp64
+int linkat(int, const char*, int, const char*, int)  all
+int mkdirat(int, const char*, mode_t)  all
+int mknodat(int, const char*, mode_t, dev_t)  all
+ssize_t readlinkat(int, const char*, char*, size_t)  all
+int renameat2(int, const char*, int, const char*, unsigned)  all
+int symlinkat(const char*, int, const char*)  all
+int unlinkat(int, const char*, int)   all
+int utimensat(int, const char*, const struct timespec times[2], int)  all
 
 # Paired off_t/off64_t system calls. On 64-bit systems,
 # sizeof(off_t) == sizeof(off64_t), so there we emit two symbols that are
 # aliases. On 32-bit systems, we have two different system calls.
 # That means that every system call in this section should take three lines.
-lseek(int, off_t, int) lp32
-__llseek:_llseek(int, unsigned long, unsigned long, off64_t*, int) lp32
-lseek|lseek64(int, off_t, int) lp64
-sendfile(int out_fd, int in_fd, off_t* offset, size_t count) lp32
-sendfile64(int out_fd, int in_fd, off64_t* offset, size_t count) lp32
-sendfile|sendfile64(int out_fd, int in_fd, off_t* offset, size_t count) lp64
-truncate(const char*, off_t) lp32
-truncate64(const char*, off64_t) lp32
-truncate|truncate64(const char*, off_t) lp64
+off_t lseek(int, off_t, int) lp32
+int __llseek:_llseek(int, unsigned long, unsigned long, off64_t*, int) lp32
+off_t lseek|lseek64(int, off_t, int) lp64
+ssize_t sendfile(int out_fd, int in_fd, off_t* offset, size_t count) lp32
+ssize_t sendfile64(int out_fd, int in_fd, off64_t* offset, size_t count) lp32
+ssize_t sendfile|sendfile64(int out_fd, int in_fd, off_t* offset, size_t count) lp64
+int truncate(const char*, off_t) lp32
+int truncate64(const char*, off64_t) lp32
+int truncate|truncate64(const char*, off_t) lp64
 # (fallocate only gets two lines because there is no 32-bit variant.)
-fallocate64:fallocate(int, int, off64_t, off64_t) lp32
-fallocate|fallocate64(int, int, off_t, off_t) lp64
+int fallocate64:fallocate(int, int, off64_t, off64_t) lp32
+int fallocate|fallocate64(int, int, off_t, off_t) lp64
 # (ftruncate only gets two lines because 32-bit bionic only uses the 64-bit call.)
-ftruncate64(int, off64_t) lp32
-ftruncate|ftruncate64(int, off_t) lp64
+int ftruncate64(int, off64_t) lp32
+int ftruncate|ftruncate64(int, off_t) lp64
 # (mmap only gets two lines because 32-bit bionic only uses the 64-bit call.)
-__mmap2:mmap2(void*, size_t, int, int, int, long) lp32
-mmap|mmap64(void*, size_t, int, int, int, off_t) lp64
+void* __mmap2:mmap2(void*, size_t, int, int, int, long) lp32
+void* mmap|mmap64(void*, size_t, int, int, int, off_t) lp64
 
 # mremap is in C++ for 32-bit so we can add the PTRDIFF_MAX check.
-__mremap:mremap(void*, size_t, size_t, int, void*) lp32
-mremap(void*, size_t, size_t, int, void*) lp64
+void* __mremap:mremap(void*, size_t, size_t, int, void*) lp32
+void* mremap(void*, size_t, size_t, int, void*) lp64
 
 # posix_fadvise64 is awkward: arm has shuffled arguments,
 # the POSIX functions don't set errno, and no architecture has posix_fadvise.
-__arm_fadvise64_64:arm_fadvise64_64(int, int, off64_t, off64_t) arm
-__fadvise64:fadvise64_64(int, off64_t, off64_t, int) x86
-__fadvise64:fadvise64(int, off64_t, off64_t, int) lp64
+int __arm_fadvise64_64:arm_fadvise64_64(int, int, off64_t, off64_t) arm
+int __fadvise64:fadvise64_64(int, off64_t, off64_t, int) x86
+int __fadvise64:fadvise64(int, off64_t, off64_t, int) lp64
 
-__fstatfs64:fstatfs64(int, size_t, struct statfs*)  lp32
-__fstatfs:fstatfs(int, struct statfs*)  lp64
-__statfs64:statfs64(const char*, size_t, struct statfs*)  lp32
-__statfs:statfs(const char*, struct statfs*)  lp64
+int __fstatfs64:fstatfs64(int, size_t, struct statfs*)  lp32
+int __fstatfs:fstatfs(int, struct statfs*)  lp64
+int __statfs64:statfs64(const char*, size_t, struct statfs*)  lp32
+int __statfs:statfs(const char*, struct statfs*)  lp64
 
-fstat64|fstat:fstat64(int, struct stat*) lp32
-fstat64|fstat:fstat(int, struct stat*) lp64
+int fstat64|fstat:fstat64(int, struct stat*) lp32
+int fstat64|fstat:fstat(int, struct stat*) lp64
 
 # file system
-chdir(const char*)              all
-mount(const char*, const char*, const char*, unsigned long, const void*)  all
-umount2(const char*, int)  all
-__getcwd:getcwd(char* buf, size_t size)  all
-fchdir(int)    all
-setxattr(const char*, const char*, const void*, size_t, int) all
-lsetxattr(const char*, const char*, const void*, size_t, int) all
-getxattr(const char*, const char*, void*, size_t) all
-lgetxattr(const char*, const char*, void*, size_t) all
-listxattr(const char*, char*, size_t) all
-llistxattr(const char*, char*, size_t) all
-removexattr(const char*, const char*) all
-lremovexattr(const char*, const char*) all
-statx(int, const char*, int, unsigned, struct statx*) all
-swapon(const char*, int) all
-swapoff(const char*) all
+int     chdir(const char*)              all
+int     mount(const char*, const char*, const char*, unsigned long, const void*)  all
+int     umount2(const char*, int)  all
+int     __getcwd:getcwd(char* buf, size_t size)  all
+int     fchdir(int)    all
+int     setxattr(const char*, const char*, const void*, size_t, int) all
+int     lsetxattr(const char*, const char*, const void*, size_t, int) all
+ssize_t getxattr(const char*, const char*, void*, size_t) all
+ssize_t lgetxattr(const char*, const char*, void*, size_t) all
+ssize_t listxattr(const char*, char*, size_t) all
+ssize_t llistxattr(const char*, char*, size_t) all
+int     removexattr(const char*, const char*) all
+int     lremovexattr(const char*, const char*) all
+int statx(int, const char*, int, unsigned, struct statx*) all
+int     swapon(const char*, int) all
+int     swapoff(const char*) all
 
 # time
-settimeofday(const struct timeval*, const struct timezone*)   all
-times(struct tms*)       all
-nanosleep(const struct timespec*, struct timespec*)   all
-clock_settime(clockid_t, const struct timespec*)  all
-__clock_nanosleep:clock_nanosleep(clockid_t, int, const struct timespec*, struct timespec*)  all
-getitimer(int, struct itimerval*)   all
-setitimer(int, const struct itimerval*, struct itimerval*)  all
-__timer_create:timer_create(clockid_t clockid, struct sigevent* evp, __kernel_timer_t* timerid)    all
-__timer_settime:timer_settime(__kernel_timer_t, int, const struct itimerspec*, struct itimerspec*) all
-__timer_gettime:timer_gettime(__kernel_timer_t, struct itimerspec*)                                all
-__timer_getoverrun:timer_getoverrun(__kernel_timer_t)                                              all
-__timer_delete:timer_delete(__kernel_timer_t)                                                      all
-timerfd_create(clockid_t, int)   all
-timerfd_settime(int, int, const struct itimerspec*, struct itimerspec*)   all
-timerfd_gettime(int, struct itimerspec*)   all
-adjtimex(struct timex*)   all
-clock_adjtime(clockid_t, struct timex*)   all
+int           settimeofday(const struct timeval*, const struct timezone*)   all
+clock_t       times(struct tms*)       all
+int           nanosleep(const struct timespec*, struct timespec*)   all
+int           clock_settime(clockid_t, const struct timespec*)  all
+int           __clock_nanosleep:clock_nanosleep(clockid_t, int, const struct timespec*, struct timespec*)  all
+int           getitimer(int, struct itimerval*)   all
+int           setitimer(int, const struct itimerval*, struct itimerval*)  all
+int           __timer_create:timer_create(clockid_t clockid, struct sigevent* evp, __kernel_timer_t* timerid)    all
+int           __timer_settime:timer_settime(__kernel_timer_t, int, const struct itimerspec*, struct itimerspec*) all
+int           __timer_gettime:timer_gettime(__kernel_timer_t, struct itimerspec*)                                all
+int           __timer_getoverrun:timer_getoverrun(__kernel_timer_t)                                              all
+int           __timer_delete:timer_delete(__kernel_timer_t)                                                      all
+int           timerfd_create(clockid_t, int)   all
+int           timerfd_settime(int, int, const struct itimerspec*, struct itimerspec*)   all
+int           timerfd_gettime(int, struct itimerspec*)   all
+int           adjtimex(struct timex*)   all
+int           clock_adjtime(clockid_t, struct timex*)   all
 
 # signals
-__sigaction:sigaction(int, const struct sigaction*, struct sigaction*)  lp32
-__rt_sigaction:rt_sigaction(int, const struct sigaction*, struct sigaction*, size_t)  all
-__rt_sigpending:rt_sigpending(sigset64_t*, size_t)  all
-__rt_sigprocmask:rt_sigprocmask(int, const sigset64_t*, sigset64_t*, size_t)  all
-__rt_sigsuspend:rt_sigsuspend(const sigset64_t*, size_t)  all
-__rt_sigtimedwait:rt_sigtimedwait(const sigset64_t*, siginfo_t*, const timespec*, size_t)  all
-__rt_sigqueueinfo:rt_sigqueueinfo(pid_t, int, siginfo_t*)  all
-__signalfd4:signalfd4(int, const sigset64_t*, size_t, int)  all
+int     __sigaction:sigaction(int, const struct sigaction*, struct sigaction*)  lp32
+int     __rt_sigaction:rt_sigaction(int, const struct sigaction*, struct sigaction*, size_t)  all
+int     __rt_sigpending:rt_sigpending(sigset64_t*, size_t)  all
+int     __rt_sigprocmask:rt_sigprocmask(int, const sigset64_t*, sigset64_t*, size_t)  all
+int     __rt_sigsuspend:rt_sigsuspend(const sigset64_t*, size_t)  all
+int     __rt_sigtimedwait:rt_sigtimedwait(const sigset64_t*, siginfo_t*, const timespec*, size_t)  all
+int     __rt_sigqueueinfo:rt_sigqueueinfo(pid_t, int, siginfo_t*)  all
+int     __signalfd4:signalfd4(int, const sigset64_t*, size_t, int)  all
 
 # sockets
-__socket:socket(int, int, int)              arm,lp64
-__socketpair:socketpair(int, int, int, int*)    arm,lp64
-bind(int, struct sockaddr*, socklen_t)  arm,lp64
-__connect:connect(int, struct sockaddr*, socklen_t)   arm,lp64
-listen(int, int)                   arm,lp64
-__accept4:accept4(int, struct sockaddr*, socklen_t*, int)  arm,lp64
-getsockname(int, struct sockaddr*, socklen_t*)  arm,lp64
-getpeername(int, struct sockaddr*, socklen_t*)  arm,lp64
-__sendto:sendto(int, const void*, size_t, int, const struct sockaddr*, socklen_t)  arm,lp64
-recvfrom(int, void*, size_t, unsigned int, struct sockaddr*, socklen_t*)  arm,lp64
-shutdown(int, int)  arm,lp64
-setsockopt(int, int, int, const void*, socklen_t)  arm,lp64
-getsockopt(int, int, int, void*, socklen_t*)    arm,lp64
-__recvmsg:recvmsg(int, struct msghdr*, unsigned int)   arm,lp64
-__sendmsg:sendmsg(int, const struct msghdr*, unsigned int)  arm,lp64
-__recvmmsg:recvmmsg(int, struct mmsghdr*, unsigned int, int, const struct timespec*)   arm,lp64
-__sendmmsg:sendmmsg(int, struct mmsghdr*, unsigned int, int)   arm,lp64
+int           __socket:socket(int, int, int)              arm,lp64
+int           __socketpair:socketpair(int, int, int, int*)    arm,lp64
+int           bind(int, struct sockaddr*, socklen_t)  arm,lp64
+int           __connect:connect(int, struct sockaddr*, socklen_t)   arm,lp64
+int           listen(int, int)                   arm,lp64
+int           __accept4:accept4(int, struct sockaddr*, socklen_t*, int)  arm,lp64
+int           getsockname(int, struct sockaddr*, socklen_t*)  arm,lp64
+int           getpeername(int, struct sockaddr*, socklen_t*)  arm,lp64
+ssize_t       __sendto:sendto(int, const void*, size_t, int, const struct sockaddr*, socklen_t)  arm,lp64
+ssize_t       recvfrom(int, void*, size_t, unsigned int, struct sockaddr*, socklen_t*)  arm,lp64
+int           shutdown(int, int)  arm,lp64
+int           setsockopt(int, int, int, const void*, socklen_t)  arm,lp64
+int           getsockopt(int, int, int, void*, socklen_t*)    arm,lp64
+ssize_t       __recvmsg:recvmsg(int, struct msghdr*, unsigned int)   arm,lp64
+ssize_t       __sendmsg:sendmsg(int, const struct msghdr*, unsigned int)  arm,lp64
+int           __recvmmsg:recvmmsg(int, struct mmsghdr*, unsigned int, int, const struct timespec*)   arm,lp64
+int           __sendmmsg:sendmmsg(int, struct mmsghdr*, unsigned int, int)   arm,lp64
 
 # sockets for x86. These are done as an "indexed" call to socketcall syscall.
-__socket:socketcall:1(int, int, int) x86
-bind:socketcall:2(int, struct sockaddr*, int)  x86
-__connect:socketcall:3(int, struct sockaddr*, socklen_t)   x86
-listen:socketcall:4(int, int)                   x86
-getsockname:socketcall:6(int, struct sockaddr*, socklen_t*)  x86
-getpeername:socketcall:7(int, struct sockaddr*, socklen_t*)  x86
-__socketpair:socketcall:8(int, int, int, int*)    x86
-__sendto:socketcall:11(int, const void*, size_t, int, const struct sockaddr*, socklen_t)  x86
-recvfrom:socketcall:12(int, void*, size_t, unsigned int, struct sockaddr*, socklen_t*)  x86
-shutdown:socketcall:13(int, int)  x86
-setsockopt:socketcall:14(int, int, int, const void*, socklen_t)  x86
-getsockopt:socketcall:15(int, int, int, void*, socklen_t*)    x86
-__sendmsg:socketcall:16(int, const struct msghdr*, unsigned int)  x86
-__recvmsg:socketcall:17(int, struct msghdr*, unsigned int)   x86
-__accept4:socketcall:18(int, struct sockaddr*, socklen_t*, int)  x86
-__recvmmsg:socketcall:19(int, struct mmsghdr*, unsigned int, int, const struct timespec*)   x86
-__sendmmsg:socketcall:20(int, struct mmsghdr*, unsigned int, int)   x86
+int           __socket:socketcall:1(int, int, int) x86
+int           bind:socketcall:2(int, struct sockaddr*, int)  x86
+int           __connect:socketcall:3(int, struct sockaddr*, socklen_t)   x86
+int           listen:socketcall:4(int, int)                   x86
+int           getsockname:socketcall:6(int, struct sockaddr*, socklen_t*)  x86
+int           getpeername:socketcall:7(int, struct sockaddr*, socklen_t*)  x86
+int           __socketpair:socketcall:8(int, int, int, int*)    x86
+ssize_t       __sendto:socketcall:11(int, const void*, size_t, int, const struct sockaddr*, socklen_t)  x86
+ssize_t       recvfrom:socketcall:12(int, void*, size_t, unsigned int, struct sockaddr*, socklen_t*)  x86
+int           shutdown:socketcall:13(int, int)  x86
+int           setsockopt:socketcall:14(int, int, int, const void*, socklen_t)  x86
+int           getsockopt:socketcall:15(int, int, int, void*, socklen_t*)    x86
+int           __sendmsg:socketcall:16(int, const struct msghdr*, unsigned int)  x86
+int           __recvmsg:socketcall:17(int, struct msghdr*, unsigned int)   x86
+int           __accept4:socketcall:18(int, struct sockaddr*, socklen_t*, int)  x86
+int           __recvmmsg:socketcall:19(int, struct mmsghdr*, unsigned int, int, const struct timespec*)   x86
+int           __sendmmsg:socketcall:20(int, struct mmsghdr*, unsigned int, int)   x86
 
 # scheduler & real-time
-sched_get_priority_max(int policy) all
-sched_get_priority_min(int policy) all
-__sched_getaffinity:sched_getaffinity(pid_t, size_t, cpu_set_t*) all
-sched_getattr(pid_t, sched_attr*, unsigned, unsigned) all
-sched_getparam(pid_t, sched_param*) all
-sched_getscheduler(pid_t) all
-sched_rr_get_interval(pid_t, timespec*) all
-sched_setaffinity(pid_t, size_t, const cpu_set_t*) all
-sched_setattr(pid_t, sched_attr*, unsigned) all
-sched_setparam(pid_t, const sched_param*) all
-sched_setscheduler(pid_t, int, const sched_param*)  all
-sched_yield(void) all
+int sched_get_priority_max(int policy) all
+int sched_get_priority_min(int policy) all
+int __sched_getaffinity:sched_getaffinity(pid_t, size_t, cpu_set_t*) all
+int sched_getattr(pid_t, sched_attr*, unsigned, unsigned) all
+int sched_getparam(pid_t, sched_param*) all
+int sched_getscheduler(pid_t) all
+int sched_rr_get_interval(pid_t, timespec*) all
+int sched_setaffinity(pid_t, size_t, const cpu_set_t*) all
+int sched_setattr(pid_t, sched_attr*, unsigned) all
+int sched_setparam(pid_t, const sched_param*) all
+int sched_setscheduler(pid_t, int, const sched_param*)  all
+int sched_yield(void) all
 
 # other
-uname(struct utsname*)  all
-umask(mode_t)  all
-__reboot:reboot(int, int, int, void*)  all
-init_module(void*, unsigned long, const char*)  all
-delete_module(const char*, unsigned int)   all
-klogctl:syslog(int, char*, int)   all
-sysinfo(struct sysinfo*)  all
-personality(unsigned long)  all
+int     uname(struct utsname*)  all
+mode_t  umask(mode_t)  all
+int     __reboot:reboot(int, int, int, void*)  all
+int     init_module(void*, unsigned long, const char*)  all
+int     delete_module(const char*, unsigned int)   all
+int     klogctl:syslog(int, char*, int)   all
+int     sysinfo(struct sysinfo*)  all
+int     personality(unsigned long)  all
 
-setns(int, int) all
-unshare(int) all
+int setns(int, int) all
+int unshare(int) all
 
-__getcpu:getcpu(unsigned*, unsigned*, void*) all
+int __getcpu:getcpu(unsigned*, unsigned*, void*) all
 
-bpf(int, union bpf_attr *, unsigned int) all
+int     bpf(int, union bpf_attr *, unsigned int) all
 
-tee(int, int, size_t, unsigned int)  all
-splice(int, off64_t*, int, off64_t*, size_t, unsigned int)  all
-vmsplice(int, const struct iovec*, size_t, unsigned int)  all
+ssize_t tee(int, int, size_t, unsigned int)  all
+ssize_t splice(int, off64_t*, int, off64_t*, size_t, unsigned int)  all
+ssize_t vmsplice(int, const struct iovec*, size_t, unsigned int)  all
 
-__epoll_create1:epoll_create1(int)  all
-epoll_ctl(int, int op, int, struct epoll_event*)  all
-__epoll_pwait:epoll_pwait(int, struct epoll_event*, int, int, const sigset64_t*, size_t)  all
-__epoll_pwait2:epoll_pwait2(int, struct epoll_event*, int, const timespec64*, const sigset64_t*, size_t)  all
+int __epoll_create1:epoll_create1(int)  all
+int epoll_ctl(int, int op, int, struct epoll_event*)  all
+int __epoll_pwait:epoll_pwait(int, struct epoll_event*, int, int, const sigset64_t*, size_t)  all
+int __epoll_pwait2:epoll_pwait2(int, struct epoll_event*, int, const timespec64*, const sigset64_t*, size_t)  all
 
-__eventfd:eventfd2(unsigned int, int)  all
+int __eventfd:eventfd2(unsigned int, int)  all
 
-_exit|_Exit:exit_group(int)  all
-__exit:exit(int)  all
+void _exit|_Exit:exit_group(int)  all
+void __exit:exit(int)  all
 
-inotify_init1(int)  all
-inotify_add_watch(int, const char*, unsigned int)  all
-inotify_rm_watch(int, unsigned int)  all
+int inotify_init1(int)  all
+int inotify_add_watch(int, const char*, unsigned int)  all
+int inotify_rm_watch(int, unsigned int)  all
 
-__pselect6:pselect6(int, fd_set*, fd_set*, fd_set*, timespec*, void*)  all
-__ppoll:ppoll(pollfd*, unsigned int, timespec*, const sigset64_t*, size_t)  all
+int __pselect6:pselect6(int, fd_set*, fd_set*, fd_set*, timespec*, void*)  all
+int __ppoll:ppoll(pollfd*, unsigned int, timespec*, const sigset64_t*, size_t)  all
 
-process_vm_readv(pid_t, const struct iovec*, unsigned long, const struct iovec*, unsigned long, unsigned long)  all
-process_vm_writev(pid_t, const struct iovec*, unsigned long, const struct iovec*, unsigned long, unsigned long)  all
+ssize_t process_vm_readv(pid_t, const struct iovec*, unsigned long, const struct iovec*, unsigned long, unsigned long)  all
+ssize_t process_vm_writev(pid_t, const struct iovec*, unsigned long, const struct iovec*, unsigned long, unsigned long)  all
 
-quotactl(int, const char*, int, char*)  all
+int quotactl(int, const char*, int, char*)  all
 
-__set_tid_address:set_tid_address(int*)  all
+int __set_tid_address:set_tid_address(int*)  all
 
-setdomainname(const char*, size_t)  all
-sethostname(const char*, size_t)  all
+int setdomainname(const char*, size_t)  all
+int sethostname(const char*, size_t)  all
 
-sync_file_range(int, off64_t, off64_t, unsigned int) x86,lp64
-__sync_file_range2:sync_file_range2(int, unsigned int, off64_t, off64_t) arm
+int sync_file_range(int, off64_t, off64_t, unsigned int) x86,lp64
+int __sync_file_range2:sync_file_range2(int, unsigned int, off64_t, off64_t) arm
 
-wait4(pid_t, int*, int, struct rusage*)  all
-__waitid:waitid(int, pid_t, siginfo_t*, int, void*)  all
+pid_t wait4(pid_t, int*, int, struct rusage*)  all
+int __waitid:waitid(int, pid_t, siginfo_t*, int, void*)  all
 
 # ARM-specific
-__set_tls:__ARM_NR_set_tls(void*)                                 arm
-cacheflush:__ARM_NR_cacheflush(long start, long end, long flags)  arm
+int     __set_tls:__ARM_NR_set_tls(void*)                                 arm
+int     cacheflush:__ARM_NR_cacheflush(long start, long end, long flags)  arm
 
 # riscv64-specific
-__riscv_flush_icache:riscv_flush_icache(void*, void*, unsigned long) riscv64
+int __riscv_flush_icache:riscv_flush_icache(void*, void*, unsigned long) riscv64
 
 # x86-specific
-__set_thread_area:set_thread_area(void*) x86
-arch_prctl(int, unsigned long) x86_64
+int     __set_thread_area:set_thread_area(void*) x86
+long arch_prctl(int, unsigned long) x86_64
 
 # vdso stuff.
-__clock_getres:clock_getres(clockid_t, struct timespec*) all
-__clock_gettime:clock_gettime(clockid_t, struct timespec*) all
-__gettimeofday:gettimeofday(struct timeval*, struct timezone*) all
+int __clock_getres:clock_getres(clockid_t, struct timespec*) all
+int __clock_gettime:clock_gettime(clockid_t, struct timespec*) all
+int __gettimeofday:gettimeofday(struct timeval*, struct timezone*) all
 
 # <sys/random.h>
-getrandom(void*, size_t, unsigned) all
+ssize_t getrandom(void*, size_t, unsigned) all
 
 # <sys/pidfd.h>
-__pidfd_open:pidfd_open(pid_t, unsigned int) all
-__pidfd_getfd:pidfd_getfd(int, int, unsigned int) all
-pidfd_send_signal(int, int, siginfo_t*, unsigned int) all
+int __pidfd_open:pidfd_open(pid_t, unsigned int) all
+int __pidfd_getfd:pidfd_getfd(int, int, unsigned int) all
+int pidfd_send_signal(int, int, siginfo_t*, unsigned int) all
diff --git a/libc/tools/gensyscalls.py b/libc/tools/gensyscalls.py
index aa4f1cb..6eb0d5e 100755
--- a/libc/tools/gensyscalls.py
+++ b/libc/tools/gensyscalls.py
@@ -338,11 +338,8 @@
     def parse_line(self, line):
         """ parse a syscall spec line.
 
-        format is one syscall per line:
-
-           func_name[|alias_list][:syscall_name[:socketcall_id]] ( [paramlist] ) architecture_list
-
-        with no line breaking/continuation allowed.
+        line processing, format is
+           return type    func_name[|alias_list][:syscall_name[:socketcall_id]] ( [paramlist] ) architecture_list
         """
         pos_lparen = line.find('(')
         E          = self.E
@@ -355,7 +352,12 @@
             E("missing or misplaced right parenthesis in '%s'" % line)
             return
 
-        syscall_func = line[:pos_lparen]
+        return_type = line[:pos_lparen].strip().split()
+        if len(return_type) < 2:
+            E("missing return type in '%s'" % line)
+            return
+
+        syscall_func = return_type[-1]
         socketcall_id = -1
 
         pos_colon = syscall_func.find(':')