diff --git a/libc/SECCOMP_ALLOWLIST_APP.TXT b/libc/SECCOMP_ALLOWLIST_APP.TXT
index 80b15b2..a46a33c 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
-int	pipe(int pipefd[2])	lp32
+pipe(int pipefd[2])	lp32
 
 # b/34651972
-int	access(const char *pathname, int mode)	lp32
-int	stat64(const char*, struct stat64*)	lp32
+access(const char *pathname, int mode)	lp32
+stat64(const char*, struct stat64*)	lp32
 
 # b/34813887
-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
+open(const char *path, int oflag, ... ) lp32,x86_64
+getdents(unsigned int fd, struct linux_dirent *dirp, unsigned int count) lp32,x86_64
 
 # b/34719286
-int	eventfd(unsigned int initval, int flags)	lp32
+eventfd(unsigned int initval, int flags)	lp32
 
 # b/34817266
-int	epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout)	lp32
+epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout)	lp32
 
 # b/34908783
-int	epoll_create(int size)	lp32
+epoll_create(int size)	lp32
 
 # b/34979910
-int	creat(const char *pathname, mode_t mode)	lp32
-int	unlink(const char *pathname)	lp32
+creat(const char *pathname, mode_t mode)	lp32
+unlink(const char *pathname)	lp32
 
 # b/35059702
-int	lstat64(const char*, struct stat64*)	lp32
+lstat64(const char*, struct stat64*)	lp32
 
 # b/35217603
-int	fcntl(int fd, int cmd, ... /* arg */ )	lp32
-pid_t	fork()	lp32
-int	poll(struct pollfd *fds, nfds_t nfds, int timeout)	lp32
+fcntl(int fd, int cmd, ... /* arg */ )	lp32
+fork()	lp32
+poll(struct pollfd *fds, nfds_t nfds, int timeout)	lp32
 
 # b/35906875
-int	inotify_init()	lp32
-uid_t	getuid()	lp32
+inotify_init()	lp32
+getuid()	lp32
 
 # b/36435222
-int	remap_file_pages(void *addr, size_t size, int prot, size_t pgoff, int flags)	lp32
+remap_file_pages(void *addr, size_t size, int prot, size_t pgoff, int flags)	lp32
 
 # b/36449658
-int	rename(const char *oldpath, const char *newpath)	lp32
+rename(const char *oldpath, const char *newpath)	lp32
 
 # b/36726183. Note arm does not support mmap
-void*	mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset)	x86
+mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset)	x86
 
 # b/37769298
-int dup2(int oldfd, int newfd)	lp32
+dup2(int oldfd, int newfd)	lp32
 
 # b/62779795
-int compat_select:_newselect(int n, unsigned long* inp, unsigned long* outp, unsigned long* exp, struct timeval* timeout) lp32
+compat_select:_newselect(int n, unsigned long* inp, unsigned long* outp, unsigned long* exp, struct timeval* timeout) lp32
 
 # b/62090571
-int mkdir(const char *pathname, mode_t mode)	lp32
+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).
-int renameat(int, const char*, int, const char*)  arm,x86,arm64,x86_64
+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 5594910..b921aae 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
-int	pivot_root(const char*, const char*)	lp64
-int	ioprio_get(int, int)	lp64
-int	ioprio_set(int, int, int)	lp64
+pivot_root(const char*, const char*)	lp64
+ioprio_get(int, int)	lp64
+ioprio_set(int, int, int)	lp64
 
 # Syscalls used internally by bionic, but not exposed directly.
-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
+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
 
 # The public API doesn't set errno, so we call this via inline assembler.
-int riscv_hwprobe(riscv_hwprobe*, size_t, size_t, unsigned long*, unsigned) riscv64
+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.)
-pid_t	vfork()	arm,x86,x86_64
+vfork()	arm,x86,x86_64
 
 # Needed for performance tools.
-int	perf_event_open(perf_event_attr*, pid_t, int, int, unsigned long)	all
+perf_event_open(perf_event_attr*, pid_t, int, int, unsigned long)	all
 
 # Needed for strace.
-int	tkill(int, int)	all
+tkill(int, int)	all
 
 # Needed for a CTS test of seccomp (b/34763393).
-int	seccomp(unsigned, unsigned, void*)	all
+seccomp(unsigned, unsigned, void*)	all
 
 # TODO: remove these now we've updated the toolchain (http://b/229989971).
-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
+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
 
 #
 # (Potentially) useful new syscalls which we don't yet use in bionic.
 #
 
 # Since Linux 2.5, not in glibc.
-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
+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
 # Since Linux 3.19, not in glibc (and not really needed to implement fexecve).
-int execveat(int, const char*, char* const*, char* const*, int)  all
+execveat(int, const char*, char* const*, char* const*, int)  all
 # Since Linux 4.3, not in glibc. Probed for and conditionally used by ART.
-int membarrier(int, int) all
-int userfaultfd(int) all
+membarrier(int, int) all
+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.
-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
+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
 # 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).
-pid_t clone3(clone_args*, size_t) all
+clone3(clone_args*, size_t) all
diff --git a/libc/SECCOMP_ALLOWLIST_SYSTEM.TXT b/libc/SECCOMP_ALLOWLIST_SYSTEM.TXT
index 756affe..ac90aac 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.
 
-int bpf(int cmd, union bpf_attr *attr, unsigned int size) all
+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 b9ecc02..5c317cf 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.
-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
+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
 # setresuid is explicitly allowed, see above.
-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
+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
 
 # Syscalls to modify times.
-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
+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     acct(const char*  filepath)  all
-int     syslog(int, char*, int)   all
-int     chroot(const char*)  all
+acct(const char*  filepath)  all
+syslog(int, char*, int)   all
+chroot(const char*)  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
+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
diff --git a/libc/SECCOMP_BLOCKLIST_COMMON.TXT b/libc/SECCOMP_BLOCKLIST_COMMON.TXT
index 22c9844..0c6e1ae 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.
 
-int     swapon(const char*, int) all
-int     swapoff(const char*) all
+swapon(const char*, int) all
+swapoff(const char*) all
diff --git a/libc/SYSCALLS.TXT b/libc/SYSCALLS.TXT
index 1506e13..7c09e88 100644
--- a/libc/SYSCALLS.TXT
+++ b/libc/SYSCALLS.TXT
@@ -2,7 +2,7 @@
 #
 # Each non-blank, non-comment line has the following format:
 #
-# return_type func_name[|alias_list][:syscall_name[:socketcall_id]]([parameter_list]) arch_list
+# func_name[|alias_list][:syscall_name[:socketcall_id]]([parameter_list]) arch_list
 #
 # where:
 #       arch_list ::= "all" | arches
@@ -16,6 +16,8 @@
 #
 #      - 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:
@@ -27,359 +29,359 @@
 # genrules in Android.bp.
 
 # Calls that have historical 16-bit variants camping on the best names (CONFIG_UID16).
-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
+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
 
-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
+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
 
-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
+__brk:brk(void*) all
+execve(const char*, char* const*, char* const*)  all
+__ptrace:ptrace(int request, int pid, void* addr, void* data) all
 
 # <sys/resource.h>
-int getrusage(int, struct rusage*)  all
-int __getpriority:getpriority(int, id_t)  all
-int setpriority(int, id_t, int)   all
+getrusage(int, struct rusage*)  all
+__getpriority:getpriority(int, id_t)  all
+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.
-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
+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     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
+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
 
 # file descriptors
-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
+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
 
 # 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!
-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
+__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
 
-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
+__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 __getdents64:getdents64(unsigned int, struct dirent*, unsigned int)   all
+__getdents64:getdents64(unsigned int, struct dirent*, unsigned 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
+__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
 
 # 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.
-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
+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
 # (fallocate only gets two lines because there is no 32-bit variant.)
-int fallocate64:fallocate(int, int, off64_t, off64_t) lp32
-int fallocate|fallocate64(int, int, off_t, off_t) lp64
+fallocate64:fallocate(int, int, off64_t, off64_t) lp32
+fallocate|fallocate64(int, int, off_t, off_t) lp64
 # (ftruncate only gets two lines because 32-bit bionic only uses the 64-bit call.)
-int ftruncate64(int, off64_t) lp32
-int ftruncate|ftruncate64(int, off_t) lp64
+ftruncate64(int, off64_t) lp32
+ftruncate|ftruncate64(int, off_t) lp64
 # (mmap only gets two lines because 32-bit bionic only uses the 64-bit call.)
-void* __mmap2:mmap2(void*, size_t, int, int, int, long) lp32
-void* mmap|mmap64(void*, size_t, int, int, int, off_t) lp64
+__mmap2:mmap2(void*, size_t, int, int, int, long) lp32
+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.
-void* __mremap:mremap(void*, size_t, size_t, int, void*) lp32
-void* mremap(void*, size_t, size_t, int, void*) lp64
+__mremap:mremap(void*, size_t, size_t, int, void*) lp32
+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.
-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
+__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 __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
+__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 fstat64|fstat:fstat64(int, struct stat*) lp32
-int fstat64|fstat:fstat(int, struct stat*) lp64
+fstat64|fstat:fstat64(int, struct stat*) lp32
+fstat64|fstat:fstat(int, struct stat*) lp64
 
 # file system
-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
+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
 
 # time
-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
+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
 
 # signals
-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
+__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
 
 # sockets
-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
+__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
 
 # sockets for x86. These are done as an "indexed" call to socketcall syscall.
-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
+__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
 
 # scheduler & real-time
-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
+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
 
 # other
-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
+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 setns(int, int) all
-int unshare(int) all
+setns(int, int) all
+unshare(int) all
 
-int __getcpu:getcpu(unsigned*, unsigned*, void*) all
+__getcpu:getcpu(unsigned*, unsigned*, void*) all
 
-int     bpf(int, union bpf_attr *, unsigned int) all
+bpf(int, union bpf_attr *, 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
+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
 
-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
+__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 __eventfd:eventfd2(unsigned int, int)  all
+__eventfd:eventfd2(unsigned int, int)  all
 
-void _exit|_Exit:exit_group(int)  all
-void __exit:exit(int)  all
+_exit|_Exit:exit_group(int)  all
+__exit:exit(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
+inotify_init1(int)  all
+inotify_add_watch(int, const char*, unsigned int)  all
+inotify_rm_watch(int, unsigned int)  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
+__pselect6:pselect6(int, fd_set*, fd_set*, fd_set*, timespec*, void*)  all
+__ppoll:ppoll(pollfd*, unsigned int, timespec*, const sigset64_t*, size_t)  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
+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
 
-int quotactl(int, const char*, int, char*)  all
+quotactl(int, const char*, int, char*)  all
 
-int __set_tid_address:set_tid_address(int*)  all
+__set_tid_address:set_tid_address(int*)  all
 
-int setdomainname(const char*, size_t)  all
-int sethostname(const char*, size_t)  all
+setdomainname(const char*, size_t)  all
+sethostname(const char*, size_t)  all
 
-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
+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
 
-pid_t wait4(pid_t, int*, int, struct rusage*)  all
-int __waitid:waitid(int, pid_t, siginfo_t*, int, void*)  all
+wait4(pid_t, int*, int, struct rusage*)  all
+__waitid:waitid(int, pid_t, siginfo_t*, int, void*)  all
 
 # ARM-specific
-int     __set_tls:__ARM_NR_set_tls(void*)                                 arm
-int     cacheflush:__ARM_NR_cacheflush(long start, long end, long flags)  arm
+__set_tls:__ARM_NR_set_tls(void*)                                 arm
+cacheflush:__ARM_NR_cacheflush(long start, long end, long flags)  arm
 
 # riscv64-specific
-int __riscv_flush_icache:riscv_flush_icache(void*, void*, unsigned long) riscv64
+__riscv_flush_icache:riscv_flush_icache(void*, void*, unsigned long) riscv64
 
 # x86-specific
-int     __set_thread_area:set_thread_area(void*) x86
-long arch_prctl(int, unsigned long) x86_64
+__set_thread_area:set_thread_area(void*) x86
+arch_prctl(int, unsigned long) x86_64
 
 # vdso stuff.
-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
+__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
 
 # <sys/random.h>
-ssize_t getrandom(void*, size_t, unsigned) all
+getrandom(void*, size_t, unsigned) all
 
 # <sys/pidfd.h>
-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
+__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
diff --git a/libc/tools/gensyscalls.py b/libc/tools/gensyscalls.py
index 6eb0d5e..aa4f1cb 100755
--- a/libc/tools/gensyscalls.py
+++ b/libc/tools/gensyscalls.py
@@ -338,8 +338,11 @@
     def parse_line(self, line):
         """ parse a syscall spec line.
 
-        line processing, format is
-           return type    func_name[|alias_list][:syscall_name[:socketcall_id]] ( [paramlist] ) architecture_list
+        format is one syscall per line:
+
+           func_name[|alias_list][:syscall_name[:socketcall_id]] ( [paramlist] ) architecture_list
+
+        with no line breaking/continuation allowed.
         """
         pos_lparen = line.find('(')
         E          = self.E
@@ -352,12 +355,7 @@
             E("missing or misplaced right parenthesis in '%s'" % line)
             return
 
-        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]
+        syscall_func = line[:pos_lparen]
         socketcall_id = -1
 
         pos_colon = syscall_func.find(':')
