diff --git a/lib/libc/gen/Makefile.inc b/lib/libc/gen/Makefile.inc
index c0d719371fc8..76a21975f1ac 100644
--- a/lib/libc/gen/Makefile.inc
+++ b/lib/libc/gen/Makefile.inc
@@ -1,567 +1,568 @@
 #	@(#)Makefile.inc	8.6 (Berkeley) 5/4/95
 # $FreeBSD$
 
 # machine-independent gen sources
 .PATH: ${LIBC_SRCTOP}/${LIBC_ARCH}/gen ${LIBC_SRCTOP}/gen ${SRCTOP}/etc
 
 CONFS+=	group master.passwd shells
 CONFSMODE_master.passwd=	600
 CONFSPACKAGE=   runtime
 
 SRCS+=	__getosreldate.c \
 	__pthread_mutex_init_calloc_cb_stub.c \
 	__xuname.c \
 	_once_stub.c \
 	_pthread_stubs.c \
 	_rand48.c \
 	_spinlock_stub.c \
 	_thread_init.c \
 	alarm.c \
 	arc4random.c \
 	arc4random-compat.c \
 	arc4random_uniform.c \
 	assert.c \
 	auxv.c \
 	basename.c \
 	basename_compat.c \
 	cap_sandboxed.c \
 	check_utility_compat.c \
 	clock.c \
 	clock_getcpuclockid.c \
 	closedir.c \
 	confstr.c \
 	crypt.c \
 	ctermid.c \
 	daemon.c \
 	devname.c \
 	devname-compat11.c \
 	dirfd.c \
 	dirname.c \
 	dirname_compat.c \
 	disklabel.c \
 	dlfcn.c \
 	drand48.c \
 	dup3.c \
 	elf_utils.c \
 	erand48.c \
 	err.c \
 	errlst.c \
 	errno.c \
+	eventfd.c \
 	exec.c \
 	exect.c \
 	fdevname.c \
 	feature_present.c \
 	fmtcheck.c \
 	fmtmsg.c \
 	fnmatch.c \
 	fpclassify.c \
 	frexp.c \
 	fstab.c \
 	ftok.c \
 	fts.c \
 	fts-compat.c \
 	fts-compat11.c \
 	ftw.c \
 	ftw-compat11.c \
 	getbootfile.c \
 	getbsize.c \
 	getcap.c \
 	getcwd.c \
 	getdomainname.c \
 	getentropy.c \
 	getgrent.c \
 	getgrouplist.c \
 	gethostname.c \
 	getloadavg.c \
 	getlogin.c \
 	getmntinfo.c \
 	getmntinfo-compat11.c \
 	getnetgrent.c \
 	getosreldate.c \
 	getpagesize.c \
 	getpagesizes.c \
 	getpeereid.c \
 	getprogname.c \
 	getpwent.c \
 	getttyent.c \
 	getusershell.c \
 	getutxent.c \
 	getvfsbyname.c \
 	glob.c \
 	glob-compat11.c \
 	initgroups.c \
 	isatty.c \
 	isinf.c \
 	isnan.c \
 	jrand48.c \
 	lcong48.c \
 	libc_dlopen.c \
 	lockf.c \
 	lrand48.c \
 	memalign.c \
 	mrand48.c \
 	nftw.c \
 	nftw-compat11.c \
 	nice.c \
 	nlist.c \
 	nrand48.c \
 	opendir.c \
 	pause.c \
 	pmadvise.c \
 	popen.c \
 	posix_spawn.c \
 	psignal.c \
 	pututxline.c \
 	pw_scan.c \
 	raise.c \
 	readdir.c \
 	readdir-compat11.c \
 	readpassphrase.c \
 	recvmmsg.c \
 	rewinddir.c \
 	scandir.c \
 	scandir_b.c \
 	scandir-compat11.c \
 	seed48.c \
 	seekdir.c \
 	semctl.c \
 	sendmmsg.c \
 	setdomainname.c \
 	sethostname.c \
 	setjmperr.c \
 	setmode.c \
 	setproctitle.c \
 	setprogname.c \
 	siginterrupt.c \
 	siglist.c \
 	signal.c \
 	sigsetops.c \
 	sleep.c \
 	srand48.c \
 	statvfs.c \
 	stringlist.c \
 	strtofflags.c \
 	sysconf.c \
 	sysctl.c \
 	sysctlbyname.c \
 	sysctlnametomib.c \
 	syslog.c \
 	telldir.c \
 	termios.c \
 	time.c \
 	times.c \
 	timespec_get.c \
 	timezone.c \
 	tls.c \
 	ttyname.c \
 	ttyslot.c \
 	ualarm.c \
 	ulimit.c \
 	uname.c \
 	unvis-compat.c \
 	usleep.c \
 	utime.c \
 	utxdb.c \
 	valloc.c \
 	wait.c \
 	wait3.c \
 	waitpid.c \
 	waitid.c \
 	wordexp.c
 
 CFLAGS.arc4random.c= -I${SRCTOP}/sys -I${SRCTOP}/sys/crypto/chacha20
 
 .PATH: ${SRCTOP}/contrib/libc-pwcache
 SRCS+=	pwcache.c pwcache.h
 
 .PATH: ${SRCTOP}/contrib/libc-vis
 CFLAGS+=	-I${SRCTOP}/contrib/libc-vis
 SRCS+=	unvis.c vis.c
 
 MISRCS+=modf.c
 
 CANCELPOINTS_SRCS=sem.c sem_new.c
 .for src in ${CANCELPOINTS_SRCS}
 SRCS+=cancelpoints_${src}
 CLEANFILES+=cancelpoints_${src}
 cancelpoints_${src}: ${LIBC_SRCTOP}/gen/${src} .NOMETA
 	ln -sf ${.ALLSRC} ${.TARGET}
 .endfor
 
 SYM_MAPS+=${LIBC_SRCTOP}/gen/Symbol.map
 
 # machine-dependent gen sources
 .sinclude "${LIBC_SRCTOP}/${LIBC_ARCH}/gen/Makefile.inc"
 
 MAN+=	alarm.3 \
 	arc4random.3 \
 	auxv.3 \
 	basename.3 \
 	cap_rights_get.3 \
 	cap_sandboxed.3 \
 	check_utility_compat.3 \
 	clock.3 \
 	clock_getcpuclockid.3 \
 	confstr.3 \
 	ctermid.3 \
 	daemon.3 \
 	devname.3 \
 	directory.3 \
 	dirname.3 \
 	dl_iterate_phdr.3 \
 	dladdr.3 \
 	dlinfo.3 \
 	dllockinit.3 \
 	dlopen.3 \
 	dup3.3 \
 	err.3 \
 	exec.3 \
 	feature_present.3 \
 	fmtcheck.3 \
 	fmtmsg.3 \
 	fnmatch.3 \
 	fpclassify.3 \
 	frexp.3 \
 	ftok.3 \
 	fts.3 \
 	ftw.3 \
 	getbootfile.3 \
 	getbsize.3 \
 	getcap.3 \
 	getcontext.3 \
 	getcwd.3 \
 	getdiskbyname.3 \
 	getdomainname.3 \
 	getentropy.3 \
 	getfsent.3 \
 	getgrent.3 \
 	getgrouplist.3 \
 	gethostname.3 \
 	getloadavg.3 \
 	getmntinfo.3 \
 	getnetgrent.3 \
 	getosreldate.3 \
 	getpagesize.3 \
 	getpagesizes.3 \
 	getpass.3 \
 	getpeereid.3 \
 	getprogname.3 \
 	getpwent.3 \
 	getttyent.3 \
 	getusershell.3 \
 	getutxent.3 \
 	getvfsbyname.3 \
 	glob.3 \
 	initgroups.3 \
 	isgreater.3 \
 	ldexp.3 \
 	lockf.3 \
 	makecontext.3 \
 	modf.3 \
 	nice.3 \
 	nlist.3 \
 	pause.3 \
 	popen.3 \
 	posix_spawn.3 \
 	posix_spawn_file_actions_addopen.3 \
 	posix_spawn_file_actions_init.3 \
 	posix_spawnattr_getflags.3 \
 	posix_spawnattr_getpgroup.3 \
 	posix_spawnattr_getschedparam.3 \
 	posix_spawnattr_getschedpolicy.3 \
 	posix_spawnattr_init.3 \
 	posix_spawnattr_getsigdefault.3 \
 	posix_spawnattr_getsigmask.3 \
 	psignal.3 \
 	pwcache.3 \
 	raise.3 \
 	rand48.3 \
 	readpassphrase.3 \
 	rfork_thread.3 \
 	scandir.3 \
 	sem_destroy.3 \
 	sem_getvalue.3 \
 	sem_init.3 \
 	sem_open.3 \
 	sem_post.3 \
 	sem_timedwait.3 \
 	sem_wait.3 \
 	setjmp.3 \
 	setmode.3 \
 	setproctitle.3 \
 	siginterrupt.3 \
 	signal.3 \
 	sigsetops.3 \
 	sleep.3 \
 	statvfs.3 \
 	stringlist.3 \
 	strtofflags.3 \
 	sysconf.3 \
 	sysctl.3 \
 	syslog.3 \
 	tcgetpgrp.3 \
 	tcgetsid.3 \
 	tcsendbreak.3 \
 	tcsetattr.3 \
 	tcsetpgrp.3 \
 	tcsetsid.3 \
 	time.3 \
 	times.3 \
 	timespec_get.3 \
 	timezone.3 \
 	ttyname.3 \
 	tzset.3 \
 	ualarm.3 \
 	ucontext.3 \
 	ulimit.3 \
 	uname.3 \
 	unvis.3 \
 	usleep.3 \
 	utime.3 \
 	valloc.3 \
 	vis.3 \
 	wordexp.3
 
 MLINKS+=arc4random.3 arc4random_buf.3 \
 	arc4random.3 arc4random_uniform.3
 MLINKS+=auxv.3 elf_aux_info.3
 MLINKS+=ctermid.3 ctermid_r.3
 MLINKS+=daemon.3 daemonfd.3
 MLINKS+=devname.3 devname_r.3
 MLINKS+=devname.3 fdevname.3
 MLINKS+=devname.3 fdevname_r.3
 MLINKS+=directory.3 closedir.3 \
 	directory.3 dirfd.3 \
 	directory.3 fdclosedir.3 \
 	directory.3 fdopendir.3 \
 	directory.3 opendir.3 \
 	directory.3 readdir.3 \
 	directory.3 readdir_r.3 \
 	directory.3 rewinddir.3 \
 	directory.3 seekdir.3 \
 	directory.3 telldir.3
 MLINKS+=dlopen.3 fdlopen.3 \
 	dlopen.3 dlclose.3 \
 	dlopen.3 dlerror.3 \
 	dlopen.3 dlfunc.3 \
 	dlopen.3 dlsym.3 \
 	dlopen.3 dlvsym.3
 MLINKS+=err.3 err_set_exit.3 \
 	err.3 err_set_file.3 \
 	err.3 errc.3 \
 	err.3 errx.3 \
 	err.3 verr.3 \
 	err.3 verrc.3 \
 	err.3 verrx.3 \
 	err.3 vwarn.3 \
 	err.3 vwarnc.3 \
 	err.3 vwarnx.3 \
 	err.3 warnc.3 \
 	err.3 warn.3 \
 	err.3 warnx.3
 MLINKS+=exec.3 execl.3 \
 	exec.3 execle.3 \
 	exec.3 execlp.3 \
 	exec.3 exect.3 \
 	exec.3 execv.3 \
 	exec.3 execvP.3 \
 	exec.3 execvp.3
 MLINKS+=fpclassify.3 finite.3 \
 	fpclassify.3 finitef.3 \
 	fpclassify.3 isfinite.3 \
 	fpclassify.3 isinf.3 \
 	fpclassify.3 isnan.3 \
 	fpclassify.3 isnormal.3
 MLINKS+=frexp.3 frexpf.3 \
 	frexp.3 frexpl.3
 MLINKS+=fts.3 fts_children.3 \
 	fts.3 fts_close.3 \
 	fts.3 fts_open.3 \
 	fts.3 fts_read.3 \
 	fts.3 fts_set.3 \
 	fts.3 fts_set_clientptr.3 \
 	fts.3 fts_get_clientptr.3 \
 	fts.3 fts_get_stream.3
 MLINKS+=ftw.3 nftw.3
 MLINKS+=getcap.3 cgetcap.3 \
 	getcap.3 cgetclose.3 \
 	getcap.3 cgetent.3 \
 	getcap.3 cgetfirst.3 \
 	getcap.3 cgetmatch.3 \
 	getcap.3 cgetnext.3 \
 	getcap.3 cgetnum.3 \
 	getcap.3 cgetset.3 \
 	getcap.3 cgetstr.3 \
 	getcap.3 cgetustr.3
 MLINKS+=getcwd.3 getwd.3
 MLINKS+=getcontext.3 getcontextx.3
 MLINKS+=getcontext.3 setcontext.3
 MLINKS+=getdomainname.3 setdomainname.3
 MLINKS+=getfsent.3 endfsent.3 \
 	getfsent.3 getfsfile.3 \
 	getfsent.3 getfsspec.3 \
 	getfsent.3 getfstype.3 \
 	getfsent.3 setfsent.3 \
 	getfsent.3 setfstab.3 \
 	getfsent.3 getfstab.3
 MLINKS+=getgrent.3 endgrent.3 \
 	getgrent.3 getgrgid.3 \
 	getgrent.3 getgrnam.3 \
 	getgrent.3 setgrent.3 \
 	getgrent.3 setgroupent.3 \
 	getgrent.3 getgrent_r.3 \
 	getgrent.3 getgrnam_r.3 \
 	getgrent.3 getgrgid_r.3
 MLINKS+=gethostname.3 sethostname.3
 MLINKS+=getnetgrent.3 endnetgrent.3 \
 	getnetgrent.3 getnetgrent_r.3 \
 	getnetgrent.3 innetgr.3 \
 	getnetgrent.3 setnetgrent.3
 MLINKS+=getprogname.3 setprogname.3
 MLINKS+=getpwent.3 endpwent.3 \
 	getpwent.3 getpwnam.3 \
 	getpwent.3 getpwuid.3 \
 	getpwent.3 setpassent.3 \
 	getpwent.3 setpwent.3 \
 	getpwent.3 setpwfile.3 \
 	getpwent.3 getpwent_r.3 \
 	getpwent.3 getpwnam_r.3 \
 	getpwent.3 getpwuid_r.3
 MLINKS+=getttyent.3 endttyent.3 \
 	getttyent.3 getttynam.3 \
 	getttyent.3 isdialuptty.3 \
 	getttyent.3 isnettty.3 \
 	getttyent.3 setttyent.3
 MLINKS+=getusershell.3 endusershell.3 \
 	getusershell.3 setusershell.3
 MLINKS+=getutxent.3 endutxent.3 \
 	getutxent.3 getutxid.3 \
 	getutxent.3 getutxline.3 \
 	getutxent.3 getutxuser.3 \
 	getutxent.3 pututxline.3 \
 	getutxent.3 setutxdb.3 \
 	getutxent.3 setutxent.3 \
 	getutxent.3 utmpx.3
 MLINKS+=glob.3 globfree.3
 MLINKS+=isgreater.3 isgreaterequal.3 \
 	isgreater.3 isless.3 \
 	isgreater.3 islessequal.3 \
 	isgreater.3 islessgreater.3 \
 	isgreater.3 isunordered.3
 MLINKS+=ldexp.3 ldexpf.3 \
 	ldexp.3 ldexpl.3
 MLINKS+=makecontext.3 swapcontext.3
 MLINKS+=modf.3 modff.3 \
 	modf.3 modfl.3
 MLINKS+=popen.3 pclose.3
 MLINKS+=posix_spawn.3 posix_spawnp.3 \
 	posix_spawn_file_actions_addopen.3 posix_spawn_file_actions_addclose.3 \
 	posix_spawn_file_actions_addopen.3 posix_spawn_file_actions_adddup2.3 \
 	posix_spawn_file_actions_init.3 posix_spawn_file_actions_destroy.3 \
 	posix_spawnattr_getflags.3 posix_spawnattr_setflags.3 \
 	posix_spawnattr_getpgroup.3 posix_spawnattr_setpgroup.3 \
 	posix_spawnattr_getschedparam.3 posix_spawnattr_setschedparam.3 \
 	posix_spawnattr_getschedpolicy.3 posix_spawnattr_setschedpolicy.3 \
 	posix_spawnattr_getsigdefault.3 posix_spawnattr_setsigdefault.3 \
 	posix_spawnattr_getsigmask.3 posix_spawnattr_setsigmask.3 \
 	posix_spawnattr_init.3 posix_spawnattr_destroy.3
 MLINKS+=psignal.3 strsignal.3 \
 	psignal.3 sys_siglist.3 \
 	psignal.3 sys_signame.3
 MLINKS+=pwcache.3 group_from_gid.3 \
 	pwcache.3 user_from_uid.3
 MLINKS+=rand48.3 _rand48.3 \
 	rand48.3 drand48.3 \
 	rand48.3 erand48.3 \
 	rand48.3 jrand48.3 \
 	rand48.3 lcong48.3 \
 	rand48.3 lrand48.3 \
 	rand48.3 mrand48.3 \
 	rand48.3 nrand48.3 \
 	rand48.3 seed48.3 \
 	rand48.3 srand48.3
 MLINKS+=recv.2 recvmmsg.2
 MLINKS+=scandir.3 alphasort.3
 MLINKS+=sem_open.3 sem_close.3 \
 	sem_open.3 sem_unlink.3
 MLINKS+=sem_wait.3 sem_trywait.3
 MLINKS+=sem_timedwait.3 sem_clockwait_np.3
 MLINKS+=send.2 sendmmsg.2
 MLINKS+=setjmp.3 _longjmp.3 \
 	setjmp.3 _setjmp.3 \
 	setjmp.3 longjmp.3 \
 	setjmp.3 longjmperr.3 \
 	setjmp.3 longjmperror.3 \
 	setjmp.3 siglongjmp.3 \
 	setjmp.3 sigsetjmp.3
 MLINKS+=setmode.3 getmode.3
 MLINKS+=setproctitle.3 setproctitle_fast.3
 MLINKS+=sigsetops.3 sigaddset.3 \
 	sigsetops.3 sigandset.3 \
 	sigsetops.3 sigdelset.3 \
 	sigsetops.3 sigemptyset.3 \
 	sigsetops.3 sigfillset.3 \
 	sigsetops.3 sigisemptyset.3 \
 	sigsetops.3 sigismember.3 \
 	sigsetops.3 sigorset.3
 MLINKS+=statvfs.3 fstatvfs.3
 MLINKS+=stringlist.3 sl_add.3 \
 	stringlist.3 sl_find.3 \
 	stringlist.3 sl_free.3 \
 	stringlist.3 sl_init.3
 MLINKS+=strtofflags.3 fflagstostr.3
 MLINKS+=sysctl.3 sysctlbyname.3 \
 	sysctl.3 sysctlnametomib.3
 MLINKS+=syslog.3 closelog.3 \
 	syslog.3 openlog.3 \
 	syslog.3 setlogmask.3 \
 	syslog.3 vsyslog.3
 MLINKS+=tcsendbreak.3 tcdrain.3 \
 	tcsendbreak.3 tcflow.3 \
 	tcsendbreak.3 tcflush.3
 MLINKS+=tcsetattr.3 cfgetispeed.3 \
 	tcsetattr.3 cfgetospeed.3 \
 	tcsetattr.3 cfmakeraw.3 \
 	tcsetattr.3 cfmakesane.3 \
 	tcsetattr.3 cfsetispeed.3 \
 	tcsetattr.3 cfsetospeed.3 \
 	tcsetattr.3 cfsetspeed.3 \
 	tcsetattr.3 tcgetattr.3
 MLINKS+=ttyname.3 isatty.3 \
 	ttyname.3 ttyname_r.3
 MLINKS+=tzset.3 tzsetwall.3
 MLINKS+=unvis.3 strunvis.3 \
 	unvis.3 strunvisx.3
 MLINKS+=vis.3 nvis.3 \
 	vis.3 snvis.3 \
 	vis.3 strenvisx.3 \
 	vis.3 strnunvis.3 \
 	vis.3 strnunvisx.3 \
 	vis.3 strnvis.3 \
 	vis.3 strnvisx.3 \
 	vis.3 strsenvisx.3 \
 	vis.3 strsnvis.3 \
 	vis.3 strsnvisx.3 \
 	vis.3 strsvis.3 \
 	vis.3 strsvisx.3 \
 	vis.3 strvis.3 \
 	vis.3 strvisx.3 \
 	vis.3 svis.3
 
 MLINKS+=wordexp.3 wordfree.3
 
 .include <src.tools.mk>
 
 afterinstallconfig: install-passwd
 install-passwd: .PHONY
 .if ${MK_TCSH} == "no"
 	sed -i "" -e 's;/bin/csh;/bin/sh;' ${DESTDIR}/etc/master.passwd
 .endif
 	${PWD_MKDB_CMD} -i -p -d ${DESTDIR}/etc ${DESTDIR}/etc/master.passwd
 .if defined(NO_ROOT) && defined(METALOG)
 	( \
 		echo "./etc/pwd.db type=file mode=0644 uname=root gname=wheel"; \
 		echo "./etc/spwd.db type=file mode=0600 uname=root gname=wheel"; \
 		echo "./etc/passwd type=file mode=0644 uname=root gname=wheel"; \
 	) | cat -l >> ${METALOG}
 .endif
diff --git a/lib/libc/gen/Symbol.map b/lib/libc/gen/Symbol.map
index 2fb8e080de6a..c89eb63caada 100644
--- a/lib/libc/gen/Symbol.map
+++ b/lib/libc/gen/Symbol.map
@@ -1,560 +1,563 @@
 /*
  * $FreeBSD$
  */
 
 FBSD_1.0 {
 	__xuname;
 	pthread_atfork;
 	pthread_attr_destroy;
 	pthread_attr_get_np;
 	pthread_attr_getdetachstate;
 	pthread_attr_getguardsize;
 	pthread_attr_getinheritsched;
 	pthread_attr_getschedparam;
 	pthread_attr_getschedpolicy;
 	pthread_attr_getscope;
 	pthread_attr_getstackaddr;
 	pthread_attr_getstacksize;
 	pthread_attr_init;
 	pthread_attr_setdetachstate;
 	pthread_attr_setguardsize;
 	pthread_attr_setinheritsched;
 	pthread_attr_setschedparam;
 	pthread_attr_setschedpolicy;
 	pthread_attr_setscope;
 	pthread_attr_setstackaddr;
 	pthread_attr_setstacksize;
 	pthread_cancel;
 	pthread_cleanup_pop;
 	pthread_cleanup_push;
 	pthread_cond_broadcast;
 	pthread_cond_destroy;
 	pthread_cond_init;
 	pthread_cond_signal;
 	pthread_cond_timedwait;
 	pthread_cond_wait;
 	pthread_detach;
 	pthread_equal;
 	pthread_exit;
 	pthread_getspecific;
 	pthread_join;
 	pthread_key_create;
 	pthread_key_delete;
 	pthread_kill;
 	pthread_main_np;
 	pthread_mutex_destroy;
 	pthread_mutex_init;
 	pthread_mutex_lock;
 	pthread_mutex_trylock;
 	pthread_mutex_unlock;
 	pthread_mutexattr_destroy;
 	pthread_mutexattr_init;
 	pthread_mutexattr_settype;
 	pthread_once;
 	pthread_rwlock_destroy;
 	pthread_rwlock_init;
 	pthread_rwlock_rdlock;
 	pthread_rwlock_tryrdlock;
 	pthread_rwlock_trywrlock;
 	pthread_rwlock_unlock;
 	pthread_rwlock_wrlock;
 	pthread_self;
 	pthread_setcancelstate;
 	pthread_setcanceltype;
 	pthread_setspecific;
 	pthread_sigmask;
 	pthread_testcancel;
 	alarm;
 	arc4random;
 	__assert;
 	check_utility_compat;
 	clock;
 	closedir;
 	confstr;
 	ctermid;
 	ctermid_r;
 	daemon;
 	getdiskbyname;
 	dladdr;
 	dlclose;
 	dlerror;
 	dlfunc;
 	dllockinit;
 	dlopen;
 	dlsym;
 	dlvsym;
 	dlinfo;
 	dl_iterate_phdr;
 	drand48;
 	erand48;
 	err_set_file;
 	err_set_exit;
 	err;
 	verr;
 	errc;
 	verrc;
 	errx;
 	verrx;
 	warn;
 	vwarn;
 	warnc;
 	vwarnc;
 	warnx;
 	vwarnx;
 	sys_errlist;
 	sys_nerr;
 	errno;
 	exect;
 	execl;
 	execle;
 	execlp;
 	execv;
 	execvp;
 	execvP;
 	fmtcheck;
 	fmtmsg;
 	fnmatch;
 	__fpclassifyf;
 	__fpclassifyd;
 	__fpclassifyl;
 	frexp;
 	setfstab;
 	getfstab;
 	getfsent;
 	getfsspec;
 	getfsfile;
 	setfsent;
 	endfsent;
 	ftok;
 	getbootfile;
 	getbsize;
 	cgetset;
 	cgetcap;
 	cgetent;
 	cgetmatch;
 	cgetfirst;
 	cgetclose;
 	cgetnext;
 	cgetstr;
 	cgetustr;
 	cgetnum;
 	getcwd;
 	getdomainname;
 	setgrent;
 	setgroupent;
 	endgrent;
 	getgrent_r;
 	getgrnam_r;
 	getgrgid_r;
 	getgrnam;
 	getgrgid;
 	getgrent;
 	/*
 	 * Why are __gr_parse_entry() and __gr_match_entry() not static in
 	 * gen/getgrent.c?
 	 */
 	getgrouplist;
 	gethostname;
 	getloadavg;
 	getlogin;
 	setnetgrent;
 	getnetgrent;
 	endnetgrent;
 	innetgr;
 	getosreldate;
 	getpagesize;
 	getpeereid;
 	_getprogname;
 	getprogname;
 	setpwent;
 	setpassent;
 	endpwent;
 	getpwent_r;
 	getpwnam_r;
 	getpwuid_r;
 	getpwnam;
 	getpwuid;
 	getpwent;
 	getttynam;
 	getttyent;
 	setttyent;
 	endttyent;
 	isdialuptty;
 	isnettty;
 	getusershell;
 	endusershell;
 	setusershell;
 	getvfsbyname;
 	__isnan;
 	isnan;
 	__isnanf;
 	isnanf;
 	__isinf;
 	isinf;
 	__isinff;
 	__isinfl;
 	isatty;
 	initgroups;
 	jrand48;
 	lcong48;
 	ldexp;
 	lockf;
 	lrand48;
 	modf;
 	mrand48;
 	nice;
 	nlist;
 	nrand48;
 	opendir;
 	pause;
 	posix_madvise;
 	popen;
 	pclose;
 	psignal;
 	raise;
 	readpassphrase;
 	getpass;
 	rewinddir;
 	seed48;
 	seekdir;
 	user_from_uid;
 	group_from_gid;
 	setdomainname;
 	sethostname;
 	longjmperror;
 	getmode;
 	setmode;
 	setproctitle;
 	setprogname;
 	siginterrupt;
 	sys_signame;
 	sys_siglist;
 	sys_nsig;
 	signal;
 	sigaddset;
 	sigdelset;
 	sigemptyset;
 	sigfillset;
 	sigismember;
 	sleep;
 	srand48;
 	fstatvfs;
 	statvfs;
 	sl_init;
 	sl_add;
 	sl_free;
 	sl_find;
 	fflagstostr;
 	strtofflags;
 	sysconf;
 	sysctl;
 	sysctlbyname;
 	sysctlnametomib;
 	syslog;
 	vsyslog;
 	openlog;
 	closelog;
 	setlogmask;
 	ttyname_r;
 	ttyname;
 	timezone;
 	times;
 	time;
 	telldir;
 	tcgetattr;
 	tcsetattr;
 	tcsetpgrp;
 	tcgetpgrp;
 	cfgetospeed;
 	cfgetispeed;
 	cfsetospeed;
 	cfsetispeed;
 	cfsetspeed;
 	cfmakeraw;
 	tcsendbreak;
 	_init_tls;
 	__tls_get_addr;
 	tcdrain;
 	tcflush;
 	tcflow;
 	ualarm;
 	ulimit;
 	uname;
 	strunvis;
 	strunvisx;
 	usleep;
 	utime;
 	valloc;
 	vis;
 	strvis;
 	strvisx;
 	wait;
 	wait3;
 	waitpid;
 	wordexp;
 	wordfree;
 };
 
 FBSD_1.1 {
 	arc4random_buf;
 	arc4random_uniform;
 	fdevname;
 	fdevname_r;
 	fdopendir;
 	feature_present;
 	posix_spawn;
 	posix_spawn_file_actions_addclose;
 	posix_spawn_file_actions_adddup2;
 	posix_spawn_file_actions_addopen;
 	posix_spawn_file_actions_destroy;
 	posix_spawn_file_actions_init;
 	posix_spawnattr_destroy;
 	posix_spawnattr_getflags;
 	posix_spawnattr_getpgroup;
 	posix_spawnattr_getschedparam;
 	posix_spawnattr_getschedpolicy;
 	posix_spawnattr_getsigdefault;
 	posix_spawnattr_getsigmask;
 	posix_spawnattr_init;
 	posix_spawnattr_setflags;
 	posix_spawnattr_setpgroup;
 	posix_spawnattr_setschedparam;
 	posix_spawnattr_setschedpolicy;
 	posix_spawnattr_setsigdefault;
 	posix_spawnattr_setsigmask;
 	posix_spawnp;
 	semctl;
 	tcgetsid;
 	tcsetsid;
 	__pthread_cleanup_pop_imp;
 	__pthread_cleanup_push_imp;
 };
 
 FBSD_1.2 {
 	cfmakesane;
 	endutxent;
 	getpagesizes;
 	getutxent;
 	getutxid;
 	getutxline;
 	getutxuser;
 	pthread_getthreadid_np;
 	pututxline;
 	sem_close;
 	sem_destroy;
 	sem_getvalue;
 	sem_init;
 	sem_open;
 	sem_post;
 	sem_timedwait;
 	sem_trywait;
 	sem_unlink;
 	sem_wait;
 	setutxdb;
 	setutxent;
 };
 
 FBSD_1.3 {
 	clock_getcpuclockid;
 	dirfd;
 	dup3;
 	fdclosedir;
 	fdlopen;
 	__FreeBSD_libc_enter_restricted_mode;
 	getcontextx;
 	gid_from_group;
 	nvis;
 	pwcache_userdb;
 	pwcache_groupdb;
 	snvis;
 	strenvisx;
 	strnunvis;
 	strnunvisx;
 	strnvis;
 	strnvisx;
 	strsenvisx;
 	strsnvis;
 	strsnvisx;
 	strsvis;
 	strsvisx;
 	svis;
 	uid_from_user;
 	unvis;
 	waitid;
 };
 
 FBSD_1.4 {
 	getnetgrent_r;
 	pthread_mutex_consistent;
 	pthread_mutexattr_getrobust;
 	pthread_mutexattr_setrobust;
 	stravis;
 };
 
 FBSD_1.5 {
 	alphasort;
 	basename;
 	daemonfd;
 	devname;
 	devname_r;
 	dirname;
 	elf_aux_info;
 	fts_children;
 	fts_close;
 	fts_get_clientptr;
 	fts_get_stream;
 	fts_open;
 	fts_read;
 	fts_set;
 	fts_set_clientptr;
 	ftw;
 	getentropy;
 	getmntinfo;
 	glob;
 	globfree;
 	nftw;
 	readdir;
 	readdir_r;
 	scandir;
 	sem_clockwait_np;
 	setproctitle_fast;
 	timespec_get;
 };
 
 FBSD_1.6 {
+	eventfd;
+	eventfd_read;
+	eventfd_write;
 	getlogin_r;
 	memalign;
 	scandir_b;
 	sigandset;
 	sigisemptyset;
 	sigorset;
 	tcgetwinsize;
 	tcsetwinsize;
 };
 
 FBSDprivate_1.0 {
 	/* needed by thread libraries */
 	__thr_jtable;
 
 	_pthread_atfork;
 	_pthread_attr_destroy;
 	_pthread_attr_getdetachstate;
 	_pthread_attr_getguardsize;
 	_pthread_attr_getinheritsched;
 	_pthread_attr_getschedparam;
 	_pthread_attr_getschedpolicy;
 	_pthread_attr_getscope;
 	_pthread_attr_getstackaddr;
 	_pthread_attr_getstacksize;
 	_pthread_attr_init;
 	_pthread_attr_setdetachstate;
 	_pthread_attr_setguardsize;
 	_pthread_attr_setinheritsched;
 	_pthread_attr_setschedparam;
 	_pthread_attr_setschedpolicy;
 	_pthread_attr_setscope;
 	_pthread_attr_setstackaddr;
 	_pthread_attr_setstacksize;
 	_pthread_cancel;
 	_pthread_cancel_enter;
 	_pthread_cancel_leave;
 	_pthread_cleanup_pop;
 	_pthread_cleanup_push;
 	_pthread_cond_broadcast;
 	_pthread_cond_destroy;
 	_pthread_cond_init;
 	_pthread_cond_signal;
 	_pthread_cond_timedwait;
 	_pthread_cond_wait;
 	_pthread_detach;
 	_pthread_equal;
 	_pthread_exit;
 	_pthread_getspecific;
 	_pthread_join;
 	_pthread_key_create;
 	_pthread_key_delete;
 	_pthread_kill;
 	_pthread_main_np;
 	_pthread_mutex_destroy;
 	_pthread_mutex_init_calloc_cb;
 	_pthread_mutex_init;
 	_pthread_mutex_lock;
 	_pthread_mutex_trylock;
 	_pthread_mutex_unlock;
 	_pthread_mutexattr_destroy;
 	_pthread_mutexattr_init;
 	_pthread_mutexattr_settype;
 	_pthread_once;
 	_pthread_rwlock_destroy;
 	_pthread_rwlock_init;
 	_pthread_rwlock_rdlock;
 	_pthread_rwlock_tryrdlock;
 	_pthread_rwlock_trywrlock;
 	_pthread_rwlock_unlock;
 	_pthread_rwlock_wrlock;
 	_pthread_self;
 	_pthread_setcancelstate;
 	_pthread_setcanceltype;
 	_pthread_setspecific;
 	_pthread_sigmask;
 	_pthread_testcancel;
 	_spinlock;
 	_spinunlock;
 	_rtld_addr_phdr;
 	_rtld_atfork_pre;
 	_rtld_atfork_post;
 	_rtld_error;		/* for private use */
 	_rtld_get_stack_prot;
 	_rtld_is_dlopened;
 	_rtld_thread_init;	/* for private use */
 	__elf_phdr_match_addr;
 	_err;
 	_warn;
 	__fmtcheck;
 	/* __pw_match_entry; */
 	/* __pw_parse_entry; */
 	__fdnlist;	/* used by libkvm */
 	/* __elf_is_okay__; */
 	/* __elf_fdnlist; */
 	__opendir2;
 	__pause;
 	_pause;
 	__raise;
 	_raise;
 	__sleep;
 	_sleep;
 	_rtld_allocate_tls;
 	_rtld_free_tls;
 #if defined(i386)
 	___libc_tls_get_addr;	/* x86 only */
 #endif
 	__libc_tls_get_addr;
 	__tcdrain;
 	_tcdrain;
 	__usleep;
 	_usleep;
 	__wait;
 	_wait;
 	__waitpid;
 	_waitpid;
 
 	_libc_sem_init_compat;
 	_libc_sem_destroy_compat;
 	_libc_sem_open_compat;
 	_libc_sem_close_compat;
 	_libc_sem_unlink_compat;
 	_libc_sem_wait_compat;
 	_libc_sem_trywait_compat;
 	_libc_sem_timedwait_compat;
 	_libc_sem_post_compat;
 	_libc_sem_getvalue_compat;
 
 	__libc_tcdrain;
 
 	__elf_aux_vector;
 	__pthread_distribute_static_tls;
 	__pthread_map_stacks_exec;
 	__fillcontextx;
 	__fillcontextx2;
 	__getcontextx_size;
 };
diff --git a/lib/libc/gen/eventfd.c b/lib/libc/gen/eventfd.c
new file mode 100644
index 000000000000..b757f82029a9
--- /dev/null
+++ b/lib/libc/gen/eventfd.c
@@ -0,0 +1,54 @@
+/*-
+ * SPDX-License-Identifier: MIT
+ *
+ * Copyright (c) 2005-2020 Rich Felker, et al.
+ * Copyright (c) 2020 Greg V
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include "namespace.h"
+#include <sys/eventfd.h>
+#include <sys/specialfd.h>
+#include <unistd.h>
+#include "un-namespace.h"
+#include "libc_private.h"
+
+int eventfd(unsigned int initval, int flags)
+{
+	struct specialfd_eventfd args;
+
+	args.initval = initval;
+	args.flags = flags;
+	return (__sys___specialfd(SPECIALFD_EVENTFD, &args, sizeof(args)));
+}
+
+int eventfd_read(int fd, eventfd_t *value)
+{
+	return (sizeof(*value) == _read(fd, value, sizeof(*value)) ? 0 : -1);
+}
+
+int eventfd_write(int fd, eventfd_t value)
+{
+	return (sizeof(value) == _write(fd, &value, sizeof(value)) ? 0 : -1);
+}
diff --git a/lib/libc/include/libc_private.h b/lib/libc/include/libc_private.h
index 21f5b1762eb4..d26c78c21c07 100644
--- a/lib/libc/include/libc_private.h
+++ b/lib/libc/include/libc_private.h
@@ -1,439 +1,440 @@
 /*-
  * SPDX-License-Identifier: BSD-3-Clause
  *
  * Copyright (c) 1998 John Birrell <jb@cimlogic.com.au>.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
  * 1. Redistributions of source code must retain the above copyright
  *    notice, this list of conditions and the following disclaimer.
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
  * 3. Neither the name of the author nor the names of any co-contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY JOHN BIRRELL AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
  * $FreeBSD$
  *
  * Private definitions for libc, libc_r and libpthread.
  *
  */
 
 #ifndef _LIBC_PRIVATE_H_
 #define _LIBC_PRIVATE_H_
 #include <sys/_types.h>
 #include <sys/_pthreadtypes.h>
 
 /*
  * This global flag is non-zero when a process has created one
  * or more threads. It is used to avoid calling locking functions
  * when they are not required.
  */
 #ifndef __LIBC_ISTHREADED_DECLARED
 #define __LIBC_ISTHREADED_DECLARED
 extern int	__isthreaded;
 #endif
 
 /*
  * Elf_Auxinfo *__elf_aux_vector, the pointer to the ELF aux vector
  * provided by kernel. Either set for us by rtld, or found at runtime
  * on stack for static binaries.
  *
  * Type is void to avoid polluting whole libc with ELF types.
  */
 extern void	*__elf_aux_vector;
 
 /*
  * libc should use libc_dlopen internally, which respects a global
  * flag where loading of new shared objects can be restricted.
  */
 void *libc_dlopen(const char *, int);
 
 /*
  * For dynamic linker.
  */
 void _rtld_error(const char *fmt, ...);
 
 /*
  * File lock contention is difficult to diagnose without knowing
  * where locks were set. Allow a debug library to be built which
  * records the source file and line number of each lock call.
  */
 #ifdef	_FLOCK_DEBUG
 #define _FLOCKFILE(x)	_flockfile_debug(x, __FILE__, __LINE__)
 #else
 #define _FLOCKFILE(x)	_flockfile(x)
 #endif
 
 /*
  * Macros for locking and unlocking FILEs. These test if the
  * process is threaded to avoid locking when not required.
  */
 #define	FLOCKFILE(fp)		if (__isthreaded) _FLOCKFILE(fp)
 #define	FUNLOCKFILE(fp)		if (__isthreaded) _funlockfile(fp)
 
 struct _spinlock;
 extern struct _spinlock __stdio_thread_lock __hidden;
 #define STDIO_THREAD_LOCK()				\
 do {							\
 	if (__isthreaded)				\
 		_SPINLOCK(&__stdio_thread_lock);	\
 } while (0)
 #define STDIO_THREAD_UNLOCK()				\
 do {							\
 	if (__isthreaded)				\
 		_SPINUNLOCK(&__stdio_thread_lock);	\
 } while (0)
 
 void		__libc_spinlock_stub(struct _spinlock *);
 void		__libc_spinunlock_stub(struct _spinlock *);
 
 /*
  * Indexes into the pthread jump table.
  *
  * Warning! If you change this type, you must also change the threads
  * libraries that reference it (libc_r, libpthread).
  */
 typedef enum {
 	PJT_ATFORK,
 	PJT_ATTR_DESTROY,
 	PJT_ATTR_GETDETACHSTATE,
 	PJT_ATTR_GETGUARDSIZE,
 	PJT_ATTR_GETINHERITSCHED,
 	PJT_ATTR_GETSCHEDPARAM,
 	PJT_ATTR_GETSCHEDPOLICY,
 	PJT_ATTR_GETSCOPE,
 	PJT_ATTR_GETSTACKADDR,
 	PJT_ATTR_GETSTACKSIZE,
 	PJT_ATTR_INIT,
 	PJT_ATTR_SETDETACHSTATE,
 	PJT_ATTR_SETGUARDSIZE,
 	PJT_ATTR_SETINHERITSCHED,
 	PJT_ATTR_SETSCHEDPARAM,
 	PJT_ATTR_SETSCHEDPOLICY,
 	PJT_ATTR_SETSCOPE,
 	PJT_ATTR_SETSTACKADDR,
 	PJT_ATTR_SETSTACKSIZE,
 	PJT_CANCEL,
 	PJT_CLEANUP_POP,
 	PJT_CLEANUP_PUSH,
 	PJT_COND_BROADCAST,
 	PJT_COND_DESTROY,
 	PJT_COND_INIT,
 	PJT_COND_SIGNAL,
 	PJT_COND_TIMEDWAIT,
 	PJT_COND_WAIT,
 	PJT_DETACH,
 	PJT_EQUAL,
 	PJT_EXIT,
 	PJT_GETSPECIFIC,
 	PJT_JOIN,
 	PJT_KEY_CREATE,
 	PJT_KEY_DELETE,
 	PJT_KILL,
 	PJT_MAIN_NP,
 	PJT_MUTEXATTR_DESTROY,
 	PJT_MUTEXATTR_INIT,
 	PJT_MUTEXATTR_SETTYPE,
 	PJT_MUTEX_DESTROY,
 	PJT_MUTEX_INIT,
 	PJT_MUTEX_LOCK,
 	PJT_MUTEX_TRYLOCK,
 	PJT_MUTEX_UNLOCK,
 	PJT_ONCE,
 	PJT_RWLOCK_DESTROY,
 	PJT_RWLOCK_INIT,
 	PJT_RWLOCK_RDLOCK,
 	PJT_RWLOCK_TRYRDLOCK,
 	PJT_RWLOCK_TRYWRLOCK,
 	PJT_RWLOCK_UNLOCK,
 	PJT_RWLOCK_WRLOCK,
 	PJT_SELF,
 	PJT_SETCANCELSTATE,
 	PJT_SETCANCELTYPE,
 	PJT_SETSPECIFIC,
 	PJT_SIGMASK,
 	PJT_TESTCANCEL,
 	PJT_CLEANUP_POP_IMP,
 	PJT_CLEANUP_PUSH_IMP,
 	PJT_CANCEL_ENTER,
 	PJT_CANCEL_LEAVE,
 	PJT_MUTEX_CONSISTENT,
 	PJT_MUTEXATTR_GETROBUST,
 	PJT_MUTEXATTR_SETROBUST,
 	PJT_GETTHREADID_NP,
 	PJT_ATTR_GET_NP,
 	PJT_MAX
 } pjt_index_t;
 
 typedef int (*pthread_func_t)(void);
 typedef pthread_func_t pthread_func_entry_t[2];
 
 extern pthread_func_entry_t __thr_jtable[];
 
 void	__set_error_selector(int *(*arg)(void));
 int	_pthread_mutex_init_calloc_cb_stub(pthread_mutex_t *mutex,
 	    void *(calloc_cb)(__size_t, __size_t));
 
 typedef int (*interpos_func_t)(void);
 interpos_func_t *__libc_interposing_slot(int interposno);
 extern interpos_func_t __libc_interposing[] __hidden;
 
 enum {
 	INTERPOS_accept,
 	INTERPOS_accept4,
 	INTERPOS_aio_suspend,
 	INTERPOS_close,
 	INTERPOS_connect,
 	INTERPOS_fcntl,
 	INTERPOS_fsync,
 	INTERPOS_fork,
 	INTERPOS_msync,
 	INTERPOS_nanosleep,
 	INTERPOS_openat,
 	INTERPOS_poll,
 	INTERPOS_pselect,
 	INTERPOS_recvfrom,
 	INTERPOS_recvmsg,
 	INTERPOS_select,
 	INTERPOS_sendmsg,
 	INTERPOS_sendto,
 	INTERPOS_setcontext,
 	INTERPOS_sigaction,
 	INTERPOS_sigprocmask,
 	INTERPOS_sigsuspend,
 	INTERPOS_sigwait,
 	INTERPOS_sigtimedwait,
 	INTERPOS_sigwaitinfo,
 	INTERPOS_swapcontext,
 	INTERPOS_system,
 	INTERPOS_tcdrain,
 	INTERPOS_read,
 	INTERPOS_readv,
 	INTERPOS_wait4,
 	INTERPOS_write,
 	INTERPOS_writev,
 	INTERPOS__pthread_mutex_init_calloc_cb,
 	INTERPOS_spinlock,
 	INTERPOS_spinunlock,
 	INTERPOS_kevent,
 	INTERPOS_wait6,
 	INTERPOS_ppoll,
 	INTERPOS_map_stacks_exec,
 	INTERPOS_fdatasync,
 	INTERPOS_clock_nanosleep,
 	INTERPOS_distribute_static_tls,
 	INTERPOS_MAX
 };
 
 /*
  * yplib internal interfaces
  */
 #ifdef YP
 int _yp_check(char **);
 #endif
 
 /*
  * Initialise TLS for static programs
  */
 void _init_tls(void);
 
 /*
  * Provides pthread_once()-like functionality for both single-threaded
  * and multi-threaded applications.
  */
 int _once(pthread_once_t *, void (*)(void));
 
 /*
  * Set the TLS thread pointer
  */
 void _set_tp(void *tp);
 
 /*
  * This is a pointer in the C run-time startup code. It is used
  * by getprogname() and setprogname().
  */
 extern const char *__progname;
 
 /*
  * This function is used by the threading libraries to notify malloc that a
  * thread is exiting.
  */
 void _malloc_thread_cleanup(void);
 
 /*
  * This function is used by the threading libraries to notify libc that a
  * thread is exiting, so its thread-local dtors should be called.
  */
 void __cxa_thread_call_dtors(void);
 int __cxa_thread_atexit_hidden(void (*dtor_func)(void *), void *obj,
     void *dso_symbol) __hidden;
 
 /*
  * These functions are used by the threading libraries in order to protect
  * malloc across fork().
  */
 void _malloc_prefork(void);
 void _malloc_postfork(void);
 
 void _malloc_first_thread(void);
 
 /*
  * Function to clean up streams, called from abort() and exit().
  */
 extern void (*__cleanup)(void) __hidden;
 
 /*
  * Get kern.osreldate to detect ABI revisions.  Explicitly
  * ignores value of $OSVERSION and caches result.
  */
 int __getosreldate(void);
 #include <sys/_types.h>
 #include <sys/_sigset.h>
 
 struct aiocb;
 struct fd_set;
 struct iovec;
 struct kevent;
 struct msghdr;
 struct pollfd;
 struct rusage;
 struct sigaction;
 struct sockaddr;
 struct stat;
 struct statfs;
 struct timespec;
 struct timeval;
 struct timezone;
 struct __siginfo;
 struct __ucontext;
 struct __wrusage;
 enum idtype;
 int		__sys_aio_suspend(const struct aiocb * const[], int,
 		    const struct timespec *);
 int		__sys_accept(int, struct sockaddr *, __socklen_t *);
 int		__sys_accept4(int, struct sockaddr *, __socklen_t *, int);
 int		__sys_clock_gettime(__clockid_t, struct timespec *ts);
 int		__sys_clock_nanosleep(__clockid_t, int,
 		    const struct timespec *, struct timespec *);
 int		__sys_close(int);
 int		__sys_close_range(unsigned, unsigned, int);
 int		__sys_connect(int, const struct sockaddr *, __socklen_t);
 int		__sys_fcntl(int, int, ...);
 int		__sys_fdatasync(int);
 int		__sys_fstat(int fd, struct stat *);
 int		__sys_fstatfs(int fd, struct statfs *);
 int		__sys_fstatat(int, const char *, struct stat *, int);
 int		__sys_fsync(int);
 __pid_t		__sys_fork(void);
 int		__sys_ftruncate(int, __off_t);
 __ssize_t	__sys_getdirentries(int, char *, __size_t, __off_t *);
 int		__sys_getfsstat(struct statfs *, long, int);
 int		__sys_gettimeofday(struct timeval *, struct timezone *);
 int		__sys_kevent(int, const struct kevent *, int, struct kevent *,
 		    int, const struct timespec *);
 __off_t		__sys_lseek(int, __off_t, int);
 void	       *__sys_mmap(void *, __size_t, int, int, int, __off_t);
 int		__sys_msync(void *, __size_t, int);
 int		__sys_nanosleep(const struct timespec *, struct timespec *);
 int		__sys_open(const char *, int, ...);
 int		__sys_openat(int, const char *, int, ...);
 int		__sys_pselect(int, struct fd_set *, struct fd_set *,
 		    struct fd_set *, const struct timespec *,
 		    const __sigset_t *);
 int		__sys_ptrace(int, __pid_t, char *, int);
 int		__sys_poll(struct pollfd *, unsigned, int);
 int		__sys_ppoll(struct pollfd *, unsigned, const struct timespec *,
 		    const __sigset_t *);
 __ssize_t	__sys_pread(int, void *, __size_t, __off_t);
 __ssize_t	__sys_pwrite(int, const void *, __size_t, __off_t);
 __ssize_t	__sys_read(int, void *, __size_t);
 __ssize_t	__sys_readv(int, const struct iovec *, int);
 __ssize_t	__sys_recv(int, void *, __size_t, int);
 __ssize_t	__sys_recvfrom(int, void *, __size_t, int, struct sockaddr *,
 		    __socklen_t *);
 __ssize_t	__sys_recvmsg(int, struct msghdr *, int);
 int		__sys_select(int, struct fd_set *, struct fd_set *,
 		    struct fd_set *, struct timeval *);
 __ssize_t	__sys_sendmsg(int, const struct msghdr *, int);
 __ssize_t	__sys_sendto(int, const void *, __size_t, int,
 		    const struct sockaddr *, __socklen_t);
 int		__sys_setcontext(const struct __ucontext *);
 int		__sys_sigaction(int, const struct sigaction *,
 		    struct sigaction *);
 int		__sys_sigprocmask(int, const __sigset_t *, __sigset_t *);
 int		__sys_sigsuspend(const __sigset_t *);
 int		__sys_sigtimedwait(const __sigset_t *, struct __siginfo *,
 		    const struct timespec *);
 int		__sys_sigwait(const __sigset_t *, int *);
 int		__sys_sigwaitinfo(const __sigset_t *, struct __siginfo *);
+int		__sys___specialfd(int, const void *, __size_t);
 int		__sys_statfs(const char *, struct statfs *);
 int		__sys_swapcontext(struct __ucontext *,
 		    const struct __ucontext *);
 int		__sys_thr_kill(long, int);
 int		__sys_thr_self(long *);
 int		__sys_truncate(const char *, __off_t);
 __pid_t		__sys_wait4(__pid_t, int *, int, struct rusage *);
 __pid_t		__sys_wait6(enum idtype, __id_t, int *, int,
 		    struct __wrusage *, struct __siginfo *);
 __ssize_t	__sys_write(int, const void *, __size_t);
 __ssize_t	__sys_writev(int, const struct iovec *, int);
 int		__sys_shm_open2(const char *, int, __mode_t, int, const char *);
 
 int		__libc_sigaction(int, const struct sigaction *,
 		    struct sigaction *) __hidden;
 int		__libc_sigprocmask(int, const __sigset_t *, __sigset_t *)
 		    __hidden;
 int		__libc_sigsuspend(const __sigset_t *) __hidden;
 int		__libc_sigwait(const __sigset_t * __restrict,
 		    int * restrict sig);
 int		__libc_system(const char *);
 int		__libc_tcdrain(int);
 int		__fcntl_compat(int fd, int cmd, ...);
 
 int		__sys_futimens(int fd, const struct timespec *times) __hidden;
 int		__sys_utimensat(int fd, const char *path,
 		    const struct timespec *times, int flag) __hidden;
 
 /* execve() with PATH processing to implement posix_spawnp() */
 int _execvpe(const char *, char * const *, char * const *);
 
 int _elf_aux_info(int aux, void *buf, int buflen);
 struct dl_phdr_info;
 int __elf_phdr_match_addr(struct dl_phdr_info *, void *);
 void __init_elf_aux_vector(void);
 void __libc_map_stacks_exec(void);
 void __libc_distribute_static_tls(__size_t, void *, __size_t, __size_t);
 __uintptr_t __libc_static_tls_base(__size_t);
 
 void	_pthread_cancel_enter(int);
 void	_pthread_cancel_leave(int);
 
 struct _pthread_cleanup_info;
 void	___pthread_cleanup_push_imp(void (*)(void *), void *,
 	    struct _pthread_cleanup_info *);
 void	___pthread_cleanup_pop_imp(int);
 
 void __throw_constraint_handler_s(const char * restrict msg, int error);
 
 struct __nl_cat_d;
 struct _xlocale;
 struct __nl_cat_d *__catopen_l(const char *name, int type,
 	    struct _xlocale *locale);
 
 #endif /* _LIBC_PRIVATE_H_ */
diff --git a/lib/libc/sys/Makefile.inc b/lib/libc/sys/Makefile.inc
index 38156ccf507d..d43a59719563 100644
--- a/lib/libc/sys/Makefile.inc
+++ b/lib/libc/sys/Makefile.inc
@@ -1,504 +1,507 @@
 #	@(#)Makefile.inc	8.3 (Berkeley) 10/24/94
 # $FreeBSD$
 
 # sys sources
 .PATH: ${LIBC_SRCTOP}/${LIBC_ARCH}/sys ${LIBC_SRCTOP}/sys
 
 # Include the generated makefile containing the *complete* list
 # of syscall names in MIASM.
 .include "${SRCTOP}/sys/sys/syscall.mk"
 
 # Include machine dependent definitions.
 #
 # MDASM names override the default syscall names in MIASM.
 # NOASM will prevent the default syscall code from being generated.
 # PSEUDO generates _<sys>() and __sys_<sys>() symbols, but not <sys>().
 #
 # While historically machine dependent, all architectures have the following
 # declarations in common:
 #
 NOASM=	exit.o \
 	getlogin.o \
 	sstk.o \
 	yield.o
 PSEUDO=	_exit.o \
 	_getlogin.o
 .sinclude "${LIBC_SRCTOP}/${LIBC_ARCH}/sys/Makefile.inc"
 
 SRCS+= clock_gettime.c gettimeofday.c __vdso_gettimeofday.c
 NOASM+=  clock_gettime.o gettimeofday.o
 PSEUDO+= _clock_gettime.o _gettimeofday.o
 
 # Sources common to both syscall interfaces:
 SRCS+=	\
 	__error.c \
 	interposing_table.c
 
 SRCS+= getdents.c lstat.c mknod.c stat.c
 
 SRCS+= fstat.c fstatat.c fstatfs.c getfsstat.c statfs.c
 NOASM+= fstat.o fstatat.o fstatfs.o getfsstat.o statfs.o
 PSEUDO+= _fstat.o _fstatat.o _fstatfs.o _getfsstat.o _statfs.o
 
 SRCS+= getdirentries.c
 NOASM+= getdirentries.o
 PSEUDO+= _getdirentries.o
 
 SRCS+= brk.c
 SRCS+= closefrom.c
 SRCS+= pipe.c
 SRCS+= shm_open.c
 SRCS+= vadvise.c
 
 SRCS+=	compat-stub.c
 
 INTERPOSED = \
 	accept \
 	accept4 \
 	aio_suspend \
 	clock_nanosleep \
 	close \
 	connect \
 	fcntl \
 	fdatasync \
 	fsync \
 	fork \
 	kevent \
 	msync \
 	nanosleep \
 	open \
 	openat \
 	poll \
 	ppoll \
 	pselect \
 	ptrace \
 	read \
 	readv \
 	recvfrom \
 	recvmsg \
 	select \
 	sendmsg \
 	sendto \
 	setcontext \
 	sigaction \
 	sigprocmask \
 	sigsuspend \
 	sigtimedwait \
 	sigwait \
 	sigwaitinfo \
 	swapcontext \
 	wait4 \
 	wait6 \
 	write \
 	writev
 
 SRCS+=	${INTERPOSED:S/$/.c/}
 NOASM+=	${INTERPOSED:S/$/.o/}
 PSEUDO+=	${INTERPOSED:C/^.*$/_&.o/}
 
 # Add machine dependent asm sources:
 SRCS+=${MDASM}
 
 # Look though the complete list of syscalls (MIASM) for names that are
 # not defined with machine dependent implementations (MDASM) and are
 # not declared for no generation of default code (NOASM).  Add each
 # syscall that satisfies these conditions to the ASM list.
 .for _asm in ${MIASM}
 .if (${MDASM:R:M${_asm:R}} == "")
 .if (${NOASM:R:M${_asm:R}} == "")
 ASM+=$(_asm)
 .endif
 .endif
 .endfor
 
 SASM=	${ASM:S/.o/.S/}
 
 SPSEUDO= ${PSEUDO:S/.o/.S/}
 
 SRCS+=	${SASM} ${SPSEUDO}
 
 SYM_MAPS+=	${LIBC_SRCTOP}/sys/Symbol.map
 
 # Generated files
 CLEANFILES+=	${SASM} ${SPSEUDO}
 
 .if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" || \
     ${MACHINE_CPUARCH} == "powerpc" || ${MACHINE_ARCH:Marmv[67]*}
 NOTE_GNU_STACK='\t.section .note.GNU-stack,"",%%progbits\n'
 .else
 NOTE_GNU_STACK=''
 .endif
 
 ${SASM}:
 	printf '/* %sgenerated by libc/sys/Makefile.inc */\n' @ > ${.TARGET}
 	printf '#include "compat.h"\n' >> ${.TARGET}
 	printf '#include "SYS.h"\nRSYSCALL(${.PREFIX})\n' >> ${.TARGET}
 	printf  ${NOTE_GNU_STACK} >>${.TARGET}
 
 ${SPSEUDO}:
 	printf '/* %sgenerated by libc/sys/Makefile.inc */\n' @ > ${.TARGET}
 	printf '#include "compat.h"\n' >> ${.TARGET}
 	printf '#include "SYS.h"\nPSEUDO(${.PREFIX:S/_//})\n' \
 	    >> ${.TARGET}
 	printf ${NOTE_GNU_STACK} >>${.TARGET}
 
 MAN+=	abort2.2 \
 	accept.2 \
 	access.2 \
 	acct.2 \
 	adjtime.2 \
 	aio_cancel.2 \
 	aio_error.2 \
 	aio_fsync.2 \
 	aio_mlock.2 \
 	aio_read.2 \
 	aio_return.2 \
 	aio_suspend.2 \
 	aio_waitcomplete.2 \
 	aio_write.2 \
 	bind.2 \
 	bindat.2 \
 	brk.2 \
 	cap_enter.2 \
 	cap_fcntls_limit.2 \
 	cap_ioctls_limit.2 \
 	cap_rights_limit.2 \
 	chdir.2 \
 	chflags.2 \
 	chmod.2 \
 	chown.2 \
 	chroot.2 \
 	clock_gettime.2 \
 	close.2 \
 	closefrom.2 \
 	connect.2 \
 	connectat.2 \
 	copy_file_range.2 \
 	cpuset.2 \
 	cpuset_getaffinity.2 \
 	cpuset_getdomain.2 \
 	dup.2 \
+	eventfd.2 \
 	execve.2 \
 	_exit.2 \
 	extattr_get_file.2 \
 	fcntl.2 \
 	ffclock.2 \
 	fhlink.2 \
 	fhopen.2 \
 	fhreadlink.2 \
 	flock.2 \
 	fork.2 \
 	fsync.2 \
 	getdirentries.2 \
 	getdtablesize.2 \
 	getfh.2 \
 	getfsstat.2 \
 	getgid.2 \
 	getgroups.2 \
 	getitimer.2 \
 	getlogin.2 \
 	getloginclass.2 \
 	getpeername.2 \
 	getpgrp.2 \
 	getpid.2 \
 	getpriority.2 \
 	getrandom.2 \
 	getrlimit.2 \
 	getrusage.2 \
 	getsid.2 \
 	getsockname.2 \
 	getsockopt.2 \
 	gettimeofday.2 \
 	getuid.2 \
 	intro.2 \
 	ioctl.2 \
 	issetugid.2 \
 	jail.2 \
 	kenv.2 \
 	kill.2 \
 	kldfind.2 \
 	kldfirstmod.2 \
 	kldload.2 \
 	kldnext.2 \
 	kldstat.2 \
 	kldsym.2 \
 	kldunload.2 \
 	kqueue.2 \
 	ktrace.2 \
 	link.2 \
 	lio_listio.2 \
 	listen.2 \
 	lseek.2 \
 	madvise.2 \
 	mincore.2 \
 	minherit.2 \
 	mkdir.2 \
 	mkfifo.2 \
 	mknod.2 \
 	mlock.2 \
 	mlockall.2 \
 	mmap.2 \
 	modfind.2 \
 	modnext.2 \
 	modstat.2 \
 	mount.2 \
 	mprotect.2 \
 	mq_close.2 \
 	mq_getattr.2 \
 	mq_notify.2 \
 	mq_open.2 \
 	mq_receive.2 \
 	mq_send.2 \
 	mq_setattr.2 \
 	msgctl.2 \
 	msgget.2 \
 	msgrcv.2 \
 	msgsnd.2 \
 	msync.2 \
 	munmap.2 \
 	nanosleep.2 \
 	nfssvc.2 \
 	ntp_adjtime.2 \
 	open.2 \
 	pathconf.2 \
 	pdfork.2 \
 	pipe.2 \
 	poll.2 \
 	posix_fadvise.2 \
 	posix_fallocate.2 \
 	posix_openpt.2 \
 	procctl.2 \
 	profil.2 \
 	pselect.2 \
 	ptrace.2 \
 	quotactl.2 \
 	rctl_add_rule.2 \
 	read.2 \
 	readlink.2 \
 	reboot.2 \
 	recv.2 \
 	rename.2 \
 	revoke.2 \
 	rfork.2 \
 	rmdir.2 \
 	rtprio.2
 .if !defined(NO_P1003_1B)
 MAN+=	sched_get_priority_max.2 \
 	sched_setparam.2 \
 	sched_setscheduler.2 \
 	sched_yield.2
 .endif
 MAN+=	sctp_generic_recvmsg.2 \
 	sctp_generic_sendmsg.2 \
 	sctp_peeloff.2 \
 	select.2 \
 	semctl.2 \
 	semget.2 \
 	semop.2 \
 	send.2 \
 	setfib.2 \
 	sendfile.2 \
 	setgroups.2 \
 	setpgid.2 \
 	setregid.2 \
 	setresuid.2 \
 	setreuid.2 \
 	setsid.2 \
 	setuid.2 \
 	shmat.2 \
 	shmctl.2 \
 	shmget.2 \
 	shm_open.2 \
 	shutdown.2 \
 	sigaction.2 \
 	sigaltstack.2 \
 	sigfastblock.2 \
 	sigpending.2 \
 	sigprocmask.2 \
 	sigqueue.2 \
 	sigreturn.2 \
 	sigstack.2 \
 	sigsuspend.2 \
 	sigwait.2 \
 	sigwaitinfo.2 \
 	socket.2 \
 	socketpair.2 \
 	stat.2 \
 	statfs.2 \
 	swapon.2 \
 	symlink.2 \
 	sync.2 \
 	sysarch.2 \
 	syscall.2 \
 	thr_exit.2 \
 	thr_kill.2 \
 	thr_new.2 \
 	thr_self.2 \
 	thr_set_name.2 \
 	thr_suspend.2 \
 	thr_wake.2 \
 	timer_create.2 \
 	timer_delete.2 \
 	timer_settime.2 \
 	truncate.2 \
 	umask.2 \
 	undelete.2 \
 	unlink.2 \
 	utimensat.2 \
 	utimes.2 \
 	utrace.2 \
 	uuidgen.2 \
 	vfork.2 \
 	wait.2 \
 	write.2 \
 	_umtx_op.2
 
 MLINKS+=accept.2 accept4.2
 MLINKS+=access.2 eaccess.2 \
 	access.2 faccessat.2
 MLINKS+=brk.2 sbrk.2
 MLINKS+=cap_enter.2 cap_getmode.2
 MLINKS+=cap_fcntls_limit.2 cap_fcntls_get.2
 MLINKS+=cap_ioctls_limit.2 cap_ioctls_get.2
 MLINKS+=chdir.2 fchdir.2
 MLINKS+=chflags.2 chflagsat.2 \
 	chflags.2 fchflags.2 \
 	chflags.2 lchflags.2
 MLINKS+=chmod.2 fchmod.2 \
 	chmod.2 fchmodat.2 \
 	chmod.2 lchmod.2
 MLINKS+=chown.2 fchown.2 \
 	chown.2 fchownat.2 \
 	chown.2 lchown.2
 MLINKS+=clock_gettime.2 clock_getres.2 \
 	clock_gettime.2 clock_settime.2
 MLINKS+=closefrom.2 close_range.2
 MLINKS+=nanosleep.2 clock_nanosleep.2
 MLINKS+=cpuset.2 cpuset_getid.2 \
 	cpuset.2 cpuset_setid.2
 MLINKS+=cpuset_getaffinity.2 cpuset_setaffinity.2
 MLINKS+=cpuset_getdomain.2 cpuset_setdomain.2
 MLINKS+=dup.2 dup2.2
+MLINKS+=eventfd.2 eventfd_read.3 \
+	eventfd.2 eventfd_write.3
 MLINKS+=execve.2 fexecve.2
 MLINKS+=extattr_get_file.2 extattr.2 \
 	extattr_get_file.2 extattr_delete_fd.2 \
 	extattr_get_file.2 extattr_delete_file.2 \
 	extattr_get_file.2 extattr_delete_link.2 \
 	extattr_get_file.2 extattr_get_fd.2 \
 	extattr_get_file.2 extattr_get_link.2 \
 	extattr_get_file.2 extattr_list_fd.2 \
 	extattr_get_file.2 extattr_list_file.2 \
 	extattr_get_file.2 extattr_list_link.2 \
 	extattr_get_file.2 extattr_set_fd.2 \
 	extattr_get_file.2 extattr_set_file.2 \
 	extattr_get_file.2 extattr_set_link.2
 MLINKS+=ffclock.2 ffclock_getcounter.2 \
 	ffclock.2 ffclock_getestimate.2 \
 	ffclock.2 ffclock_setestimate.2
 MLINKS+=fhlink.2 fhlinkat.2
 MLINKS+=fhopen.2 fhstat.2 fhopen.2 fhstatfs.2
 MLINKS+=fsync.2 fdatasync.2
 MLINKS+=getdirentries.2 getdents.2
 MLINKS+=getfh.2 lgetfh.2 \
 	getfh.2 getfhat.2
 MLINKS+=getgid.2 getegid.2
 MLINKS+=getitimer.2 setitimer.2
 MLINKS+=getlogin.2 getlogin_r.3
 MLINKS+=getlogin.2 setlogin.2
 MLINKS+=getloginclass.2 setloginclass.2
 MLINKS+=getpgrp.2 getpgid.2
 MLINKS+=getpid.2 getppid.2
 MLINKS+=getpriority.2 setpriority.2
 MLINKS+=getrlimit.2 setrlimit.2
 MLINKS+=getsockopt.2 setsockopt.2
 MLINKS+=gettimeofday.2 settimeofday.2
 MLINKS+=getuid.2 geteuid.2
 MLINKS+=intro.2 errno.2
 MLINKS+=jail.2 jail_attach.2 \
 	jail.2 jail_get.2 \
 	jail.2 jail_remove.2 \
 	jail.2 jail_set.2
 MLINKS+=kldunload.2 kldunloadf.2
 MLINKS+=kqueue.2 kevent.2 \
 	kqueue.2 EV_SET.3
 MLINKS+=link.2 linkat.2
 MLINKS+=madvise.2 posix_madvise.2
 MLINKS+=mkdir.2 mkdirat.2
 MLINKS+=mkfifo.2 mkfifoat.2
 MLINKS+=mknod.2 mknodat.2
 MLINKS+=mlock.2 munlock.2
 MLINKS+=mlockall.2 munlockall.2
 MLINKS+=modnext.2 modfnext.2
 MLINKS+=mount.2 nmount.2 \
 	mount.2 unmount.2
 MLINKS+=mq_receive.2 mq_timedreceive.2
 MLINKS+=mq_send.2 mq_timedsend.2
 MLINKS+=ntp_adjtime.2 ntp_gettime.2
 MLINKS+=open.2 openat.2
 MLINKS+=pathconf.2 fpathconf.2
 MLINKS+=pathconf.2 lpathconf.2
 MLINKS+=pdfork.2 pdgetpid.2\
 	pdfork.2 pdkill.2
 MLINKS+=pipe.2 pipe2.2
 MLINKS+=poll.2 ppoll.2
 MLINKS+=rctl_add_rule.2 rctl_get_limits.2 \
 	rctl_add_rule.2 rctl_get_racct.2 \
 	rctl_add_rule.2 rctl_get_rules.2 \
 	rctl_add_rule.2 rctl_remove_rule.2
 MLINKS+=read.2 pread.2 \
 	read.2 preadv.2 \
 	read.2 readv.2
 MLINKS+=readlink.2 readlinkat.2
 MLINKS+=recv.2 recvfrom.2 \
 	recv.2 recvmsg.2
 MLINKS+=rename.2 renameat.2
 MLINKS+=rtprio.2 rtprio_thread.2
 .if !defined(NO_P1003_1B)
 MLINKS+=sched_get_priority_max.2 sched_get_priority_min.2 \
 	sched_get_priority_max.2 sched_rr_get_interval.2
 MLINKS+=sched_setparam.2 sched_getparam.2
 MLINKS+=sched_setscheduler.2 sched_getscheduler.2
 .endif
 MLINKS+=select.2 FD_CLR.3 \
 	select.2 FD_ISSET.3 \
 	select.2 FD_SET.3 \
 	select.2 FD_ZERO.3
 MLINKS+=send.2 sendmsg.2 \
 	send.2 sendto.2
 MLINKS+=setpgid.2 setpgrp.2
 MLINKS+=setresuid.2 getresgid.2 \
 	setresuid.2 getresuid.2 \
 	setresuid.2 setresgid.2
 MLINKS+=setuid.2 setegid.2 \
 	setuid.2 seteuid.2 \
 	setuid.2 setgid.2
 MLINKS+=shmat.2 shmdt.2
 MLINKS+=shm_open.2 memfd_create.3 \
 	shm_open.2 shm_unlink.2 \
 	shm_open.2 shm_rename.2
 MLINKS+=sigwaitinfo.2 sigtimedwait.2
 MLINKS+=stat.2 fstat.2 \
 	stat.2 fstatat.2 \
 	stat.2 lstat.2
 MLINKS+=statfs.2 fstatfs.2
 MLINKS+=swapon.2 swapoff.2
 MLINKS+=symlink.2 symlinkat.2
 MLINKS+=syscall.2 __syscall.2
 MLINKS+=timer_settime.2 timer_getoverrun.2 \
 	timer_settime.2 timer_gettime.2
 MLINKS+=thr_kill.2 thr_kill2.2
 MLINKS+=truncate.2 ftruncate.2
 MLINKS+=unlink.2 unlinkat.2
 MLINKS+=unlink.2 funlinkat.2
 MLINKS+=utimensat.2 futimens.2
 MLINKS+=utimes.2 futimes.2 \
 	utimes.2 futimesat.2 \
 	utimes.2 lutimes.2
 MLINKS+=wait.2 wait3.2 \
 	wait.2 wait4.2 \
 	wait.2 waitpid.2 \
 	wait.2 waitid.2 \
 	wait.2 wait6.2
 MLINKS+=write.2 pwrite.2 \
 	write.2 pwritev.2 \
 	write.2 writev.2