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(':')
