diff --git a/include/pty.h b/include/pty.h
index 4979bb765f..93335fe3b6 100644
--- a/include/pty.h
+++ b/include/pty.h
@@ -3,7 +3,8 @@
 
 # ifndef _ISOMAC
 
-libutil_hidden_proto (openpty)
+libc_hidden_proto (forkpty)
+libc_hidden_proto (openpty)
 
 # endif /* !_ISOMAC */
 #endif
diff --git a/include/utmp.h b/include/utmp.h
index e8162bd08d..b7921e5fb8 100644
--- a/include/utmp.h
+++ b/include/utmp.h
@@ -29,7 +29,10 @@ extern int __getutline_r (const struct utmp *__line,
 			  struct utmp *__buffer, struct utmp **__result);
 libc_hidden_proto (__getutline_r)
 
-libutil_hidden_proto (login_tty)
+libc_hidden_proto (login)
+libc_hidden_proto (login_tty)
+libc_hidden_proto (logout)
+libc_hidden_proto (logwtmp)
 
 # endif /* !_ISOMAC */
 #endif
diff --git a/login/Makefile b/login/Makefile
index bc72e6e5b4..4e6b97734d 100644
--- a/login/Makefile
+++ b/login/Makefile
@@ -28,7 +28,7 @@ headers	:= utmp.h bits/utmp.h lastlog.h pty.h
 routines := getlogin getlogin_r setlogin getlogin_r_chk \
 	    getutent getutent_r getutid getutline getutid_r getutline_r \
 	    utmp_file utmpname updwtmp getpt grantpt unlockpt ptsname \
-	    ptsname_r_chk
+	    ptsname_r_chk login login_tty logout logwtmp openpty forkpty
 
 CFLAGS-grantpt.c += -DLIBEXECDIR='"$(libexecdir)"'
 
@@ -46,11 +46,18 @@ vpath %.c programs
 tests := tst-utmp tst-utmpx tst-grantpt tst-ptsname tst-getlogin tst-updwtmpx \
   tst-pututxline-lockfail tst-pututxline-cache
 
-# Build the -lutil library with these extra functions.
+ifeq ($(have-GLIBC_2.33),yes)
+# Empty compatibility library for old binaries.
 extra-libs      := libutil
 extra-libs-others := $(extra-libs)
-
-libutil-routines:= login login_tty logout logwtmp openpty forkpty
+libutil-routines := libutil-compat
+libutil-shared-only-routines := libutil-compat
+
+# Pretend that libutil.so is a linker script, so that the symbolic
+# link is not installed.
+install-lib-ldscripts = libutil.so
+$(inst_libdir)/libutil.so:
+endif # $(have-GLIBC_2.33)
 
 include ../Rules
 
diff --git a/login/Versions b/login/Versions
index 475fcf063f..9de9804cb0 100644
--- a/login/Versions
+++ b/login/Versions
@@ -16,6 +16,9 @@ libc {
 
     # u*
     updwtmp; utmpname;
+
+    # Symbols formerly in libutil.
+    forkpty; login; login_tty; logout; logwtmp; openpty;
   }
   GLIBC_2.1 {
     # e*
@@ -45,10 +48,14 @@ libc {
     __getlogin_r_chk;
     __ptsname_r_chk;
   }
+  GLIBC_2.34 {
+    # Symbols formerly in libutil.
+    forkpty; login; login_tty; logout; logwtmp; openpty;
+  }
 }
 
 libutil {
   GLIBC_2.0 {
-    forkpty; login; login_tty; logout; logwtmp; openpty;
+    __libutil_version_placeholder;
   }
 }
diff --git a/login/forkpty.c b/login/forkpty.c
index 1e91bd8198..79f9846ac4 100644
--- a/login/forkpty.c
+++ b/login/forkpty.c
@@ -21,34 +21,41 @@
 #include <unistd.h>
 #include <utmp.h>
 #include <pty.h>
+#include <shlib-compat.h>
 
 int
-forkpty (int *amaster, char *name, const struct termios *termp,
-	 const struct winsize *winp)
+__forkpty (int *pptmx, char *name, const struct termios *termp,
+	   const struct winsize *winp)
 {
-  int master, slave, pid;
+  int ptmx, terminal, pid;
 
-  if (openpty (&master, &slave, name, termp, winp) == -1)
+  if (openpty (&ptmx, &terminal, name, termp, winp) == -1)
     return -1;
 
-  switch (pid = fork ())
+  switch (pid = __fork ())
     {
     case -1:
-      close (master);
-      close (slave);
+      __close (ptmx);
+      __close (terminal);
       return -1;
     case 0:
       /* Child.  */
-      close (master);
-      if (login_tty (slave))
+      __close (ptmx);
+      if (login_tty (terminal))
 	_exit (1);
 
       return 0;
     default:
       /* Parent.  */
-      *amaster = master;
-      close (slave);
+      *pptmx = ptmx;
+      __close (terminal);
 
       return pid;
     }
 }
+versioned_symbol (libc, __forkpty, forkpty, GLIBC_2_34);
+libc_hidden_ver (__forkpty, forkpty)
+
+#if OTHER_SHLIB_COMPAT (libutil, GLIBC_2_0, GLIBC_2_34)
+compat_symbol (libutil, __forkpty, forkpty, GLIBC_2_0);
+#endif
diff --git a/login/libutil-compat.c b/login/libutil-compat.c
new file mode 100644
index 0000000000..249512a22e
--- /dev/null
+++ b/login/libutil-compat.c
@@ -0,0 +1,33 @@
+/* Placeholder compatibility symbols for libutil.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <shlib-compat.h>
+#include <sys/cdefs.h>
+
+/* This file is used to keep specific symbol versions occupied, so
+   that ld does not generate weak symbol version definitions.  */
+
+void
+attribute_compat_text_section
+__attribute_used__
+__libutil_version_placeholder_1 (void)
+{
+}
+
+compat_symbol (libutil, __libutil_version_placeholder_1,
+               __libutil_version_placeholder, GLIBC_2_0);
diff --git a/login/login.c b/login/login.c
index d280c13f1f..c95b98416a 100644
--- a/login/login.c
+++ b/login/login.c
@@ -23,7 +23,7 @@
 #include <unistd.h>
 #include <stdlib.h>
 #include <utmp.h>
-
+#include <shlib-compat.h>
 
 /* Return the result of ttyname in the buffer pointed to by TTY, which should
    be of length BUF_LEN.  If it is too long to fit in this buffer, a
@@ -41,7 +41,7 @@ tty_name (int fd, char **tty, size_t buf_len)
 
       if (buf_len)
 	{
-	  rv = ttyname_r (fd, buf, buf_len);
+	  rv = __ttyname_r (fd, buf, buf_len);
 
 	  if (rv != 0 || memchr (buf, '\0', buf_len))
 	    /* We either got an error, or we succeeded and the
@@ -78,7 +78,7 @@ tty_name (int fd, char **tty, size_t buf_len)
 }
 
 void
-login (const struct utmp *ut)
+__login (const struct utmp *ut)
 {
 #ifdef PATH_MAX
   char _tty[PATH_MAX + UT_LINESIZE];
@@ -114,16 +114,16 @@ login (const struct utmp *ut)
       strncpy (copy.ut_line, ttyp, UT_LINESIZE);
 
       /* Tell that we want to use the UTMP file.  */
-      if (utmpname (_PATH_UTMP) == 0)
+      if (__utmpname (_PATH_UTMP) == 0)
 	{
 	  /* Open UTMP file.  */
-	  setutent ();
+	  __setutent ();
 
 	  /* Write the entry.  */
-	  pututline (&copy);
+	  __pututline (&copy);
 
 	  /* Close UTMP file.  */
-	  endutent ();
+	  __endutent ();
 	}
 
       if (tty != _tty)
@@ -135,5 +135,11 @@ login (const struct utmp *ut)
     strncpy (copy.ut_line, "???", UT_LINESIZE);
 
   /* Update the WTMP file.  Here we have to add a new entry.  */
-  updwtmp (_PATH_WTMP, &copy);
+  __updwtmp (_PATH_WTMP, &copy);
 }
+versioned_symbol (libc, __login, login, GLIBC_2_34);
+libc_hidden_ver (__login, login)
+
+#if OTHER_SHLIB_COMPAT (libutil, GLIBC_2_0, GLIBC_2_34)
+compat_symbol (libutil, __login, login, GLIBC_2_0);
+#endif
diff --git a/login/login_tty.c b/login/login_tty.c
index a94f5cb861..79661c0756 100644
--- a/login/login_tty.c
+++ b/login/login_tty.c
@@ -37,13 +37,14 @@ static char sccsid[] = "@(#)login_tty.c	8.1 (Berkeley) 6/4/93";
 #include <unistd.h>
 #include <fcntl.h>
 #include <utmp.h>
+#include <shlib-compat.h>
 
 int
-login_tty (int fd)
+__login_tty (int fd)
 {
-	(void) setsid();
+	(void) __setsid();
 #ifdef TIOCSCTTY
-	if (ioctl(fd, TIOCSCTTY, (char *)NULL) == -1)
+	if (__ioctl(fd, TIOCSCTTY, (char *)NULL) == -1)
 		return (-1);
 #else
 	{
@@ -53,24 +54,29 @@ login_tty (int fd)
 	  if (fdname)
 	    {
 	      if (fd != 0)
-		(void) close (0);
+		(void) __close (0);
 	      if (fd != 1)
-		(void) close (1);
+		(void) __close (1);
 	      if (fd != 2)
-		(void) close (2);
-	      newfd = open (fdname, O_RDWR);
-	      (void) close (newfd);
+		(void) __close (2);
+	      newfd = __open64 (fdname, O_RDWR);
+	      (void) __close (newfd);
 	    }
 	}
 #endif
-	while (dup2(fd, 0) == -1 && errno == EBUSY)
+	while (__dup2(fd, 0) == -1 && errno == EBUSY)
 	  ;
-	while (dup2(fd, 1) == -1 && errno == EBUSY)
+	while (__dup2(fd, 1) == -1 && errno == EBUSY)
 	  ;
-	while (dup2(fd, 2) == -1 && errno == EBUSY)
+	while (__dup2(fd, 2) == -1 && errno == EBUSY)
 	  ;
 	if (fd > 2)
-		(void) close(fd);
+		(void) __close(fd);
 	return (0);
 }
-libutil_hidden_def (login_tty)
+versioned_symbol (libc, __login_tty, login_tty, GLIBC_2_34);
+libc_hidden_ver (__login_tty, login_tty)
+
+#if OTHER_SHLIB_COMPAT (libutil, GLIBC_2_0, GLIBC_2_34)
+compat_symbol (libutil, __login_tty, login_tty, GLIBC_2_0);
+#endif
diff --git a/login/logout.c b/login/logout.c
index 3def97fc83..bf78e0915e 100644
--- a/login/logout.c
+++ b/login/logout.c
@@ -21,27 +21,28 @@
 #include <utmp.h>
 #include <time.h>
 #include <sys/time.h>
+#include <shlib-compat.h>
 
 int
-logout (const char *line)
+__logout (const char *line)
 {
   struct utmp tmp, utbuf;
   struct utmp *ut;
   int result = 0;
 
   /* Tell that we want to use the UTMP file.  */
-  if (utmpname (_PATH_UTMP) == -1)
+  if (__utmpname (_PATH_UTMP) == -1)
     return 0;
 
   /* Open UTMP file.  */
-  setutent ();
+  __setutent ();
 
   /* Fill in search information.  */
   tmp.ut_type = USER_PROCESS;
   strncpy (tmp.ut_line, line, sizeof tmp.ut_line);
 
   /* Read the record.  */
-  if (getutline_r (&tmp, &utbuf, &ut) >= 0)
+  if (__getutline_r (&tmp, &utbuf, &ut) >= 0)
     {
       /* Clear information about who & from where.  */
       memset (ut->ut_name, '\0', sizeof ut->ut_name);
@@ -52,12 +53,18 @@ logout (const char *line)
       TIMESPEC_TO_TIMEVAL (&ut->ut_tv, &ts);
       ut->ut_type = DEAD_PROCESS;
 
-      if (pututline (ut) != NULL)
+      if (__pututline (ut) != NULL)
 	result = 1;
     }
 
   /* Close UTMP file.  */
-  endutent ();
+  __endutent ();
 
   return result;
 }
+versioned_symbol (libc, __logout, logout, GLIBC_2_34);
+libc_hidden_ver (__logout, logout)
+
+#if OTHER_SHLIB_COMPAT (libutil, GLIBC_2_0, GLIBC_2_34)
+compat_symbol (libutil, __logout, logout, GLIBC_2_0);
+#endif
diff --git a/login/logwtmp.c b/login/logwtmp.c
index 1a7c46e9c0..8f3e8faed5 100644
--- a/login/logwtmp.c
+++ b/login/logwtmp.c
@@ -22,10 +22,10 @@
 #include <unistd.h>
 #include <utmp.h>
 #include <struct___timespec64.h>
-
+#include <shlib-compat.h>
 
 void
-logwtmp (const char *line, const char *name, const char *host)
+__logwtmp (const char *line, const char *name, const char *host)
 {
   struct utmp ut;
 
@@ -41,5 +41,11 @@ logwtmp (const char *line, const char *name, const char *host)
   __clock_gettime64 (CLOCK_REALTIME, &ts);
   TIMESPEC_TO_TIMEVAL (&ut.ut_tv, &ts);
 
-  updwtmp (_PATH_WTMP, &ut);
+  __updwtmp (_PATH_WTMP, &ut);
 }
+versioned_symbol (libc, __logwtmp, logwtmp, GLIBC_2_34);
+libc_hidden_ver (__logwtmp, logwtmp)
+
+#if OTHER_SHLIB_COMPAT (libutil, GLIBC_2_0, GLIBC_2_34)
+compat_symbol (libutil, __logwtmp, logwtmp, GLIBC_2_0);
+#endif
diff --git a/login/openpty.c b/login/openpty.c
index 22845b64f5..15277573ec 100644
--- a/login/openpty.c
+++ b/login/openpty.c
@@ -25,7 +25,7 @@
 #include <termios.h>
 #include <unistd.h>
 #include <sys/types.h>
-
+#include <shlib-compat.h>
 
 /* Return the result of ptsname_r in the buffer pointed to by PTS,
    which should be of length BUF_LEN.  If it is too long to fit in
@@ -43,7 +43,7 @@ pts_name (int fd, char **pts, size_t buf_len)
 
       if (buf_len)
 	{
-	  rv = ptsname_r (fd, buf, buf_len);
+	  rv = __ptsname_r (fd, buf, buf_len);
 
 	  if (rv != 0 || memchr (buf, '\0', buf_len))
 	    /* We either got an error, or we succeeded and the
@@ -79,12 +79,12 @@ pts_name (int fd, char **pts, size_t buf_len)
   return rv;
 }
 
-/* Create pseudo tty master slave pair and set terminal attributes
+/* Create pseudo tty multiplexer/terminal pair and set terminal attributes
    according to TERMP and WINP.  Return handles for both ends in
-   AMASTER and ASLAVE, and return the name of the slave end in NAME.  */
+   *PPTMX and *PTERMINAL, and return the name of the terminal end in NAME.  */
 int
-openpty (int *amaster, int *aslave, char *name,
-	 const struct termios *termp, const struct winsize *winp)
+__openpty (int *pptmx, int *pterminal, char *name,
+	   const struct termios *termp, const struct winsize *winp)
 {
 #ifdef PATH_MAX
   char _buf[PATH_MAX];
@@ -92,51 +92,51 @@ openpty (int *amaster, int *aslave, char *name,
   char _buf[512];
 #endif
   char *buf = _buf;
-  int master, ret = -1, slave = -1;
+  int ptmx, ret = -1, terminal = -1;
 
   *buf = '\0';
 
-  master = getpt ();
-  if (master == -1)
+  ptmx = __getpt ();
+  if (ptmx == -1)
     return -1;
 
-  if (grantpt (master))
+  if (grantpt (ptmx))
     goto on_error;
 
-  if (unlockpt (master))
+  if (unlockpt (ptmx))
     goto on_error;
 
 #ifdef TIOCGPTPEER
-  /* Try to allocate slave fd solely based on master fd first. */
-  slave = ioctl (master, TIOCGPTPEER, O_RDWR | O_NOCTTY);
+  /* Try to allocate terminal fd solely based on PTMX fd first. */
+  terminal = __ioctl (ptmx, TIOCGPTPEER, O_RDWR | O_NOCTTY);
 #endif
-  if (slave == -1)
+  if (terminal == -1)
     {
-      /* Fallback to path-based slave fd allocation in case kernel doesn't
+      /* Fallback to path-based terminal fd allocation in case kernel doesn't
        * support TIOCGPTPEER.
        */
-      if (pts_name (master, &buf, sizeof (_buf)))
+      if (pts_name (ptmx, &buf, sizeof (_buf)))
         goto on_error;
 
-      slave = open (buf, O_RDWR | O_NOCTTY);
-      if (slave == -1)
+      terminal = __open64 (buf, O_RDWR | O_NOCTTY);
+      if (terminal == -1)
         goto on_error;
     }
 
   /* XXX Should we ignore errors here?  */
   if (termp)
-    tcsetattr (slave, TCSAFLUSH, termp);
+    tcsetattr (terminal, TCSAFLUSH, termp);
 #ifdef TIOCSWINSZ
   if (winp)
-    ioctl (slave, TIOCSWINSZ, winp);
+    __ioctl (terminal, TIOCSWINSZ, winp);
 #endif
 
-  *amaster = master;
-  *aslave = slave;
+  *pptmx = ptmx;
+  *pterminal = terminal;
   if (name != NULL)
     {
       if (*buf == '\0')
-        if (pts_name (master, &buf, sizeof (_buf)))
+        if (pts_name (ptmx, &buf, sizeof (_buf)))
           goto on_error;
 
       strcpy (name, buf);
@@ -146,10 +146,10 @@ openpty (int *amaster, int *aslave, char *name,
 
  on_error:
   if (ret == -1) {
-    close (master);
+    __close (ptmx);
 
-    if (slave != -1)
-      close (slave);
+    if (terminal != -1)
+      __close (terminal);
   }
 
   if (buf != _buf)
@@ -157,4 +157,9 @@ openpty (int *amaster, int *aslave, char *name,
 
   return ret;
 }
-libutil_hidden_def (openpty)
+versioned_symbol (libc, __openpty, openpty, GLIBC_2_34);
+libc_hidden_ver (__openpty, openpty)
+
+#if OTHER_SHLIB_COMPAT (libutil, GLIBC_2_0, GLIBC_2_34)
+compat_symbol (libutil, __openpty, openpty, GLIBC_2_0);
+#endif
diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
index c3232ba32e..23cb784f0d 100644
--- a/sysdeps/mach/hurd/i386/libc.abilist
+++ b/sysdeps/mach/hurd/i386/libc.abilist
@@ -863,6 +863,7 @@ GLIBC_2.2.6 fopen64 F
 GLIBC_2.2.6 fopencookie F
 GLIBC_2.2.6 fopenport F
 GLIBC_2.2.6 fork F
+GLIBC_2.2.6 forkpty F
 GLIBC_2.2.6 fpathconf F
 GLIBC_2.2.6 fprintf F
 GLIBC_2.2.6 fputc F
@@ -1215,6 +1216,10 @@ GLIBC_2.2.6 localtime_r F
 GLIBC_2.2.6 lockf F
 GLIBC_2.2.6 lockf64 F
 GLIBC_2.2.6 locs D 0x4
+GLIBC_2.2.6 login F
+GLIBC_2.2.6 login_tty F
+GLIBC_2.2.6 logout F
+GLIBC_2.2.6 logwtmp F
 GLIBC_2.2.6 longjmp F
 GLIBC_2.2.6 lrand48 F
 GLIBC_2.2.6 lrand48_r F
@@ -1337,6 +1342,7 @@ GLIBC_2.2.6 open_memstream F
 GLIBC_2.2.6 opendir F
 GLIBC_2.2.6 openlog F
 GLIBC_2.2.6 openport F
+GLIBC_2.2.6 openpty F
 GLIBC_2.2.6 optarg D 0x4
 GLIBC_2.2.6 opterr D 0x4
 GLIBC_2.2.6 optind D 0x4
@@ -2228,6 +2234,12 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
+GLIBC_2.34 openpty F
 GLIBC_2.34 shm_open F
 GLIBC_2.34 shm_unlink F
 GLIBC_2.34 timespec_getres F
diff --git a/sysdeps/mach/hurd/i386/libutil.abilist b/sysdeps/mach/hurd/i386/libutil.abilist
index 1dd59e0afb..0196d40e56 100644
--- a/sysdeps/mach/hurd/i386/libutil.abilist
+++ b/sysdeps/mach/hurd/i386/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.2.6 forkpty F
-GLIBC_2.2.6 login F
-GLIBC_2.2.6 login_tty F
-GLIBC_2.2.6 logout F
-GLIBC_2.2.6 logwtmp F
-GLIBC_2.2.6 openpty F
+GLIBC_2.2.6 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 42e240e284..b1326d745e 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -862,6 +862,7 @@ GLIBC_2.17 fopen F
 GLIBC_2.17 fopen64 F
 GLIBC_2.17 fopencookie F
 GLIBC_2.17 fork F
+GLIBC_2.17 forkpty F
 GLIBC_2.17 fpathconf F
 GLIBC_2.17 fprintf F
 GLIBC_2.17 fputc F
@@ -1267,6 +1268,10 @@ GLIBC_2.17 localtime_r F
 GLIBC_2.17 lockf F
 GLIBC_2.17 lockf64 F
 GLIBC_2.17 locs D 0x8
+GLIBC_2.17 login F
+GLIBC_2.17 login_tty F
+GLIBC_2.17 logout F
+GLIBC_2.17 logwtmp F
 GLIBC_2.17 longjmp F
 GLIBC_2.17 lrand48 F
 GLIBC_2.17 lrand48_r F
@@ -1387,6 +1392,7 @@ GLIBC_2.17 openat F
 GLIBC_2.17 openat64 F
 GLIBC_2.17 opendir F
 GLIBC_2.17 openlog F
+GLIBC_2.17 openpty F
 GLIBC_2.17 optarg D 0x8
 GLIBC_2.17 opterr D 0x4
 GLIBC_2.17 optind D 0x4
@@ -2365,12 +2371,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libutil.abilist b/sysdeps/unix/sysv/linux/aarch64/libutil.abilist
index 99889de22e..3a2da66d2c 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.17 forkpty F
-GLIBC_2.17 login F
-GLIBC_2.17 login_tty F
-GLIBC_2.17 logout F
-GLIBC_2.17 logwtmp F
-GLIBC_2.17 openpty F
+GLIBC_2.17 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index fad54555dc..9ee02a0ea4 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -507,6 +507,7 @@ GLIBC_2.0 fnmatch F
 GLIBC_2.0 fopen F
 GLIBC_2.0 fopencookie F
 GLIBC_2.0 fork F
+GLIBC_2.0 forkpty F
 GLIBC_2.0 fpathconf F
 GLIBC_2.0 fprintf F
 GLIBC_2.0 fputc F
@@ -771,6 +772,10 @@ GLIBC_2.0 localtime F
 GLIBC_2.0 localtime_r F
 GLIBC_2.0 lockf F
 GLIBC_2.0 locs D 0x8
+GLIBC_2.0 login F
+GLIBC_2.0 login_tty F
+GLIBC_2.0 logout F
+GLIBC_2.0 logwtmp F
 GLIBC_2.0 longjmp F
 GLIBC_2.0 lrand48 F
 GLIBC_2.0 lrand48_r F
@@ -851,6 +856,7 @@ GLIBC_2.0 open F
 GLIBC_2.0 open_memstream F
 GLIBC_2.0 opendir F
 GLIBC_2.0 openlog F
+GLIBC_2.0 openpty F
 GLIBC_2.0 optarg D 0x8
 GLIBC_2.0 opterr D 0x4
 GLIBC_2.0 optind D 0x4
@@ -2458,12 +2464,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/alpha/libutil.abilist b/sysdeps/unix/sysv/linux/alpha/libutil.abilist
index aa2d35b323..3d51141483 100644
--- a/sysdeps/unix/sysv/linux/alpha/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.0 forkpty F
-GLIBC_2.0 login F
-GLIBC_2.0 login_tty F
-GLIBC_2.0 logout F
-GLIBC_2.0 logwtmp F
-GLIBC_2.0 openpty F
+GLIBC_2.0 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 907716ec39..350f0b80aa 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -806,6 +806,7 @@ GLIBC_2.32 fopen F
 GLIBC_2.32 fopen64 F
 GLIBC_2.32 fopencookie F
 GLIBC_2.32 fork F
+GLIBC_2.32 forkpty F
 GLIBC_2.32 fpathconf F
 GLIBC_2.32 fprintf F
 GLIBC_2.32 fputc F
@@ -1198,6 +1199,10 @@ GLIBC_2.32 localtime F
 GLIBC_2.32 localtime_r F
 GLIBC_2.32 lockf F
 GLIBC_2.32 lockf64 F
+GLIBC_2.32 login F
+GLIBC_2.32 login_tty F
+GLIBC_2.32 logout F
+GLIBC_2.32 logwtmp F
 GLIBC_2.32 longjmp F
 GLIBC_2.32 lrand48 F
 GLIBC_2.32 lrand48_r F
@@ -1321,6 +1326,7 @@ GLIBC_2.32 openat F
 GLIBC_2.32 openat64 F
 GLIBC_2.32 opendir F
 GLIBC_2.32 openlog F
+GLIBC_2.32 openpty F
 GLIBC_2.32 optarg D 0x4
 GLIBC_2.32 opterr D 0x4
 GLIBC_2.32 optind D 0x4
@@ -2124,12 +2130,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/arc/libutil.abilist b/sysdeps/unix/sysv/linux/arc/libutil.abilist
index 61f73bc34e..70c9ed96e5 100644
--- a/sysdeps/unix/sysv/linux/arc/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.32 forkpty F
-GLIBC_2.32 login F
-GLIBC_2.32 login_tty F
-GLIBC_2.32 logout F
-GLIBC_2.32 logwtmp F
-GLIBC_2.32 openpty F
+GLIBC_2.32 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 50f987a429..8604edf28b 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -295,12 +295,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
@@ -1236,6 +1242,7 @@ GLIBC_2.4 fopen F
 GLIBC_2.4 fopen64 F
 GLIBC_2.4 fopencookie F
 GLIBC_2.4 fork F
+GLIBC_2.4 forkpty F
 GLIBC_2.4 fpathconf F
 GLIBC_2.4 fprintf F
 GLIBC_2.4 fputc F
@@ -1626,6 +1633,10 @@ GLIBC_2.4 localtime_r F
 GLIBC_2.4 lockf F
 GLIBC_2.4 lockf64 F
 GLIBC_2.4 locs D 0x4
+GLIBC_2.4 login F
+GLIBC_2.4 login_tty F
+GLIBC_2.4 logout F
+GLIBC_2.4 logwtmp F
 GLIBC_2.4 longjmp F
 GLIBC_2.4 lrand48 F
 GLIBC_2.4 lrand48_r F
@@ -1735,6 +1746,7 @@ GLIBC_2.4 openat F
 GLIBC_2.4 openat64 F
 GLIBC_2.4 opendir F
 GLIBC_2.4 openlog F
+GLIBC_2.4 openpty F
 GLIBC_2.4 optarg D 0x4
 GLIBC_2.4 opterr D 0x4
 GLIBC_2.4 optind D 0x4
diff --git a/sysdeps/unix/sysv/linux/arm/be/libutil.abilist b/sysdeps/unix/sysv/linux/arm/be/libutil.abilist
index cc1420e68c..3e4c25229d 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.4 forkpty F
-GLIBC_2.4 login F
-GLIBC_2.4 login_tty F
-GLIBC_2.4 logout F
-GLIBC_2.4 logwtmp F
-GLIBC_2.4 openpty F
+GLIBC_2.4 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index bf9038af84..b2f542e69b 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -292,12 +292,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
@@ -1233,6 +1239,7 @@ GLIBC_2.4 fopen F
 GLIBC_2.4 fopen64 F
 GLIBC_2.4 fopencookie F
 GLIBC_2.4 fork F
+GLIBC_2.4 forkpty F
 GLIBC_2.4 fpathconf F
 GLIBC_2.4 fprintf F
 GLIBC_2.4 fputc F
@@ -1623,6 +1630,10 @@ GLIBC_2.4 localtime_r F
 GLIBC_2.4 lockf F
 GLIBC_2.4 lockf64 F
 GLIBC_2.4 locs D 0x4
+GLIBC_2.4 login F
+GLIBC_2.4 login_tty F
+GLIBC_2.4 logout F
+GLIBC_2.4 logwtmp F
 GLIBC_2.4 longjmp F
 GLIBC_2.4 lrand48 F
 GLIBC_2.4 lrand48_r F
@@ -1732,6 +1743,7 @@ GLIBC_2.4 openat F
 GLIBC_2.4 openat64 F
 GLIBC_2.4 opendir F
 GLIBC_2.4 openlog F
+GLIBC_2.4 openpty F
 GLIBC_2.4 optarg D 0x4
 GLIBC_2.4 opterr D 0x4
 GLIBC_2.4 optind D 0x4
diff --git a/sysdeps/unix/sysv/linux/arm/le/libutil.abilist b/sysdeps/unix/sysv/linux/arm/le/libutil.abilist
index cc1420e68c..3e4c25229d 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.4 forkpty F
-GLIBC_2.4 login F
-GLIBC_2.4 login_tty F
-GLIBC_2.4 logout F
-GLIBC_2.4 logwtmp F
-GLIBC_2.4 openpty F
+GLIBC_2.4 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index afb91f6f43..33de8290c5 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -845,6 +845,7 @@ GLIBC_2.29 fopen F
 GLIBC_2.29 fopen64 F
 GLIBC_2.29 fopencookie F
 GLIBC_2.29 fork F
+GLIBC_2.29 forkpty F
 GLIBC_2.29 fpathconf F
 GLIBC_2.29 fprintf F
 GLIBC_2.29 fputc F
@@ -1253,6 +1254,10 @@ GLIBC_2.29 localtime F
 GLIBC_2.29 localtime_r F
 GLIBC_2.29 lockf F
 GLIBC_2.29 lockf64 F
+GLIBC_2.29 login F
+GLIBC_2.29 login_tty F
+GLIBC_2.29 logout F
+GLIBC_2.29 logwtmp F
 GLIBC_2.29 longjmp F
 GLIBC_2.29 lrand48 F
 GLIBC_2.29 lrand48_r F
@@ -1378,6 +1383,7 @@ GLIBC_2.29 openat F
 GLIBC_2.29 openat64 F
 GLIBC_2.29 opendir F
 GLIBC_2.29 openlog F
+GLIBC_2.29 openpty F
 GLIBC_2.29 optarg D 0x4
 GLIBC_2.29 opterr D 0x4
 GLIBC_2.29 optind D 0x4
@@ -2384,12 +2390,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/csky/libutil.abilist b/sysdeps/unix/sysv/linux/csky/libutil.abilist
index cbd11999a4..6b49490071 100644
--- a/sysdeps/unix/sysv/linux/csky/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.29 forkpty F
-GLIBC_2.29 login F
-GLIBC_2.29 login_tty F
-GLIBC_2.29 logout F
-GLIBC_2.29 logwtmp F
-GLIBC_2.29 openpty F
+GLIBC_2.29 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 125f8a269a..2082ca8a3b 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -3,6 +3,12 @@ GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dlopen F
 GLIBC_2.0 dlsym F
+GLIBC_2.0 forkpty F
+GLIBC_2.0 login F
+GLIBC_2.0 login_tty F
+GLIBC_2.0 logout F
+GLIBC_2.0 logwtmp F
+GLIBC_2.0 openpty F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2338,12 +2344,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/hppa/libutil.abilist b/sysdeps/unix/sysv/linux/hppa/libutil.abilist
index aa2d35b323..3d51141483 100644
--- a/sysdeps/unix/sysv/linux/hppa/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.0 forkpty F
-GLIBC_2.0 login F
-GLIBC_2.0 login_tty F
-GLIBC_2.0 logout F
-GLIBC_2.0 logwtmp F
-GLIBC_2.0 openpty F
+GLIBC_2.0 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 517753bdd1..72444a9938 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -493,6 +493,7 @@ GLIBC_2.0 fnmatch F
 GLIBC_2.0 fopen F
 GLIBC_2.0 fopencookie F
 GLIBC_2.0 fork F
+GLIBC_2.0 forkpty F
 GLIBC_2.0 fpathconf F
 GLIBC_2.0 fprintf F
 GLIBC_2.0 fputc F
@@ -753,6 +754,10 @@ GLIBC_2.0 localtime F
 GLIBC_2.0 localtime_r F
 GLIBC_2.0 lockf F
 GLIBC_2.0 locs D 0x4
+GLIBC_2.0 login F
+GLIBC_2.0 login_tty F
+GLIBC_2.0 logout F
+GLIBC_2.0 logwtmp F
 GLIBC_2.0 longjmp F
 GLIBC_2.0 lrand48 F
 GLIBC_2.0 lrand48_r F
@@ -833,6 +838,7 @@ GLIBC_2.0 open F
 GLIBC_2.0 open_memstream F
 GLIBC_2.0 opendir F
 GLIBC_2.0 openlog F
+GLIBC_2.0 openpty F
 GLIBC_2.0 optarg D 0x4
 GLIBC_2.0 opterr D 0x4
 GLIBC_2.0 optind D 0x4
@@ -2522,12 +2528,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/i386/libutil.abilist b/sysdeps/unix/sysv/linux/i386/libutil.abilist
index aa2d35b323..3d51141483 100644
--- a/sysdeps/unix/sysv/linux/i386/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.0 forkpty F
-GLIBC_2.0 login F
-GLIBC_2.0 login_tty F
-GLIBC_2.0 logout F
-GLIBC_2.0 logwtmp F
-GLIBC_2.0 openpty F
+GLIBC_2.0 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 23d0928360..a72a5284d2 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -3,6 +3,12 @@ GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dlopen F
 GLIBC_2.0 dlsym F
+GLIBC_2.0 forkpty F
+GLIBC_2.0 login F
+GLIBC_2.0 login_tty F
+GLIBC_2.0 logout F
+GLIBC_2.0 logwtmp F
+GLIBC_2.0 openpty F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2298,12 +2304,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/ia64/libutil.abilist b/sysdeps/unix/sysv/linux/ia64/libutil.abilist
index aa2d35b323..3d51141483 100644
--- a/sysdeps/unix/sysv/linux/ia64/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.0 forkpty F
-GLIBC_2.0 login F
-GLIBC_2.0 login_tty F
-GLIBC_2.0 logout F
-GLIBC_2.0 logwtmp F
-GLIBC_2.0 openpty F
+GLIBC_2.0 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index dd5fb50b18..2e0f9afcc4 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -296,12 +296,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
@@ -1225,6 +1231,7 @@ GLIBC_2.4 fopen F
 GLIBC_2.4 fopen64 F
 GLIBC_2.4 fopencookie F
 GLIBC_2.4 fork F
+GLIBC_2.4 forkpty F
 GLIBC_2.4 fpathconf F
 GLIBC_2.4 fprintf F
 GLIBC_2.4 fputc F
@@ -1610,6 +1617,10 @@ GLIBC_2.4 localtime_r F
 GLIBC_2.4 lockf F
 GLIBC_2.4 lockf64 F
 GLIBC_2.4 locs D 0x4
+GLIBC_2.4 login F
+GLIBC_2.4 login_tty F
+GLIBC_2.4 logout F
+GLIBC_2.4 logwtmp F
 GLIBC_2.4 longjmp F
 GLIBC_2.4 lrand48 F
 GLIBC_2.4 lrand48_r F
@@ -1719,6 +1730,7 @@ GLIBC_2.4 openat F
 GLIBC_2.4 openat64 F
 GLIBC_2.4 opendir F
 GLIBC_2.4 openlog F
+GLIBC_2.4 openpty F
 GLIBC_2.4 optarg D 0x4
 GLIBC_2.4 opterr D 0x4
 GLIBC_2.4 optind D 0x4
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libutil.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libutil.abilist
index cc1420e68c..3e4c25229d 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.4 forkpty F
-GLIBC_2.4 login F
-GLIBC_2.4 login_tty F
-GLIBC_2.4 logout F
-GLIBC_2.4 logwtmp F
-GLIBC_2.4 openpty F
+GLIBC_2.4 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index cb1d553361..34030b4c17 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -494,6 +494,7 @@ GLIBC_2.0 fnmatch F
 GLIBC_2.0 fopen F
 GLIBC_2.0 fopencookie F
 GLIBC_2.0 fork F
+GLIBC_2.0 forkpty F
 GLIBC_2.0 fpathconf F
 GLIBC_2.0 fprintf F
 GLIBC_2.0 fputc F
@@ -752,6 +753,10 @@ GLIBC_2.0 localtime F
 GLIBC_2.0 localtime_r F
 GLIBC_2.0 lockf F
 GLIBC_2.0 locs D 0x4
+GLIBC_2.0 login F
+GLIBC_2.0 login_tty F
+GLIBC_2.0 logout F
+GLIBC_2.0 logwtmp F
 GLIBC_2.0 longjmp F
 GLIBC_2.0 lrand48 F
 GLIBC_2.0 lrand48_r F
@@ -832,6 +837,7 @@ GLIBC_2.0 open F
 GLIBC_2.0 open_memstream F
 GLIBC_2.0 opendir F
 GLIBC_2.0 openlog F
+GLIBC_2.0 openpty F
 GLIBC_2.0 optarg D 0x4
 GLIBC_2.0 opterr D 0x4
 GLIBC_2.0 optind D 0x4
@@ -2465,12 +2471,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libutil.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libutil.abilist
index aa2d35b323..3d51141483 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.0 forkpty F
-GLIBC_2.0 login F
-GLIBC_2.0 login_tty F
-GLIBC_2.0 logout F
-GLIBC_2.0 logwtmp F
-GLIBC_2.0 openpty F
+GLIBC_2.0 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 6a20a6fdf2..c1c7e89bf0 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -864,6 +864,7 @@ GLIBC_2.18 fopen F
 GLIBC_2.18 fopen64 F
 GLIBC_2.18 fopencookie F
 GLIBC_2.18 fork F
+GLIBC_2.18 forkpty F
 GLIBC_2.18 fpathconf F
 GLIBC_2.18 fprintf F
 GLIBC_2.18 fputc F
@@ -1269,6 +1270,10 @@ GLIBC_2.18 localtime_r F
 GLIBC_2.18 lockf F
 GLIBC_2.18 lockf64 F
 GLIBC_2.18 locs D 0x4
+GLIBC_2.18 login F
+GLIBC_2.18 login_tty F
+GLIBC_2.18 logout F
+GLIBC_2.18 logwtmp F
 GLIBC_2.18 longjmp F
 GLIBC_2.18 lrand48 F
 GLIBC_2.18 lrand48_r F
@@ -1389,6 +1394,7 @@ GLIBC_2.18 openat F
 GLIBC_2.18 openat64 F
 GLIBC_2.18 opendir F
 GLIBC_2.18 openlog F
+GLIBC_2.18 openpty F
 GLIBC_2.18 optarg D 0x4
 GLIBC_2.18 opterr D 0x4
 GLIBC_2.18 optind D 0x4
@@ -2435,12 +2441,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libutil.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libutil.abilist
index 0da0a40c22..44e72d5349 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.18 forkpty F
-GLIBC_2.18 login F
-GLIBC_2.18 login_tty F
-GLIBC_2.18 logout F
-GLIBC_2.18 logwtmp F
-GLIBC_2.18 openpty F
+GLIBC_2.18 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 4c21cbb64d..f53ca5c4a3 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -864,6 +864,7 @@ GLIBC_2.18 fopen F
 GLIBC_2.18 fopen64 F
 GLIBC_2.18 fopencookie F
 GLIBC_2.18 fork F
+GLIBC_2.18 forkpty F
 GLIBC_2.18 fpathconf F
 GLIBC_2.18 fprintf F
 GLIBC_2.18 fputc F
@@ -1269,6 +1270,10 @@ GLIBC_2.18 localtime_r F
 GLIBC_2.18 lockf F
 GLIBC_2.18 lockf64 F
 GLIBC_2.18 locs D 0x4
+GLIBC_2.18 login F
+GLIBC_2.18 login_tty F
+GLIBC_2.18 logout F
+GLIBC_2.18 logwtmp F
 GLIBC_2.18 longjmp F
 GLIBC_2.18 lrand48 F
 GLIBC_2.18 lrand48_r F
@@ -1389,6 +1394,7 @@ GLIBC_2.18 openat F
 GLIBC_2.18 openat64 F
 GLIBC_2.18 opendir F
 GLIBC_2.18 openlog F
+GLIBC_2.18 openpty F
 GLIBC_2.18 optarg D 0x4
 GLIBC_2.18 opterr D 0x4
 GLIBC_2.18 optind D 0x4
@@ -2432,12 +2438,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libutil.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libutil.abilist
index 0da0a40c22..44e72d5349 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.18 forkpty F
-GLIBC_2.18 login F
-GLIBC_2.18 login_tty F
-GLIBC_2.18 logout F
-GLIBC_2.18 logwtmp F
-GLIBC_2.18 openpty F
+GLIBC_2.18 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index f83ba2f780..9555b4a571 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -492,6 +492,7 @@ GLIBC_2.0 fnmatch F
 GLIBC_2.0 fopen F
 GLIBC_2.0 fopencookie F
 GLIBC_2.0 fork F
+GLIBC_2.0 forkpty F
 GLIBC_2.0 fpathconf F
 GLIBC_2.0 fprintf F
 GLIBC_2.0 fputc F
@@ -750,6 +751,10 @@ GLIBC_2.0 localtime F
 GLIBC_2.0 localtime_r F
 GLIBC_2.0 lockf F
 GLIBC_2.0 locs D 0x4
+GLIBC_2.0 login F
+GLIBC_2.0 login_tty F
+GLIBC_2.0 logout F
+GLIBC_2.0 logwtmp F
 GLIBC_2.0 longjmp F
 GLIBC_2.0 lrand48 F
 GLIBC_2.0 lrand48_r F
@@ -829,6 +834,7 @@ GLIBC_2.0 open F
 GLIBC_2.0 open_memstream F
 GLIBC_2.0 opendir F
 GLIBC_2.0 openlog F
+GLIBC_2.0 openpty F
 GLIBC_2.0 optarg D 0x4
 GLIBC_2.0 opterr D 0x4
 GLIBC_2.0 optind D 0x4
@@ -2430,12 +2436,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libutil.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libutil.abilist
index aa2d35b323..3d51141483 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.0 forkpty F
-GLIBC_2.0 login F
-GLIBC_2.0 login_tty F
-GLIBC_2.0 logout F
-GLIBC_2.0 logwtmp F
-GLIBC_2.0 openpty F
+GLIBC_2.0 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 347bbddb94..23e08d0b8e 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -492,6 +492,7 @@ GLIBC_2.0 fnmatch F
 GLIBC_2.0 fopen F
 GLIBC_2.0 fopencookie F
 GLIBC_2.0 fork F
+GLIBC_2.0 forkpty F
 GLIBC_2.0 fpathconf F
 GLIBC_2.0 fprintf F
 GLIBC_2.0 fputc F
@@ -750,6 +751,10 @@ GLIBC_2.0 localtime F
 GLIBC_2.0 localtime_r F
 GLIBC_2.0 lockf F
 GLIBC_2.0 locs D 0x4
+GLIBC_2.0 login F
+GLIBC_2.0 login_tty F
+GLIBC_2.0 logout F
+GLIBC_2.0 logwtmp F
 GLIBC_2.0 longjmp F
 GLIBC_2.0 lrand48 F
 GLIBC_2.0 lrand48_r F
@@ -829,6 +834,7 @@ GLIBC_2.0 open F
 GLIBC_2.0 open_memstream F
 GLIBC_2.0 opendir F
 GLIBC_2.0 openlog F
+GLIBC_2.0 openpty F
 GLIBC_2.0 optarg D 0x4
 GLIBC_2.0 opterr D 0x4
 GLIBC_2.0 optind D 0x4
@@ -2428,12 +2434,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libutil.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libutil.abilist
index aa2d35b323..3d51141483 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.0 forkpty F
-GLIBC_2.0 login F
-GLIBC_2.0 login_tty F
-GLIBC_2.0 logout F
-GLIBC_2.0 logwtmp F
-GLIBC_2.0 openpty F
+GLIBC_2.0 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 26b7ab529b..ef1ee91db5 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -492,6 +492,7 @@ GLIBC_2.0 fnmatch F
 GLIBC_2.0 fopen F
 GLIBC_2.0 fopencookie F
 GLIBC_2.0 fork F
+GLIBC_2.0 forkpty F
 GLIBC_2.0 fpathconf F
 GLIBC_2.0 fprintf F
 GLIBC_2.0 fputc F
@@ -750,6 +751,10 @@ GLIBC_2.0 localtime F
 GLIBC_2.0 localtime_r F
 GLIBC_2.0 lockf F
 GLIBC_2.0 locs D 0x4
+GLIBC_2.0 login F
+GLIBC_2.0 login_tty F
+GLIBC_2.0 logout F
+GLIBC_2.0 logwtmp F
 GLIBC_2.0 longjmp F
 GLIBC_2.0 lrand48 F
 GLIBC_2.0 lrand48_r F
@@ -829,6 +834,7 @@ GLIBC_2.0 open F
 GLIBC_2.0 open_memstream F
 GLIBC_2.0 opendir F
 GLIBC_2.0 openlog F
+GLIBC_2.0 openpty F
 GLIBC_2.0 optarg D 0x4
 GLIBC_2.0 opterr D 0x4
 GLIBC_2.0 optind D 0x4
@@ -2436,12 +2442,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index e667b0e553..dd64a2fb1c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -490,6 +490,7 @@ GLIBC_2.0 fnmatch F
 GLIBC_2.0 fopen F
 GLIBC_2.0 fopencookie F
 GLIBC_2.0 fork F
+GLIBC_2.0 forkpty F
 GLIBC_2.0 fpathconf F
 GLIBC_2.0 fprintf F
 GLIBC_2.0 fputc F
@@ -748,6 +749,10 @@ GLIBC_2.0 localtime F
 GLIBC_2.0 localtime_r F
 GLIBC_2.0 lockf F
 GLIBC_2.0 locs D 0x8
+GLIBC_2.0 login F
+GLIBC_2.0 login_tty F
+GLIBC_2.0 logout F
+GLIBC_2.0 logwtmp F
 GLIBC_2.0 longjmp F
 GLIBC_2.0 lrand48 F
 GLIBC_2.0 lrand48_r F
@@ -827,6 +832,7 @@ GLIBC_2.0 open F
 GLIBC_2.0 open_memstream F
 GLIBC_2.0 opendir F
 GLIBC_2.0 openlog F
+GLIBC_2.0 openpty F
 GLIBC_2.0 optarg D 0x8
 GLIBC_2.0 opterr D 0x4
 GLIBC_2.0 optind D 0x4
@@ -2354,12 +2360,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 89a1cc7da6..434d485900 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -907,6 +907,7 @@ GLIBC_2.21 fopen F
 GLIBC_2.21 fopen64 F
 GLIBC_2.21 fopencookie F
 GLIBC_2.21 fork F
+GLIBC_2.21 forkpty F
 GLIBC_2.21 fpathconf F
 GLIBC_2.21 fprintf F
 GLIBC_2.21 fputc F
@@ -1312,6 +1313,10 @@ GLIBC_2.21 localtime_r F
 GLIBC_2.21 lockf F
 GLIBC_2.21 lockf64 F
 GLIBC_2.21 locs D 0x4
+GLIBC_2.21 login F
+GLIBC_2.21 login_tty F
+GLIBC_2.21 logout F
+GLIBC_2.21 logwtmp F
 GLIBC_2.21 longjmp F
 GLIBC_2.21 lrand48 F
 GLIBC_2.21 lrand48_r F
@@ -1432,6 +1437,7 @@ GLIBC_2.21 openat F
 GLIBC_2.21 openat64 F
 GLIBC_2.21 opendir F
 GLIBC_2.21 openlog F
+GLIBC_2.21 openpty F
 GLIBC_2.21 optarg D 0x4
 GLIBC_2.21 opterr D 0x4
 GLIBC_2.21 optind D 0x4
@@ -2474,12 +2480,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/nios2/libutil.abilist b/sysdeps/unix/sysv/linux/nios2/libutil.abilist
index 19608bd74d..742ebe67fc 100644
--- a/sysdeps/unix/sysv/linux/nios2/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.21 forkpty F
-GLIBC_2.21 login F
-GLIBC_2.21 login_tty F
-GLIBC_2.21 logout F
-GLIBC_2.21 logwtmp F
-GLIBC_2.21 openpty F
+GLIBC_2.21 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index f364c5219e..8472b85f26 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -503,6 +503,7 @@ GLIBC_2.0 fnmatch F
 GLIBC_2.0 fopen F
 GLIBC_2.0 fopencookie F
 GLIBC_2.0 fork F
+GLIBC_2.0 forkpty F
 GLIBC_2.0 fpathconf F
 GLIBC_2.0 fprintf F
 GLIBC_2.0 fputc F
@@ -761,6 +762,10 @@ GLIBC_2.0 localtime F
 GLIBC_2.0 localtime_r F
 GLIBC_2.0 lockf F
 GLIBC_2.0 locs D 0x4
+GLIBC_2.0 login F
+GLIBC_2.0 login_tty F
+GLIBC_2.0 logout F
+GLIBC_2.0 logwtmp F
 GLIBC_2.0 longjmp F
 GLIBC_2.0 lrand48 F
 GLIBC_2.0 lrand48_r F
@@ -840,6 +845,7 @@ GLIBC_2.0 open F
 GLIBC_2.0 open_memstream F
 GLIBC_2.0 opendir F
 GLIBC_2.0 openlog F
+GLIBC_2.0 openpty F
 GLIBC_2.0 optarg D 0x4
 GLIBC_2.0 opterr D 0x4
 GLIBC_2.0 optind D 0x4
@@ -2492,12 +2498,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libutil.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libutil.abilist
index aa2d35b323..3d51141483 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.0 forkpty F
-GLIBC_2.0 login F
-GLIBC_2.0 login_tty F
-GLIBC_2.0 logout F
-GLIBC_2.0 logwtmp F
-GLIBC_2.0 openpty F
+GLIBC_2.0 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index f5bcc78afe..2d09ad58a7 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -503,6 +503,7 @@ GLIBC_2.0 fnmatch F
 GLIBC_2.0 fopen F
 GLIBC_2.0 fopencookie F
 GLIBC_2.0 fork F
+GLIBC_2.0 forkpty F
 GLIBC_2.0 fpathconf F
 GLIBC_2.0 fprintf F
 GLIBC_2.0 fputc F
@@ -761,6 +762,10 @@ GLIBC_2.0 localtime F
 GLIBC_2.0 localtime_r F
 GLIBC_2.0 lockf F
 GLIBC_2.0 locs D 0x4
+GLIBC_2.0 login F
+GLIBC_2.0 login_tty F
+GLIBC_2.0 logout F
+GLIBC_2.0 logwtmp F
 GLIBC_2.0 longjmp F
 GLIBC_2.0 lrand48 F
 GLIBC_2.0 lrand48_r F
@@ -840,6 +845,7 @@ GLIBC_2.0 open F
 GLIBC_2.0 open_memstream F
 GLIBC_2.0 opendir F
 GLIBC_2.0 openlog F
+GLIBC_2.0 openpty F
 GLIBC_2.0 optarg D 0x4
 GLIBC_2.0 opterr D 0x4
 GLIBC_2.0 optind D 0x4
@@ -2525,12 +2531,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 6032716053..6bf4c25d6c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -877,6 +877,7 @@ GLIBC_2.3 fopen F
 GLIBC_2.3 fopen64 F
 GLIBC_2.3 fopencookie F
 GLIBC_2.3 fork F
+GLIBC_2.3 forkpty F
 GLIBC_2.3 fpathconf F
 GLIBC_2.3 fprintf F
 GLIBC_2.3 fputc F
@@ -1245,6 +1246,10 @@ GLIBC_2.3 localtime_r F
 GLIBC_2.3 lockf F
 GLIBC_2.3 lockf64 F
 GLIBC_2.3 locs D 0x8
+GLIBC_2.3 login F
+GLIBC_2.3 login_tty F
+GLIBC_2.3 logout F
+GLIBC_2.3 logwtmp F
 GLIBC_2.3 longjmp F
 GLIBC_2.3 lrand48 F
 GLIBC_2.3 lrand48_r F
@@ -1348,6 +1353,7 @@ GLIBC_2.3 open64 F
 GLIBC_2.3 open_memstream F
 GLIBC_2.3 opendir F
 GLIBC_2.3 openlog F
+GLIBC_2.3 openpty F
 GLIBC_2.3 optarg D 0x8
 GLIBC_2.3 opterr D 0x4
 GLIBC_2.3 optind D 0x4
@@ -2262,12 +2268,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libutil.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libutil.abilist
index 9cf1da7aa4..7688d9c062 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.3 forkpty F
-GLIBC_2.3 login F
-GLIBC_2.3 login_tty F
-GLIBC_2.3 logout F
-GLIBC_2.3 logwtmp F
-GLIBC_2.3 openpty F
+GLIBC_2.3 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 8c5494e1dc..c5480c1e8d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -950,6 +950,7 @@ GLIBC_2.17 fopen F
 GLIBC_2.17 fopen64 F
 GLIBC_2.17 fopencookie F
 GLIBC_2.17 fork F
+GLIBC_2.17 forkpty F
 GLIBC_2.17 fpathconf F
 GLIBC_2.17 fprintf F
 GLIBC_2.17 fputc F
@@ -1355,6 +1356,10 @@ GLIBC_2.17 localtime_r F
 GLIBC_2.17 lockf F
 GLIBC_2.17 lockf64 F
 GLIBC_2.17 locs D 0x8
+GLIBC_2.17 login F
+GLIBC_2.17 login_tty F
+GLIBC_2.17 logout F
+GLIBC_2.17 logwtmp F
 GLIBC_2.17 longjmp F
 GLIBC_2.17 lrand48 F
 GLIBC_2.17 lrand48_r F
@@ -1475,6 +1480,7 @@ GLIBC_2.17 openat F
 GLIBC_2.17 openat64 F
 GLIBC_2.17 opendir F
 GLIBC_2.17 openlog F
+GLIBC_2.17 openpty F
 GLIBC_2.17 optarg D 0x8
 GLIBC_2.17 opterr D 0x4
 GLIBC_2.17 optind D 0x4
@@ -2561,12 +2567,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libutil.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libutil.abilist
index 99889de22e..3a2da66d2c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.17 forkpty F
-GLIBC_2.17 login F
-GLIBC_2.17 login_tty F
-GLIBC_2.17 logout F
-GLIBC_2.17 logwtmp F
-GLIBC_2.17 openpty F
+GLIBC_2.17 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index d7db279c1e..df236735a6 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -799,6 +799,7 @@ GLIBC_2.33 fopen F
 GLIBC_2.33 fopen64 F
 GLIBC_2.33 fopencookie F
 GLIBC_2.33 fork F
+GLIBC_2.33 forkpty F
 GLIBC_2.33 fpathconf F
 GLIBC_2.33 fprintf F
 GLIBC_2.33 fputc F
@@ -1195,6 +1196,10 @@ GLIBC_2.33 localtime F
 GLIBC_2.33 localtime_r F
 GLIBC_2.33 lockf F
 GLIBC_2.33 lockf64 F
+GLIBC_2.33 login F
+GLIBC_2.33 login_tty F
+GLIBC_2.33 logout F
+GLIBC_2.33 logwtmp F
 GLIBC_2.33 longjmp F
 GLIBC_2.33 lrand48 F
 GLIBC_2.33 lrand48_r F
@@ -1323,6 +1328,7 @@ GLIBC_2.33 openat F
 GLIBC_2.33 openat64 F
 GLIBC_2.33 opendir F
 GLIBC_2.33 openlog F
+GLIBC_2.33 openpty F
 GLIBC_2.33 optarg D 0x4
 GLIBC_2.33 opterr D 0x4
 GLIBC_2.33 optind D 0x4
@@ -2126,12 +2132,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libutil.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libutil.abilist
index 59ae944bda..d23f268a65 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.33 forkpty F
-GLIBC_2.33 login F
-GLIBC_2.33 login_tty F
-GLIBC_2.33 logout F
-GLIBC_2.33 logwtmp F
-GLIBC_2.33 openpty F
+GLIBC_2.33 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index ef03dc0f9e..6c60a64232 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -842,6 +842,7 @@ GLIBC_2.27 fopen F
 GLIBC_2.27 fopen64 F
 GLIBC_2.27 fopencookie F
 GLIBC_2.27 fork F
+GLIBC_2.27 forkpty F
 GLIBC_2.27 fpathconf F
 GLIBC_2.27 fprintf F
 GLIBC_2.27 fputc F
@@ -1250,6 +1251,10 @@ GLIBC_2.27 localtime F
 GLIBC_2.27 localtime_r F
 GLIBC_2.27 lockf F
 GLIBC_2.27 lockf64 F
+GLIBC_2.27 login F
+GLIBC_2.27 login_tty F
+GLIBC_2.27 logout F
+GLIBC_2.27 logwtmp F
 GLIBC_2.27 longjmp F
 GLIBC_2.27 lrand48 F
 GLIBC_2.27 lrand48_r F
@@ -1370,6 +1375,7 @@ GLIBC_2.27 openat F
 GLIBC_2.27 openat64 F
 GLIBC_2.27 opendir F
 GLIBC_2.27 openlog F
+GLIBC_2.27 openpty F
 GLIBC_2.27 optarg D 0x8
 GLIBC_2.27 opterr D 0x4
 GLIBC_2.27 optind D 0x4
@@ -2326,12 +2332,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libutil.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libutil.abilist
index cbfec8d46e..c2cbef8fce 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.27 forkpty F
-GLIBC_2.27 login F
-GLIBC_2.27 login_tty F
-GLIBC_2.27 logout F
-GLIBC_2.27 logwtmp F
-GLIBC_2.27 openpty F
+GLIBC_2.27 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/Makefile b/sysdeps/unix/sysv/linux/s390/s390-32/Makefile
index fd8cf92633..6b6d59b7dd 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/Makefile
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/Makefile
@@ -2,8 +2,7 @@
 default-abi := 32
 
 ifeq ($(subdir),login)
-sysdep_routines += utmp32 utmpx32
-libutil-routines += login32
+sysdep_routines += utmp32 utmpx32 login32
 endif
 
 ifeq ($(subdir),misc)
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/Versions b/sysdeps/unix/sysv/linux/s390/s390-32/Versions
index cc03e70015..bd1a46df88 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/Versions
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/Versions
@@ -42,6 +42,7 @@ libc {
     updwtmpx;
     getutmp;
     getutmpx;
+    login;
   }
   GLIBC_2.11 {
     fallocate64;
@@ -53,6 +54,6 @@ libc {
 
 libutil {
   GLIBC_2.9 {
-    login;
+    __libutil_version_placeholder;
   }
 }
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 9118cb68ec..0686117011 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -493,6 +493,7 @@ GLIBC_2.0 fnmatch F
 GLIBC_2.0 fopen F
 GLIBC_2.0 fopencookie F
 GLIBC_2.0 fork F
+GLIBC_2.0 forkpty F
 GLIBC_2.0 fpathconf F
 GLIBC_2.0 fprintf F
 GLIBC_2.0 fputc F
@@ -751,6 +752,10 @@ GLIBC_2.0 localtime F
 GLIBC_2.0 localtime_r F
 GLIBC_2.0 lockf F
 GLIBC_2.0 locs D 0x4
+GLIBC_2.0 login F
+GLIBC_2.0 login_tty F
+GLIBC_2.0 logout F
+GLIBC_2.0 logwtmp F
 GLIBC_2.0 longjmp F
 GLIBC_2.0 lrand48 F
 GLIBC_2.0 lrand48_r F
@@ -831,6 +836,7 @@ GLIBC_2.0 open F
 GLIBC_2.0 open_memstream F
 GLIBC_2.0 opendir F
 GLIBC_2.0 openlog F
+GLIBC_2.0 openpty F
 GLIBC_2.0 optarg D 0x4
 GLIBC_2.0 opterr D 0x4
 GLIBC_2.0 optind D 0x4
@@ -2490,12 +2496,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
@@ -2931,6 +2943,7 @@ GLIBC_2.9 getutxent F
 GLIBC_2.9 getutxid F
 GLIBC_2.9 getutxline F
 GLIBC_2.9 inotify_init1 F
+GLIBC_2.9 login F
 GLIBC_2.9 pipe2 F
 GLIBC_2.9 pututline F
 GLIBC_2.9 pututxline F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libutil-compat.c b/sysdeps/unix/sysv/linux/s390/s390-32/libutil-compat.c
new file mode 100644
index 0000000000..787b874e31
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libutil-compat.c
@@ -0,0 +1,23 @@
+/* Placeholder compatibility symbols for libutil.  s390 version.
+   Copyright (C) 2021 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "utmp-compat.h"
+#include <login/libutil-compat.c>
+
+symbol_version (__libutil_version_placeholder_1,
+                __libutil_version_placeholder, UTMP_COMPAT_BASE);
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libutil.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libutil.abilist
index bf735f7c00..5c9c8a5b00 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libutil.abilist
@@ -1,7 +1,2 @@
-GLIBC_2.0 forkpty F
-GLIBC_2.0 login F
-GLIBC_2.0 login_tty F
-GLIBC_2.0 logout F
-GLIBC_2.0 logwtmp F
-GLIBC_2.0 openpty F
-GLIBC_2.9 login F
+GLIBC_2.0 __libutil_version_placeholder F
+GLIBC_2.9 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/login.c b/sysdeps/unix/sysv/linux/s390/s390-32/login.c
index 5df028298a..62742a8a5f 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/login.c
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/login.c
@@ -23,13 +23,14 @@
 #include <unistd.h>
 #include <stdlib.h>
 #include <utmp.h>
+#include <shlib-compat.h>
 
 #include "utmp-compat.h"
 
-#undef weak_alias
-#define weak_alias(n,a)
-#define login __login
+#undef compat_symbol
+#define compat_symbol(...)
 #include "login/login.c"
-#undef login
 
-default_symbol_version (__login, login, UTMP_COMPAT_BASE);
+/* Compatibility symbol as formerly found in libutil.  login@GLIBC_2.0
+   is supplied by login32.c.  */
+symbol_version (__login, login, UTMP_COMPAT_BASE);
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/login32.c b/sysdeps/unix/sysv/linux/s390/s390-32/login32.c
index 45419bc092..e37da4e573 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/login32.c
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/login32.c
@@ -16,12 +16,13 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-#include <sys/types.h>
-#include <utmp.h>
-#include <libc-symbols.h>
+#ifdef SHARED
+# include <sys/types.h>
+# include <utmp.h>
+# include <libc-symbols.h>
 
-#include "utmp32.h"
-#include "utmp-convert.h"
+# include "utmp32.h"
+# include "utmp-convert.h"
 
 /* Write the given entry into utmp and wtmp.  */
 void
@@ -34,3 +35,4 @@ login32 (const struct utmp32 *entry)
 }
 
 symbol_version (login32, login, GLIBC_2.0);
+#endif
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 66c01bd7e7..db40c539b9 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -811,6 +811,7 @@ GLIBC_2.2 fopen F
 GLIBC_2.2 fopen64 F
 GLIBC_2.2 fopencookie F
 GLIBC_2.2 fork F
+GLIBC_2.2 forkpty F
 GLIBC_2.2 fpathconf F
 GLIBC_2.2 fprintf F
 GLIBC_2.2 fputc F
@@ -1142,6 +1143,10 @@ GLIBC_2.2 localtime_r F
 GLIBC_2.2 lockf F
 GLIBC_2.2 lockf64 F
 GLIBC_2.2 locs D 0x8
+GLIBC_2.2 login F
+GLIBC_2.2 login_tty F
+GLIBC_2.2 logout F
+GLIBC_2.2 logwtmp F
 GLIBC_2.2 longjmp F
 GLIBC_2.2 lrand48 F
 GLIBC_2.2 lrand48_r F
@@ -1241,6 +1246,7 @@ GLIBC_2.2 open64 F
 GLIBC_2.2 open_memstream F
 GLIBC_2.2 opendir F
 GLIBC_2.2 openlog F
+GLIBC_2.2 openpty F
 GLIBC_2.2 optarg D 0x8
 GLIBC_2.2 opterr D 0x4
 GLIBC_2.2 optind D 0x4
@@ -2299,12 +2305,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libutil.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libutil.abilist
index 14bd135ea8..e6f3e6109f 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.2 forkpty F
-GLIBC_2.2 login F
-GLIBC_2.2 login_tty F
-GLIBC_2.2 logout F
-GLIBC_2.2 logwtmp F
-GLIBC_2.2 openpty F
+GLIBC_2.2 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index c40eb412c2..e373c564f1 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -7,6 +7,12 @@ GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dlopen F
 GLIBC_2.0 dlsym F
+GLIBC_2.0 forkpty F
+GLIBC_2.0 login F
+GLIBC_2.0 login_tty F
+GLIBC_2.0 logout F
+GLIBC_2.0 logwtmp F
+GLIBC_2.0 openpty F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2345,12 +2351,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libutil.abilist b/sysdeps/unix/sysv/linux/sh/be/libutil.abilist
index aa2d35b323..3d51141483 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.0 forkpty F
-GLIBC_2.0 login F
-GLIBC_2.0 login_tty F
-GLIBC_2.0 logout F
-GLIBC_2.0 logwtmp F
-GLIBC_2.0 openpty F
+GLIBC_2.0 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 1412d33835..dbb7ca712c 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -7,6 +7,12 @@ GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dlopen F
 GLIBC_2.0 dlsym F
+GLIBC_2.0 forkpty F
+GLIBC_2.0 login F
+GLIBC_2.0 login_tty F
+GLIBC_2.0 logout F
+GLIBC_2.0 logwtmp F
+GLIBC_2.0 openpty F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2342,12 +2348,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libutil.abilist b/sysdeps/unix/sysv/linux/sh/le/libutil.abilist
index aa2d35b323..3d51141483 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.0 forkpty F
-GLIBC_2.0 login F
-GLIBC_2.0 login_tty F
-GLIBC_2.0 logout F
-GLIBC_2.0 logwtmp F
-GLIBC_2.0 openpty F
+GLIBC_2.0 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 7b55d34753..661055f4fd 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -495,6 +495,7 @@ GLIBC_2.0 fnmatch F
 GLIBC_2.0 fopen F
 GLIBC_2.0 fopencookie F
 GLIBC_2.0 fork F
+GLIBC_2.0 forkpty F
 GLIBC_2.0 fpathconf F
 GLIBC_2.0 fprintf F
 GLIBC_2.0 fputc F
@@ -753,6 +754,10 @@ GLIBC_2.0 localtime F
 GLIBC_2.0 localtime_r F
 GLIBC_2.0 lockf F
 GLIBC_2.0 locs D 0x4
+GLIBC_2.0 login F
+GLIBC_2.0 login_tty F
+GLIBC_2.0 logout F
+GLIBC_2.0 logwtmp F
 GLIBC_2.0 longjmp F
 GLIBC_2.0 lrand48 F
 GLIBC_2.0 lrand48_r F
@@ -833,6 +838,7 @@ GLIBC_2.0 open F
 GLIBC_2.0 open_memstream F
 GLIBC_2.0 opendir F
 GLIBC_2.0 openlog F
+GLIBC_2.0 openpty F
 GLIBC_2.0 optarg D 0x4
 GLIBC_2.0 opterr D 0x4
 GLIBC_2.0 optind D 0x4
@@ -2483,12 +2489,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libutil.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libutil.abilist
index aa2d35b323..3d51141483 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.0 forkpty F
-GLIBC_2.0 login F
-GLIBC_2.0 login_tty F
-GLIBC_2.0 logout F
-GLIBC_2.0 logwtmp F
-GLIBC_2.0 openpty F
+GLIBC_2.0 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index cfd5f38864..b6b42a8312 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -7,6 +7,12 @@ GLIBC_2.0 dlclose F
 GLIBC_2.0 dlerror F
 GLIBC_2.0 dlopen F
 GLIBC_2.0 dlsym F
+GLIBC_2.0 forkpty F
+GLIBC_2.0 login F
+GLIBC_2.0 login_tty F
+GLIBC_2.0 logout F
+GLIBC_2.0 logwtmp F
+GLIBC_2.0 openpty F
 GLIBC_2.1 dlopen F
 GLIBC_2.1 dlvsym F
 GLIBC_2.10 __cxa_at_quick_exit F
@@ -2319,12 +2325,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libutil.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libutil.abilist
index aa2d35b323..3d51141483 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.0 forkpty F
-GLIBC_2.0 login F
-GLIBC_2.0 login_tty F
-GLIBC_2.0 logout F
-GLIBC_2.0 logwtmp F
-GLIBC_2.0 openpty F
+GLIBC_2.0 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 17be05f14f..d5c5bf6a30 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -801,6 +801,7 @@ GLIBC_2.2.5 fopen F
 GLIBC_2.2.5 fopen64 F
 GLIBC_2.2.5 fopencookie F
 GLIBC_2.2.5 fork F
+GLIBC_2.2.5 forkpty F
 GLIBC_2.2.5 fpathconf F
 GLIBC_2.2.5 fprintf F
 GLIBC_2.2.5 fputc F
@@ -1135,6 +1136,10 @@ GLIBC_2.2.5 localtime_r F
 GLIBC_2.2.5 lockf F
 GLIBC_2.2.5 lockf64 F
 GLIBC_2.2.5 locs D 0x8
+GLIBC_2.2.5 login F
+GLIBC_2.2.5 login_tty F
+GLIBC_2.2.5 logout F
+GLIBC_2.2.5 logwtmp F
 GLIBC_2.2.5 longjmp F
 GLIBC_2.2.5 lrand48 F
 GLIBC_2.2.5 lrand48_r F
@@ -1235,6 +1240,7 @@ GLIBC_2.2.5 open64 F
 GLIBC_2.2.5 open_memstream F
 GLIBC_2.2.5 opendir F
 GLIBC_2.2.5 openlog F
+GLIBC_2.2.5 openpty F
 GLIBC_2.2.5 optarg D 0x8
 GLIBC_2.2.5 opterr D 0x4
 GLIBC_2.2.5 optind D 0x4
@@ -2277,12 +2283,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libutil.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libutil.abilist
index 1356ed4115..d2f5c42d0b 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.2.5 forkpty F
-GLIBC_2.2.5 login F
-GLIBC_2.2.5 login_tty F
-GLIBC_2.2.5 logout F
-GLIBC_2.2.5 logwtmp F
-GLIBC_2.2.5 openpty F
+GLIBC_2.2.5 __libutil_version_placeholder F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index a9db18906b..ae6b0049f6 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -866,6 +866,7 @@ GLIBC_2.16 fopen F
 GLIBC_2.16 fopen64 F
 GLIBC_2.16 fopencookie F
 GLIBC_2.16 fork F
+GLIBC_2.16 forkpty F
 GLIBC_2.16 fpathconf F
 GLIBC_2.16 fprintf F
 GLIBC_2.16 fputc F
@@ -1272,6 +1273,10 @@ GLIBC_2.16 localtime_r F
 GLIBC_2.16 lockf F
 GLIBC_2.16 lockf64 F
 GLIBC_2.16 locs D 0x4
+GLIBC_2.16 login F
+GLIBC_2.16 login_tty F
+GLIBC_2.16 logout F
+GLIBC_2.16 logwtmp F
 GLIBC_2.16 longjmp F
 GLIBC_2.16 lrand48 F
 GLIBC_2.16 lrand48_r F
@@ -1394,6 +1399,7 @@ GLIBC_2.16 openat F
 GLIBC_2.16 openat64 F
 GLIBC_2.16 opendir F
 GLIBC_2.16 openlog F
+GLIBC_2.16 openpty F
 GLIBC_2.16 optarg D 0x4
 GLIBC_2.16 opterr D 0x4
 GLIBC_2.16 optind D 0x4
@@ -2380,12 +2386,18 @@ GLIBC_2.34 dlopen F
 GLIBC_2.34 dlsym F
 GLIBC_2.34 dlvsym F
 GLIBC_2.34 execveat F
+GLIBC_2.34 forkpty F
+GLIBC_2.34 login F
+GLIBC_2.34 login_tty F
+GLIBC_2.34 logout F
+GLIBC_2.34 logwtmp F
 GLIBC_2.34 mtx_destroy F
 GLIBC_2.34 mtx_init F
 GLIBC_2.34 mtx_lock F
 GLIBC_2.34 mtx_timedlock F
 GLIBC_2.34 mtx_trylock F
 GLIBC_2.34 mtx_unlock F
+GLIBC_2.34 openpty F
 GLIBC_2.34 pthread_attr_getaffinity_np F
 GLIBC_2.34 pthread_attr_getguardsize F
 GLIBC_2.34 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libutil.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libutil.abilist
index cff23106f5..b296642cbe 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libutil.abilist
@@ -1,6 +1 @@
-GLIBC_2.16 forkpty F
-GLIBC_2.16 login F
-GLIBC_2.16 login_tty F
-GLIBC_2.16 logout F
-GLIBC_2.16 logwtmp F
-GLIBC_2.16 openpty F
+GLIBC_2.16 __libutil_version_placeholder F
