unofficial mirror of libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Adhemerval Zanella via Libc-alpha <libc-alpha@sourceware.org>
To: libc-alpha@sourceware.org
Cc: Alistair Francis <alistair.francis@wdc.com>
Subject: [PATCH 3/5] login: Add 64-bit time support
Date: Wed, 29 Jul 2020 17:51:15 -0300	[thread overview]
Message-ID: <20200729205117.2925113-3-adhemerval.zanella@linaro.org> (raw)
In-Reply-To: <20200729205117.2925113-1-adhemerval.zanella@linaro.org>

It uses the s390-32 version and consolidates all the implementations.
The result 'struct utmp' and 'struct utmpx' the same size of the
old 32-bit time version (the __glibc_reserved in used adjusted).

New symbols for getutent, getutent_r, getutid, getutid_r, getutline,
getutline_r, getutmp, getutmpx, getutxent, getutxid. getutxline,
pututline, pututxline, updwtmp, updwtmpx, and login are added to
all architecture but s390-32 (which already added 64-bit time support
on 32-bit ABI on glibc 2.9).

Checked on i686-linux-gnu and x86_64-linux-gnu.  I also did a make
check on all affected ABIs.
---
 bits/struct_utmp.h                            | 12 +++---
 bits/struct_utmpx.h                           | 11 +++---
 include/utmp.h                                |  3 ++
 login/Makefile                                |  4 +-
 login/Versions                                |  3 ++
 login/getutent.c                              |  7 +++-
 login/getutent_r.c                            | 11 +++++-
 login/getutid.c                               |  7 +++-
 login/getutid_r.c                             |  7 +++-
 login/getutline.c                             |  7 +++-
 login/getutline_r.c                           |  7 +++-
 login/getutmp.c                               | 10 ++++-
 login/getutxent.c                             |  9 ++++-
 login/getutxid.c                              |  9 ++++-
 login/getutxline.c                            |  9 ++++-
 login/login.c                                 | 10 ++++-
 .../linux/s390/s390-32 => login}/login32.c    | 14 ++++---
 login/pututxline.c                            |  9 ++++-
 login/updwtmp.c                               |  7 +++-
 login/updwtmpx.c                              |  9 ++++-
 .../s390/s390-32 => login}/utmp-convert.h     |  0
 .../linux/s390/s390-32 => login}/utmp32.c     | 32 +++++++++-------
 .../linux/s390/s390-32 => login}/utmp32.h     |  0
 .../s390/s390-32 => login}/utmpx-convert.h    |  0
 .../linux/s390/s390-32 => login}/utmpx32.c    | 29 +++++++++-----
 .../linux/s390/s390-32 => login}/utmpx32.h    |  0
 sysdeps/generic/utmp-compat.h                 |  3 ++
 sysdeps/mach/hurd/i386/libc.abilist           | 15 ++++++++
 sysdeps/mach/hurd/i386/libutil.abilist        |  1 +
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  | 15 ++++++++
 .../unix/sysv/linux/aarch64/libutil.abilist   |  1 +
 sysdeps/unix/sysv/linux/alpha/libc.abilist    | 15 ++++++++
 sysdeps/unix/sysv/linux/alpha/libutil.abilist |  1 +
 sysdeps/unix/sysv/linux/arc/libc.abilist      | 15 ++++++++
 sysdeps/unix/sysv/linux/arc/libutil.abilist   |  1 +
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   | 15 ++++++++
 .../unix/sysv/linux/arm/le/libutil.abilist    |  1 +
 sysdeps/unix/sysv/linux/csky/libc.abilist     | 15 ++++++++
 sysdeps/unix/sysv/linux/csky/libutil.abilist  |  1 +
 sysdeps/unix/sysv/linux/hppa/libc.abilist     | 15 ++++++++
 sysdeps/unix/sysv/linux/hppa/libutil.abilist  |  1 +
 sysdeps/unix/sysv/linux/i386/libc.abilist     | 15 ++++++++
 sysdeps/unix/sysv/linux/i386/libutil.abilist  |  1 +
 sysdeps/unix/sysv/linux/ia64/libc.abilist     | 15 ++++++++
 sysdeps/unix/sysv/linux/ia64/libutil.abilist  |  1 +
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  | 15 ++++++++
 .../sysv/linux/m68k/m680x0/libutil.abilist    |  1 +
 .../sysv/linux/microblaze/be/libc.abilist     | 15 ++++++++
 .../sysv/linux/microblaze/be/libutil.abilist  |  1 +
 .../sysv/linux/mips/mips32/fpu/libc.abilist   | 15 ++++++++
 .../sysv/linux/mips/mips32/libutil.abilist    |  1 +
 .../sysv/linux/mips/mips64/libutil.abilist    |  1 +
 .../sysv/linux/mips/mips64/n32/libc.abilist   | 15 ++++++++
 .../sysv/linux/mips/mips64/n64/libc.abilist   | 15 ++++++++
 sysdeps/unix/sysv/linux/nios2/libc.abilist    | 15 ++++++++
 sysdeps/unix/sysv/linux/nios2/libutil.abilist |  1 +
 .../linux/powerpc/powerpc32/fpu/libc.abilist  | 15 ++++++++
 .../linux/powerpc/powerpc32/libutil.abilist   |  1 +
 .../linux/powerpc/powerpc64/be/libc.abilist   | 15 ++++++++
 .../powerpc/powerpc64/be/libutil.abilist      |  1 +
 .../linux/powerpc/powerpc64/le/libc.abilist   | 15 ++++++++
 .../powerpc/powerpc64/le/libutil.abilist      |  1 +
 .../unix/sysv/linux/riscv/rv64/libc.abilist   | 15 ++++++++
 .../sysv/linux/riscv/rv64/libutil.abilist     |  1 +
 .../unix/sysv/linux/s390/s390-32/getutent.c   | 32 ----------------
 .../unix/sysv/linux/s390/s390-32/getutent_r.c | 38 -------------------
 .../unix/sysv/linux/s390/s390-32/getutid.c    | 32 ----------------
 .../unix/sysv/linux/s390/s390-32/getutid_r.c  | 35 -----------------
 .../unix/sysv/linux/s390/s390-32/getutline.c  | 32 ----------------
 .../sysv/linux/s390/s390-32/getutline_r.c     | 34 -----------------
 .../unix/sysv/linux/s390/s390-32/getutmp.c    | 30 ---------------
 .../unix/sysv/linux/s390/s390-32/getutxent.c  | 30 ---------------
 .../unix/sysv/linux/s390/s390-32/getutxid.c   | 30 ---------------
 .../unix/sysv/linux/s390/s390-32/getutxline.c | 30 ---------------
 sysdeps/unix/sysv/linux/s390/s390-32/login.c  | 35 -----------------
 .../unix/sysv/linux/s390/s390-32/pututxline.c | 30 ---------------
 .../unix/sysv/linux/s390/s390-32/updwtmp.c    | 32 ----------------
 .../unix/sysv/linux/s390/s390-32/updwtmpx.c   | 30 ---------------
 .../sysv/linux/s390/s390-32/utmp-compat.h     |  2 +-
 .../unix/sysv/linux/s390/s390-64/libc.abilist | 15 ++++++++
 .../sysv/linux/s390/s390-64/libutil.abilist   |  1 +
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    | 15 ++++++++
 sysdeps/unix/sysv/linux/sh/le/libutil.abilist |  1 +
 .../sysv/linux/sparc/sparc32/libc.abilist     | 15 ++++++++
 .../sysv/linux/sparc/sparc32/libutil.abilist  |  1 +
 .../sysv/linux/sparc/sparc64/libc.abilist     | 15 ++++++++
 .../sysv/linux/sparc/sparc64/libutil.abilist  |  1 +
 .../unix/sysv/linux/x86_64/64/libc.abilist    | 15 ++++++++
 .../unix/sysv/linux/x86_64/64/libutil.abilist |  1 +
 .../unix/sysv/linux/x86_64/x32/libc.abilist   | 15 ++++++++
 .../sysv/linux/x86_64/x32/libutil.abilist     |  1 +
 91 files changed, 572 insertions(+), 508 deletions(-)
 rename {sysdeps/unix/sysv/linux/s390/s390-32 => login}/login32.c (75%)
 rename {sysdeps/unix/sysv/linux/s390/s390-32 => login}/utmp-convert.h (100%)
 rename {sysdeps/unix/sysv/linux/s390/s390-32 => login}/utmp32.c (83%)
 rename {sysdeps/unix/sysv/linux/s390/s390-32 => login}/utmp32.h (100%)
 rename {sysdeps/unix/sysv/linux/s390/s390-32 => login}/utmpx-convert.h (100%)
 rename {sysdeps/unix/sysv/linux/s390/s390-32 => login}/utmpx32.c (81%)
 rename {sysdeps/unix/sysv/linux/s390/s390-32 => login}/utmpx32.h (100%)
 create mode 100644 sysdeps/generic/utmp-compat.h
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/getutent.c
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/getutent_r.c
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/getutid.c
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/getutid_r.c
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/getutline.c
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/getutline_r.c
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/getutmp.c
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/getutxent.c
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/getutxid.c
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/getutxline.c
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/login.c
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/pututxline.c
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/updwtmp.c
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/updwtmpx.c

diff --git a/bits/struct_utmp.h b/bits/struct_utmp.h
index 4b05c91515..84d4df2590 100644
--- a/bits/struct_utmp.h
+++ b/bits/struct_utmp.h
@@ -38,18 +38,16 @@ struct utmp
 /* The ut_session and ut_tv fields must be the same size when compiled
    32- and 64-bit.  This allows data files and shared memory to be
    shared between 32- and 64-bit applications.  */
-#if __WORDSIZE_TIME64_COMPAT32
-  int32_t ut_session;		/* Session ID, used for windowing.  */
+  int64_t ut_session;		/* Session ID, used for windowing.  */
+#if __TIMESIZE == 64
   struct
   {
-    int32_t tv_sec;		/* Seconds.  */
-    int32_t tv_usec;		/* Microseconds.  */
+    int64_t tv_sec;		/* Seconds.  */
+    int64_t tv_usec;		/* Microseconds.  */
   } ut_tv;			/* Time entry was made.  */
 #else
-  long int ut_session;		/* Session ID, used for windowing.  */
   struct timeval ut_tv;		/* Time entry was made.  */
 #endif
-
   int32_t ut_addr_v6[4];	/* Internet address of remote host.  */
-  char __glibc_reserved[20];		/* Reserved for future use.  */
+  char __glibc_reserved[8];		/* Reserved for future use.  */
 };
diff --git a/bits/struct_utmpx.h b/bits/struct_utmpx.h
index 8bfc786cd8..b5bf539a57 100644
--- a/bits/struct_utmpx.h
+++ b/bits/struct_utmpx.h
@@ -39,17 +39,16 @@ struct utmpx
 /* The fields ut_session and ut_tv must be the same size when compiled
    32- and 64-bit.  This allows files and shared memory to be shared
    between 32- and 64-bit applications.  */
-#if __WORDSIZE_TIME64_COMPAT32
-  __int32_t ut_session;		/* Session ID, used for windowing.  */
+  __int64_t ut_session;		/* Session ID, used for windowing.  */
+#if __TIMESIZE == 64
   struct
   {
-    __int32_t tv_sec;		/* Seconds.  */
-    __int32_t tv_usec;		/* Microseconds.  */
+    __int64_t tv_sec;		/* Seconds.  */
+    __int64_t tv_usec;		/* Microseconds.  */
   } ut_tv;			/* Time entry was made.  */
 #else
-  long int ut_session;		/* Session ID, used for windowing.  */
   struct timeval ut_tv;		/* Time entry was made.  */
 #endif
   __int32_t ut_addr_v6[4];	/* Internet address of remote host.  */
-  char __glibc_reserved[20];		/* Reserved for future use.  */
+  char __glibc_reserved[8];		/* Reserved for future use.  */
 };
diff --git a/include/utmp.h b/include/utmp.h
index 374184e9b2..350b9aab81 100644
--- a/include/utmp.h
+++ b/include/utmp.h
@@ -26,6 +26,9 @@ extern int __getutline_r (const struct utmp *__line,
 			  struct utmp *__buffer, struct utmp **__result);
 libc_hidden_proto (__getutline_r)
 
+extern void __login (const struct utmp *ut);
+hidden_proto (__login)
+
 libutil_hidden_proto (login_tty)
 
 # endif /* !_ISOMAC */
diff --git a/login/Makefile b/login/Makefile
index 58d5d4d64a..9f37a18101 100644
--- a/login/Makefile
+++ b/login/Makefile
@@ -29,7 +29,7 @@ headers	:= utmp.h bits/utmp.h lastlog.h pty.h bits/struct_lastlog.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 utmp32 utmpx32
 
 CFLAGS-grantpt.c += -DLIBEXECDIR='"$(libexecdir)"'
 
@@ -51,7 +51,7 @@ tests := tst-utmp tst-utmpx tst-grantpt tst-ptsname tst-getlogin tst-updwtmpx \
 extra-libs      := libutil
 extra-libs-others := $(extra-libs)
 
-libutil-routines:= login login_tty logout logwtmp openpty forkpty
+libutil-routines:= login login_tty logout logwtmp openpty forkpty login32
 
 include ../Rules
 
diff --git a/login/Versions b/login/Versions
index 475fcf063f..86b56bb92e 100644
--- a/login/Versions
+++ b/login/Versions
@@ -51,4 +51,7 @@ libutil {
   GLIBC_2.0 {
     forkpty; login; login_tty; logout; logwtmp; openpty;
   }
+  GLIBC_2.33 {
+    login;
+  }
 }
diff --git a/login/getutent.c b/login/getutent.c
index 3a8b78c9be..16ca2622d1 100644
--- a/login/getutent.c
+++ b/login/getutent.c
@@ -18,7 +18,8 @@
 
 #include <stdlib.h>
 #include <utmp.h>
-
+#include <utmp-compat.h>
+#include <shlib-compat.h>
 
 /* Local buffer to store the result.  */
 libc_freeres_ptr (static struct utmp *buffer);
@@ -42,4 +43,8 @@ __getutent (void)
   return result;
 }
 libc_hidden_def (__getutent)
+#if SHLIB_COMPAT(libc, GLIBC_2_0, UTMP_COMPAT_BASE)
+versioned_symbol (libc, __getutent, getutent, UTMP_COMPAT_BASE);
+#else
 weak_alias (__getutent, getutent)
+#endif
diff --git a/login/getutent_r.c b/login/getutent_r.c
index 7bf5fe136a..5c82e85c09 100644
--- a/login/getutent_r.c
+++ b/login/getutent_r.c
@@ -20,7 +20,8 @@
 #include <libc-lock.h>
 #include <stdlib.h>
 #include <utmp.h>
-
+#include <utmp-compat.h>
+#include <shlib-compat.h>
 #include "utmp-private.h"
 
 /* We need to protect the opening of the file.  */
@@ -53,7 +54,11 @@ __getutent_r (struct utmp *buffer, struct utmp **result)
   return retval;
 }
 libc_hidden_def (__getutent_r)
+#if SHLIB_COMPAT(libc, GLIBC_2_0, UTMP_COMPAT_BASE)
+versioned_symbol (libc, __getutent_r, getutent_r, UTMP_COMPAT_BASE);
+#else
 weak_alias (__getutent_r, getutent_r)
+#endif
 
 
 struct utmp *
@@ -70,7 +75,11 @@ __pututline (const struct utmp *data)
   return buffer;
 }
 libc_hidden_def (__pututline)
+#if SHLIB_COMPAT(libc, GLIBC_2_0, UTMP_COMPAT_BASE)
+versioned_symbol (libc, __pututline, pututline, UTMP_COMPAT_BASE);
+#else
 weak_alias (__pututline, pututline)
+#endif
 
 
 void
diff --git a/login/getutid.c b/login/getutid.c
index 0c5c106b59..b96ccb2381 100644
--- a/login/getutid.c
+++ b/login/getutid.c
@@ -18,7 +18,8 @@
 
 #include <stdlib.h>
 #include <utmp.h>
-
+#include <shlib-compat.h>
+#include <utmp-compat.h>
 
 /* Local buffer to store the result.  */
 libc_freeres_ptr (static struct utmp *buffer);
@@ -40,4 +41,8 @@ __getutid (const struct utmp *id)
   return result;
 }
 libc_hidden_def (__getutid)
+#if SHLIB_COMPAT(libc, GLIBC_2_0, UTMP_COMPAT_BASE)
+versioned_symbol (libc, __getutid, getutid, UTMP_COMPAT_BASE);
+#else
 weak_alias (__getutid, getutid)
+#endif
diff --git a/login/getutid_r.c b/login/getutid_r.c
index c655c4f56b..06907a4c92 100644
--- a/login/getutid_r.c
+++ b/login/getutid_r.c
@@ -21,7 +21,8 @@
 #include <errno.h>
 #include <stdlib.h>
 #include <utmp.h>
-
+#include <utmp-compat.h>
+#include <shlib-compat.h>
 #include "utmp-private.h"
 
 
@@ -55,4 +56,8 @@ __getutid_r (const struct utmp *id, struct utmp *buffer, struct utmp **result)
   return retval;
 }
 libc_hidden_def (__getutid_r)
+#if SHLIB_COMPAT(libc, GLIBC_2_0, UTMP_COMPAT_BASE)
+versioned_symbol (libc, __getutid_r, getutid_r, UTMP_COMPAT_BASE);
+#else
 weak_alias (__getutid_r, getutid_r)
+#endif
diff --git a/login/getutline.c b/login/getutline.c
index 34ea8611e2..dea5edffd8 100644
--- a/login/getutline.c
+++ b/login/getutline.c
@@ -18,7 +18,8 @@
 
 #include <stdlib.h>
 #include <utmp.h>
-
+#include <utmp-compat.h>
+#include <shlib-compat.h>
 
 /* Local buffer to store the result.  */
 libc_freeres_ptr (static struct utmp *buffer);
@@ -41,4 +42,8 @@ __getutline (const struct utmp *line)
   return result;
 }
 libc_hidden_def (__getutline)
+#if SHLIB_COMPAT(libc, GLIBC_2_0, UTMP_COMPAT_BASE)
+versioned_symbol (libc, __getutline, getutline, UTMP_COMPAT_BASE);
+#else
 weak_alias (__getutline, getutline)
+#endif
diff --git a/login/getutline_r.c b/login/getutline_r.c
index 41ad9ff12b..5caab54620 100644
--- a/login/getutline_r.c
+++ b/login/getutline_r.c
@@ -20,7 +20,8 @@
 #include <errno.h>
 #include <libc-lock.h>
 #include <utmp.h>
-
+#include <utmp-compat.h>
+#include <shlib-compat.h>
 #include "utmp-private.h"
 
 
@@ -43,4 +44,8 @@ __getutline_r (const struct utmp *line, struct utmp *buffer,
   return retval;
 }
 libc_hidden_def (__getutline_r)
+#if SHLIB_COMPAT(libc, GLIBC_2_0, UTMP_COMPAT_BASE)
+versioned_symbol (libc, __getutline_r, getutline_r, UTMP_COMPAT_BASE);
+#else
 weak_alias (__getutline_r, getutline_r)
+#endif
diff --git a/login/getutmp.c b/login/getutmp.c
index 3058a93d1b..d521e5e51e 100644
--- a/login/getutmp.c
+++ b/login/getutmp.c
@@ -21,6 +21,8 @@
 #define getutmpx __redirect_getutmpx
 #include <utmpx.h>
 #undef getutmpx
+#include <utmp-compat.h>
+#include <shlib-compat.h>
 
 #define CHECK_SIZE_AND_OFFSET(field) \
   _Static_assert (sizeof ((struct utmp){0}.field)		\
@@ -59,5 +61,11 @@ __getutmp (const struct utmpx *utmpx, struct utmp *utmp)
   utmp->ut_tv.tv_usec = utmpx->ut_tv.tv_usec;
 }
 
-weak_alias (__getutmp, getutmp)
+#if SHLIB_COMPAT(libc, GLIBC_2_0, UTMP_COMPAT_BASE)
+versioned_symbol (libc, __getutmp, getutmp, UTMP_COMPAT_BASE);
+strong_alias (__getutmp, __getutmpx)
+versioned_symbol (libc, __getutmpx, getutmpx, UTMP_COMPAT_BASE);
+#else
+strong_alias (__getutmp, getutmp)
 strong_alias (__getutmp, getutmpx)
+#endif
diff --git a/login/getutxent.c b/login/getutxent.c
index ca90a13d4b..505b2b6441 100644
--- a/login/getutxent.c
+++ b/login/getutxent.c
@@ -18,9 +18,16 @@
 
 #include <utmp.h>
 #include <utmpx.h>
+#include <utmp-compat.h>
+#include <shlib-compat.h>
 
 struct utmpx *
-getutxent (void)
+__getutxent (void)
 {
   return (struct utmpx *) __getutent ();
 }
+#if SHLIB_COMPAT(libc, GLIBC_2_0, UTMP_COMPAT_BASE)
+versioned_symbol (libc, __getutxent, getutxent, UTMP_COMPAT_BASE);
+#else
+weak_alias (__getutxent, getutxent)
+#endif
diff --git a/login/getutxid.c b/login/getutxid.c
index d53993f5e9..871aef11d8 100644
--- a/login/getutxid.c
+++ b/login/getutxid.c
@@ -18,9 +18,16 @@
 
 #include <utmp.h>
 #include <utmpx.h>
+#include <utmp-compat.h>
+#include <shlib-compat.h>
 
 struct utmpx *
-getutxid (const struct utmpx *id)
+__getutxid (const struct utmpx *id)
 {
   return (struct utmpx *) __getutid ((const struct utmp *) id);
 }
+#if SHLIB_COMPAT(libc, GLIBC_2_0, UTMP_COMPAT_BASE)
+versioned_symbol (libc, __getutxid, getutxid, UTMP_COMPAT_BASE);
+#else
+weak_alias (__getutxid, getutxid)
+#endif
diff --git a/login/getutxline.c b/login/getutxline.c
index f1d28211b0..d212217285 100644
--- a/login/getutxline.c
+++ b/login/getutxline.c
@@ -18,9 +18,16 @@
 
 #include <utmp.h>
 #include <utmpx.h>
+#include <utmp-compat.h>
+#include <shlib-compat.h>
 
 struct utmpx *
-getutxline (const struct utmpx *line)
+__getutxline (const struct utmpx *line)
 {
   return (struct utmpx *) __getutline ((const struct utmp *) line);
 }
+#if SHLIB_COMPAT(libc, GLIBC_2_0, UTMP_COMPAT_BASE)
+versioned_symbol (libc, __getutxline, getutxline, UTMP_COMPAT_BASE);
+#else
+weak_alias (__getutxline, getutxline)
+#endif
diff --git a/login/login.c b/login/login.c
index cc26d2982b..ca2a99210f 100644
--- a/login/login.c
+++ b/login/login.c
@@ -23,6 +23,8 @@
 #include <unistd.h>
 #include <stdlib.h>
 #include <utmp.h>
+#include <utmp-compat.h>
+#include <shlib-compat.h>
 
 
 /* Return the result of ttyname in the buffer pointed to by TTY, which should
@@ -78,7 +80,7 @@ tty_name (int fd, char **tty, size_t buf_len)
 }
 \f
 void
-login (const struct utmp *ut)
+__login (const struct utmp *ut)
 {
 #ifdef PATH_MAX
   char _tty[PATH_MAX + UT_LINESIZE];
@@ -137,3 +139,9 @@ login (const struct utmp *ut)
   /* Update the WTMP file.  Here we have to add a new entry.  */
   updwtmp (_PATH_WTMP, &copy);
 }
+hidden_def (__login)
+#if SHLIB_COMPAT(libutil, GLIBC_2_0, UTMP_COMPAT_BASE)
+versioned_symbol (libutil, __login, login, UTMP_COMPAT_BASE);
+#else
+weak_alias (__login, login)
+#endif
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/login32.c b/login/login32.c
similarity index 75%
rename from sysdeps/unix/sysv/linux/s390/s390-32/login32.c
rename to login/login32.c
index 22f908df88..6e451eb745 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/login32.c
+++ b/login/login32.c
@@ -1,5 +1,5 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
-   Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>.
+/* Write utmp and wtmp entries, 32-bit time compat version.
+   Copyright (C) 2008-2020 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
@@ -16,13 +16,14 @@
    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>
+#include <utmp-compat.h>
+#include <shlib-compat.h>
 
 #include "utmp32.h"
 #include "utmp-convert.h"
 
+#if SHLIB_COMPAT(libutil, GLIBC_2_0, UTMP_COMPAT_BASE)
 /* Write the given entry into utmp and wtmp.  */
 void
 login32 (const struct utmp32 *entry)
@@ -30,7 +31,8 @@ login32 (const struct utmp32 *entry)
   struct utmp in64;
 
   utmp_convert32to64 (entry, &in64);
-  login (&in64);
+  __login (&in64);
 }
 
-symbol_version (login32, login, GLIBC_2.0);
+compat_symbol (libutil, login32, login, GLIBC_2_0);
+#endif
diff --git a/login/pututxline.c b/login/pututxline.c
index eec8851d45..ddd6330811 100644
--- a/login/pututxline.c
+++ b/login/pututxline.c
@@ -18,9 +18,16 @@
 
 #include <utmp.h>
 #include <utmpx.h>
+#include <utmp-compat.h>
+#include <shlib-compat.h>
 
 struct utmpx *
-pututxline (const struct utmpx *utmpx)
+__pututxline (const struct utmpx *utmpx)
 {
   return (struct utmpx *) __pututline ((const struct utmp *) utmpx);
 }
+#if SHLIB_COMPAT(libc, GLIBC_2_0, UTMP_COMPAT_BASE)
+versioned_symbol (libc, __pututxline, pututxline, UTMP_COMPAT_BASE);
+#else
+weak_alias (__pututxline, pututxline)
+#endif
diff --git a/login/updwtmp.c b/login/updwtmp.c
index 489c28b553..715ef747d7 100644
--- a/login/updwtmp.c
+++ b/login/updwtmp.c
@@ -19,7 +19,8 @@
 #include <utmp.h>
 #include <string.h>
 #include <unistd.h>
-
+#include <utmp-compat.h>
+#include <shlib-compat.h>
 #include "utmp-private.h"
 
 #ifndef TRANSFORM_UTMP_FILE_NAME
@@ -41,4 +42,8 @@ __updwtmp (const char *wtmp_file, const struct utmp *utmp)
   __libc_updwtmp (file_name, utmp);
 }
 libc_hidden_def (__updwtmp)
+#if SHLIB_COMPAT(libc, GLIBC_2_0, UTMP_COMPAT_BASE)
+versioned_symbol (libc, __updwtmp, updwtmp, UTMP_COMPAT_BASE);
+#else
 weak_alias (__updwtmp, updwtmp)
+#endif
diff --git a/login/updwtmpx.c b/login/updwtmpx.c
index f95306b621..3f1dbb363b 100644
--- a/login/updwtmpx.c
+++ b/login/updwtmpx.c
@@ -18,9 +18,16 @@
 
 #include <utmp.h>
 #include <utmpx.h>
+#include <utmp-compat.h>
+#include <shlib-compat.h>
 
 void
-updwtmpx (const char *wtmpx_file, const struct utmpx *utmpx)
+__updwtmpx (const char *wtmpx_file, const struct utmpx *utmpx)
 {
   __updwtmp (wtmpx_file, (const struct utmp *) utmpx);
 }
+#if SHLIB_COMPAT(libc, GLIBC_2_0, UTMP_COMPAT_BASE)
+versioned_symbol (libc, __updwtmpx, updwtmpx, UTMP_COMPAT_BASE);
+#else
+weak_alias (__updwtmpx, updwtmpx)
+#endif
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h b/login/utmp-convert.h
similarity index 100%
rename from sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h
rename to login/utmp-convert.h
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c b/login/utmp32.c
similarity index 83%
rename from sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c
rename to login/utmp32.c
index e4b82512f6..7fecb3bdca 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c
+++ b/login/utmp32.c
@@ -1,5 +1,5 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
-   Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>.
+/* Compability symbols for utmp with 32-bit entry times.
+   Copyright (C) 2008-2020 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
@@ -24,6 +24,11 @@
 #include "utmp32.h"
 #include "utmp-convert.h"
 
+#include <utmp-compat.h>
+#include <shlib-compat.h>
+
+#if SHLIB_COMPAT(libc, GLIBC_2_0, UTMP_COMPAT_BASE)
+
 /* Allocate a static buffer to be returned to the caller.  As well as
    with the existing version of these functions the caller has to be
    aware that the contents of this buffer will change with subsequent
@@ -63,7 +68,7 @@ getutid32 (const struct utmp32 *id)
 {
   ACCESS_UTMP_ENTRY (__getutid, id)
 }
-symbol_version (getutid32, getutid, GLIBC_2.0);
+compat_symbol (libc, getutid32, getutid, GLIBC_2_0);
 
 /* Search forward from the current point in the utmp file until the
    next entry with a ut_line matching LINE->ut_line.  */
@@ -72,7 +77,7 @@ getutline32 (const struct utmp32 *line)
 {
   ACCESS_UTMP_ENTRY (__getutline, line)
 }
-symbol_version (getutline32, getutline, GLIBC_2.0);
+compat_symbol (libc, getutline32, getutline, GLIBC_2_0);
 
 /* Write out entry pointed to by UTMP_PTR into the utmp file.  */
 struct utmp32 *
@@ -80,7 +85,7 @@ pututline32 (const struct utmp32 *utmp_ptr)
 {
   ACCESS_UTMP_ENTRY (__pututline, utmp_ptr)
 }
-symbol_version (pututline32, pututline, GLIBC_2.0);
+compat_symbol (libc, pututline32, pututline, GLIBC_2_0);
 
 /* Read next entry from a utmp-like file.  */
 struct utmp32 *
@@ -96,10 +101,9 @@ getutent32 (void)
   utmp_convert64to32 (out64, out32);
   return out32;
 }
-symbol_version (getutent32, getutent, GLIBC_2.0);
+compat_symbol (libc, getutent32, getutent, GLIBC_2_0);
 
 /* Reentrant versions of the file for handling utmp files.  */
-
 int
 getutent32_r (struct utmp32 *buffer, struct utmp32 **result)
 {
@@ -119,11 +123,11 @@ getutent32_r (struct utmp32 *buffer, struct utmp32 **result)
 
   return 0;
 }
-symbol_version (getutent32_r, getutent_r, GLIBC_2.0);
+compat_symbol (libc, getutent32_r, getutent_r, GLIBC_2_0);
 
 int
 getutid32_r (const struct utmp32 *id, struct utmp32 *buffer,
-	       struct utmp32 **result)
+	     struct utmp32 **result)
 {
   struct utmp in64;
   struct utmp out64;
@@ -144,11 +148,11 @@ getutid32_r (const struct utmp32 *id, struct utmp32 *buffer,
 
   return 0;
 }
-symbol_version (getutid32_r, getutid_r, GLIBC_2.0);
+compat_symbol (libc, getutid32_r, getutid_r, GLIBC_2_0);
 
 int
 getutline32_r (const struct utmp32 *line,
-		 struct utmp32 *buffer, struct utmp32 **result)
+	       struct utmp32 *buffer, struct utmp32 **result)
 {
   struct utmp in64;
   struct utmp out64;
@@ -170,7 +174,7 @@ getutline32_r (const struct utmp32 *line,
   return 0;
 
 }
-symbol_version (getutline32_r, getutline_r, GLIBC_2.0);
+compat_symbol (libc, getutline32_r, getutline_r, GLIBC_2_0);
 
 /* Append entry UTMP to the wtmp-like file WTMP_FILE.  */
 void
@@ -181,4 +185,6 @@ updwtmp32 (const char *wtmp_file, const struct utmp32 *utmp)
   utmp_convert32to64 (utmp, &in32);
   __updwtmp (wtmp_file, &in32);
 }
-symbol_version (updwtmp32, updwtmp, GLIBC_2.0);
+compat_symbol (libc, updwtmp32, updwtmp, GLIBC_2_0);
+
+#endif /* SHLIB_COMPAT(libc, GLIBC_2_0, UTMP_COMPAT_BASE)   */
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/utmp32.h b/login/utmp32.h
similarity index 100%
rename from sysdeps/unix/sysv/linux/s390/s390-32/utmp32.h
rename to login/utmp32.h
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/utmpx-convert.h b/login/utmpx-convert.h
similarity index 100%
rename from sysdeps/unix/sysv/linux/s390/s390-32/utmpx-convert.h
rename to login/utmpx-convert.h
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.c b/login/utmpx32.c
similarity index 81%
rename from sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.c
rename to login/utmpx32.c
index 3f78fa62db..3ecd5b65f5 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.c
+++ b/login/utmpx32.c
@@ -1,5 +1,5 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
-   Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>.
+/* Compability symbols for utmpx with 32-bit entry times.
+   Copyright (C) 2008-2020 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
@@ -27,6 +27,11 @@
 #include "utmpx32.h"
 #include "utmpx-convert.h"
 
+#include <utmp-compat.h>
+#include <shlib-compat.h>
+
+#if SHLIB_COMPAT(libc, GLIBC_2_1, UTMP_COMPAT_BASE)
+
 /* Allocate a static buffer to be returned to the caller.  As well as
    with the existing version of these functions the caller has to be
    aware that the contents of this buffer will change with subsequent
@@ -75,7 +80,7 @@ getutxent32 (void)
   return out32;
 
 }
-symbol_version (getutxent32, getutxent, GLIBC_2.1);
+compat_symbol (libc, getutxent32, getutxent, GLIBC_2_1);
 
 /* Get the user accounting database entry corresponding to ID.  */
 struct utmpx32 *
@@ -83,7 +88,7 @@ getutxid32 (const struct utmpx32 *id)
 {
   ACCESS_UTMPX_ENTRY (__getutxid, id);
 }
-symbol_version (getutxid32, getutxid, GLIBC_2.1);
+compat_symbol (libc, getutxid32, getutxid, GLIBC_2_1);
 
 /* Get the user accounting database entry corresponding to LINE.  */
 struct utmpx32 *
@@ -91,7 +96,7 @@ getutxline32 (const struct utmpx32 *line)
 {
   ACCESS_UTMPX_ENTRY (__getutxline, line);
 }
-symbol_version (getutxline32, getutxline, GLIBC_2.1);
+compat_symbol (libc, getutxline32, getutxline, GLIBC_2_1);
 
 /* Write the entry UTMPX into the user accounting database.  */
 struct utmpx32 *
@@ -99,7 +104,7 @@ pututxline32 (const struct utmpx32 *utmpx)
 {
   ACCESS_UTMPX_ENTRY (__pututxline, utmpx);
 }
-symbol_version (pututxline32, pututxline, GLIBC_2.1);
+compat_symbol (libc, pututxline32, pututxline, GLIBC_2_1);
 
 /* Append entry UTMP to the wtmpx-like file WTMPX_FILE.  */
 void
@@ -110,7 +115,11 @@ updwtmpx32 (const char *wtmpx_file, const struct utmpx32 *utmpx)
   utmpx_convert32to64 (utmpx, &in64);
   __updwtmpx (wtmpx_file, &in64);
 }
-symbol_version (updwtmpx32, updwtmpx, GLIBC_2.1);
+compat_symbol (libc, updwtmpx32, updwtmpx, GLIBC_2_1);
+
+#endif /* SHLIB_COMPAT(libc, GLIBC_2_1_1, UTMP_COMPAT_BASE)   */
+
+#if SHLIB_COMPAT(libc, GLIBC_2_1_1, UTMP_COMPAT_BASE)
 
 /* Copy the information in UTMPX to UTMP.  */
 void
@@ -123,7 +132,7 @@ getutmp32 (const struct utmpx32 *utmpx, struct utmp32 *utmp)
   __getutmp (&in64, &out64);
   utmp_convert64to32 (&out64, utmp);
 }
-symbol_version (getutmp32, getutmp, GLIBC_2.1.1);
+compat_symbol (libc, getutmp32, getutmp, GLIBC_2_1_1);
 
 /* Copy the information in UTMP to UTMPX.  */
 void
@@ -136,4 +145,6 @@ getutmpx32 (const struct utmp32 *utmp, struct utmpx32 *utmpx)
   __getutmpx (&in64, &out64);
   utmpx_convert64to32 (&out64, utmpx);
 }
-symbol_version (getutmpx32, getutmpx, GLIBC_2.1.1);
+compat_symbol (libc, getutmpx32, getutmpx, GLIBC_2_1_1);
+
+#endif /* SHLIB_COMPAT(libc, GLIBC_2_1, UTMP_COMPAT_BASE)   */
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.h b/login/utmpx32.h
similarity index 100%
rename from sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.h
rename to login/utmpx32.h
diff --git a/sysdeps/generic/utmp-compat.h b/sysdeps/generic/utmp-compat.h
new file mode 100644
index 0000000000..122fd8905d
--- /dev/null
+++ b/sysdeps/generic/utmp-compat.h
@@ -0,0 +1,3 @@
+/* This macro defines the glibc version tag at which the 64 bit struct
+   utmp functions have been added to the 32 bit glibc.  */
+#define UTMP_COMPAT_BASE GLIBC_2_33
diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
index b4e39285d0..a9bbb5028d 100644
--- a/sysdeps/mach/hurd/i386/libc.abilist
+++ b/sysdeps/mach/hurd/i386/libc.abilist
@@ -2196,12 +2196,27 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/mach/hurd/i386/libutil.abilist b/sysdeps/mach/hurd/i386/libutil.abilist
index 1dd59e0afb..6d97d3cd5e 100644
--- a/sysdeps/mach/hurd/i386/libutil.abilist
+++ b/sysdeps/mach/hurd/i386/libutil.abilist
@@ -4,3 +4,4 @@ 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.33 login F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 54b707b9cc..9172a3347e 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -2164,9 +2164,24 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libutil.abilist b/sysdeps/unix/sysv/linux/aarch64/libutil.abilist
index 99889de22e..3c2d9a1c14 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libutil.abilist
@@ -4,3 +4,4 @@ GLIBC_2.17 login_tty F
 GLIBC_2.17 logout F
 GLIBC_2.17 logwtmp F
 GLIBC_2.17 openpty F
+GLIBC_2.33 login F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 9b429fd28f..bd217cb2c2 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2246,12 +2246,27 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/alpha/libutil.abilist b/sysdeps/unix/sysv/linux/alpha/libutil.abilist
index aa2d35b323..1bd22adb45 100644
--- a/sysdeps/unix/sysv/linux/alpha/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libutil.abilist
@@ -4,3 +4,4 @@ GLIBC_2.0 login_tty F
 GLIBC_2.0 logout F
 GLIBC_2.0 logwtmp F
 GLIBC_2.0 openpty F
+GLIBC_2.33 login F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 7ed5340364..898fd755ea 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -1924,9 +1924,24 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx F
diff --git a/sysdeps/unix/sysv/linux/arc/libutil.abilist b/sysdeps/unix/sysv/linux/arc/libutil.abilist
index 61f73bc34e..ea3c23b433 100644
--- a/sysdeps/unix/sysv/linux/arc/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libutil.abilist
@@ -4,3 +4,4 @@ GLIBC_2.32 login_tty F
 GLIBC_2.32 logout F
 GLIBC_2.32 logwtmp F
 GLIBC_2.32 openpty F
+GLIBC_2.33 login F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 3ec1cbdfbc..dd52296951 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -145,12 +145,27 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx F
 GLIBC_2.4 _Exit F
 GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
 GLIBC_2.4 _IO_2_1_stdin_ D 0xa0
diff --git a/sysdeps/unix/sysv/linux/arm/le/libutil.abilist b/sysdeps/unix/sysv/linux/arm/le/libutil.abilist
index cc1420e68c..ea54d58739 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libutil.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.33 login F
 GLIBC_2.4 forkpty F
 GLIBC_2.4 login F
 GLIBC_2.4 login_tty F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 301fd728d7..02636a8fa2 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -2108,9 +2108,24 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx F
diff --git a/sysdeps/unix/sysv/linux/csky/libutil.abilist b/sysdeps/unix/sysv/linux/csky/libutil.abilist
index cbd11999a4..165b86bcf8 100644
--- a/sysdeps/unix/sysv/linux/csky/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libutil.abilist
@@ -4,3 +4,4 @@ GLIBC_2.29 login_tty F
 GLIBC_2.29 logout F
 GLIBC_2.29 logwtmp F
 GLIBC_2.29 openpty F
+GLIBC_2.33 login F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 84834052e1..21912899a1 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2067,12 +2067,27 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/hppa/libutil.abilist b/sysdeps/unix/sysv/linux/hppa/libutil.abilist
index aa2d35b323..1bd22adb45 100644
--- a/sysdeps/unix/sysv/linux/hppa/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libutil.abilist
@@ -4,3 +4,4 @@ GLIBC_2.0 login_tty F
 GLIBC_2.0 logout F
 GLIBC_2.0 logwtmp F
 GLIBC_2.0 openpty F
+GLIBC_2.33 login F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index b82debaba4..77b0d47f2a 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2233,12 +2233,27 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/i386/libutil.abilist b/sysdeps/unix/sysv/linux/i386/libutil.abilist
index aa2d35b323..1bd22adb45 100644
--- a/sysdeps/unix/sysv/linux/i386/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libutil.abilist
@@ -4,3 +4,4 @@ GLIBC_2.0 login_tty F
 GLIBC_2.0 logout F
 GLIBC_2.0 logwtmp F
 GLIBC_2.0 openpty F
+GLIBC_2.33 login F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 475b7af1a5..7c84d98fcb 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -2099,12 +2099,27 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/ia64/libutil.abilist b/sysdeps/unix/sysv/linux/ia64/libutil.abilist
index aa2d35b323..1bd22adb45 100644
--- a/sysdeps/unix/sysv/linux/ia64/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libutil.abilist
@@ -4,3 +4,4 @@ GLIBC_2.0 login_tty F
 GLIBC_2.0 logout F
 GLIBC_2.0 logwtmp F
 GLIBC_2.0 openpty F
+GLIBC_2.33 login F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 29127e1341..421a82107f 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2179,12 +2179,27 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libutil.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libutil.abilist
index aa2d35b323..1bd22adb45 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libutil.abilist
@@ -4,3 +4,4 @@ GLIBC_2.0 login_tty F
 GLIBC_2.0 logout F
 GLIBC_2.0 logwtmp F
 GLIBC_2.0 openpty F
+GLIBC_2.33 login F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index e5b4cecacd..6ae7a8f5ba 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2159,9 +2159,24 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libutil.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libutil.abilist
index 0da0a40c22..2f16f5498a 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libutil.abilist
@@ -4,3 +4,4 @@ GLIBC_2.18 login_tty F
 GLIBC_2.18 logout F
 GLIBC_2.18 logwtmp F
 GLIBC_2.18 openpty F
+GLIBC_2.33 login F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index b9f56007a2..817b22b428 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2150,12 +2150,27 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libutil.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libutil.abilist
index aa2d35b323..1bd22adb45 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libutil.abilist
@@ -4,3 +4,4 @@ GLIBC_2.0 login_tty F
 GLIBC_2.0 logout F
 GLIBC_2.0 logwtmp F
 GLIBC_2.0 openpty F
+GLIBC_2.33 login F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libutil.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libutil.abilist
index aa2d35b323..1bd22adb45 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libutil.abilist
@@ -4,3 +4,4 @@ GLIBC_2.0 login_tty F
 GLIBC_2.0 logout F
 GLIBC_2.0 logwtmp F
 GLIBC_2.0 openpty F
+GLIBC_2.33 login F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index c161ef11b5..22772a572a 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2156,12 +2156,27 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index d4b1528e7a..310db16538 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2150,12 +2150,27 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 68fca4e650..ba11176736 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2197,9 +2197,24 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx F
diff --git a/sysdeps/unix/sysv/linux/nios2/libutil.abilist b/sysdeps/unix/sysv/linux/nios2/libutil.abilist
index 19608bd74d..348b707eee 100644
--- a/sysdeps/unix/sysv/linux/nios2/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libutil.abilist
@@ -4,3 +4,4 @@ GLIBC_2.21 login_tty F
 GLIBC_2.21 logout F
 GLIBC_2.21 logwtmp F
 GLIBC_2.21 openpty F
+GLIBC_2.33 login F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index bec34b2128..c599b985d1 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2206,12 +2206,27 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libutil.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libutil.abilist
index aa2d35b323..1bd22adb45 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libutil.abilist
@@ -4,3 +4,4 @@ GLIBC_2.0 login_tty F
 GLIBC_2.0 logout F
 GLIBC_2.0 logwtmp F
 GLIBC_2.0 openpty F
+GLIBC_2.33 login F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 35bd161c79..3362f3f6bb 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -2069,12 +2069,27 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf 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..41e5bf4a1f 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libutil.abilist
@@ -4,3 +4,4 @@ GLIBC_2.3 login_tty F
 GLIBC_2.3 logout F
 GLIBC_2.3 logwtmp F
 GLIBC_2.3 openpty F
+GLIBC_2.33 login F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index f1c8ad9cc5..aca57d0f38 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -2359,9 +2359,24 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx 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..3c2d9a1c14 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libutil.abilist
@@ -4,3 +4,4 @@ GLIBC_2.17 login_tty F
 GLIBC_2.17 logout F
 GLIBC_2.17 logwtmp F
 GLIBC_2.17 openpty F
+GLIBC_2.33 login F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index fdfc373871..d4e6f75078 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -2126,9 +2126,24 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libutil.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libutil.abilist
index cbfec8d46e..d9752a1da2 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libutil.abilist
@@ -4,3 +4,4 @@ GLIBC_2.27 login_tty F
 GLIBC_2.27 logout F
 GLIBC_2.27 logwtmp F
 GLIBC_2.27 openpty F
+GLIBC_2.33 login F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/getutent.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutent.c
deleted file mode 100644
index 615312ed39..0000000000
--- a/sysdeps/unix/sysv/linux/s390/s390-32/getutent.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
-   Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>.
-   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 <stdlib.h>
-#include <utmp.h>
-
-#include "utmp-compat.h"
-
-#if defined SHARED
-# undef weak_alias
-# define weak_alias(n,a)
-#endif
-#include "login/getutent.c"
-
-#if defined SHARED
-default_symbol_version (__getutent, getutent, UTMP_COMPAT_BASE);
-#endif
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/getutent_r.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutent_r.c
deleted file mode 100644
index 29d8c6a6f9..0000000000
--- a/sysdeps/unix/sysv/linux/s390/s390-32/getutent_r.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
-   Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>.
-   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 <libc-lock.h>
-#include <stdlib.h>
-#include <utmp.h>
-
-#include "utmp-compat.h"
-#include "utmp-private.h"
-
-#if defined SHARED
-weak_alias (__setutent, setutent)
-weak_alias (__endutent, endutent)
-
-# undef weak_alias
-# define weak_alias(n,a)
-#endif
-#include "login/getutent_r.c"
-
-#if defined SHARED
-default_symbol_version (__getutent_r, getutent_r, UTMP_COMPAT_BASE);
-default_symbol_version (__pututline, pututline, UTMP_COMPAT_BASE);
-#endif
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/getutid.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutid.c
deleted file mode 100644
index d3c63664df..0000000000
--- a/sysdeps/unix/sysv/linux/s390/s390-32/getutid.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
-   Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>.
-   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 <stdlib.h>
-#include <utmp.h>
-
-#include "utmp-compat.h"
-
-#if defined SHARED
-# undef weak_alias
-# define weak_alias(n,a)
-#endif
-#include "login/getutid.c"
-
-#if defined SHARED
-default_symbol_version (__getutid, getutid, UTMP_COMPAT_BASE);
-#endif
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/getutid_r.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutid_r.c
deleted file mode 100644
index e5511d406a..0000000000
--- a/sysdeps/unix/sysv/linux/s390/s390-32/getutid_r.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
-   Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>.
-   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 <libc-lock.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <utmp.h>
-
-#include "utmp-compat.h"
-#include "utmp-private.h"
-
-#if defined SHARED
-# undef weak_alias
-# define weak_alias(n,a)
-#endif
-#include "login/getutid_r.c"
-
-#if defined SHARED
-default_symbol_version (__getutid_r, getutid_r, UTMP_COMPAT_BASE);
-#endif
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/getutline.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutline.c
deleted file mode 100644
index 1c98cc5bba..0000000000
--- a/sysdeps/unix/sysv/linux/s390/s390-32/getutline.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
-   Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>.
-   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 <stdlib.h>
-#include <utmp.h>
-
-#include "utmp-compat.h"
-
-#if defined SHARED
-# undef weak_alias
-# define weak_alias(n,a)
-#endif
-#include "login/getutline.c"
-
-#if defined SHARED
-default_symbol_version (__getutline, getutline, UTMP_COMPAT_BASE);
-#endif
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/getutline_r.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutline_r.c
deleted file mode 100644
index f8b63342b4..0000000000
--- a/sysdeps/unix/sysv/linux/s390/s390-32/getutline_r.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
-   Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>.
-   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 <errno.h>
-#include <libc-lock.h>
-#include <utmp.h>
-
-#include "utmp-compat.h"
-#include "utmp-private.h"
-
-#if defined SHARED
-# undef weak_alias
-# define weak_alias(n,a)
-#endif
-#include "login/getutline_r.c"
-
-#if defined SHARED
-default_symbol_version (__getutline_r, getutline_r, UTMP_COMPAT_BASE);;
-#endif
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/getutmp.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutmp.c
deleted file mode 100644
index 50ce8c4f5c..0000000000
--- a/sysdeps/unix/sysv/linux/s390/s390-32/getutmp.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
-   Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>.
-   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/>.  */
-
-#undef weak_alias
-#define weak_alias(a, b)
-#undef strong_alias
-#define strong_alias(a, b)
-
-#include <login/getutmp.c>
-
-#include "utmp-compat.h"
-
-default_symbol_version (__getutmp, getutmp, UTMP_COMPAT_BASE);
-_strong_alias (__getutmp, __getutmpx)
-default_symbol_version (__getutmpx, getutmpx, UTMP_COMPAT_BASE);
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/getutxent.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutxent.c
deleted file mode 100644
index be887a672b..0000000000
--- a/sysdeps/unix/sysv/linux/s390/s390-32/getutxent.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
-   Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>.
-   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.h>
-#include <utmpx.h>
-
-#include "utmp-compat.h"
-
-#undef weak_alias
-#define weak_alias(n,a)
-#define getutxent __getutxent
-#include "login/getutxent.c"
-#undef getutxent
-
-default_symbol_version (__getutxent, getutxent, UTMP_COMPAT_BASE);
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/getutxid.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutxid.c
deleted file mode 100644
index 85febe277b..0000000000
--- a/sysdeps/unix/sysv/linux/s390/s390-32/getutxid.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
-   Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>.
-   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.h>
-#include <utmpx.h>
-
-#include "utmp-compat.h"
-
-#undef weak_alias
-#define weak_alias(n,a)
-#define getutxid __getutxid
-#include "login/getutxid.c"
-#undef getutxid
-
-default_symbol_version (__getutxid, getutxid, UTMP_COMPAT_BASE);
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/getutxline.c b/sysdeps/unix/sysv/linux/s390/s390-32/getutxline.c
deleted file mode 100644
index a69740a712..0000000000
--- a/sysdeps/unix/sysv/linux/s390/s390-32/getutxline.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
-   Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>.
-   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.h>
-#include <utmpx.h>
-
-#include "utmp-compat.h"
-
-#undef weak_alias
-#define weak_alias(n,a)
-#define getutxline __getutxline
-#include "login/getutxline.c"
-#undef getutxline
-
-default_symbol_version (__getutxline, getutxline, UTMP_COMPAT_BASE);
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/login.c b/sysdeps/unix/sysv/linux/s390/s390-32/login.c
deleted file mode 100644
index 25ee4a8b16..0000000000
--- a/sysdeps/unix/sysv/linux/s390/s390-32/login.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
-   Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>.
-   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 <assert.h>
-#include <errno.h>
-#include <limits.h>
-#include <string.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <utmp.h>
-
-#include "utmp-compat.h"
-
-#undef weak_alias
-#define weak_alias(n,a)
-#define login __login
-#include "login/login.c"
-#undef login
-
-default_symbol_version (__login, login, UTMP_COMPAT_BASE);
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/pututxline.c b/sysdeps/unix/sysv/linux/s390/s390-32/pututxline.c
deleted file mode 100644
index c8f773d9dc..0000000000
--- a/sysdeps/unix/sysv/linux/s390/s390-32/pututxline.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
-   Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>.
-   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.h>
-#include <utmpx.h>
-
-#include "utmp-compat.h"
-
-#undef weak_alias
-#define weak_alias(n,a)
-#define pututxline __pututxline
-#include "login/pututxline.c"
-#undef pututxline
-
-default_symbol_version (__pututxline, pututxline, UTMP_COMPAT_BASE);
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/updwtmp.c b/sysdeps/unix/sysv/linux/s390/s390-32/updwtmp.c
deleted file mode 100644
index 2079571cc1..0000000000
--- a/sysdeps/unix/sysv/linux/s390/s390-32/updwtmp.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
-   Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>.
-   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.h>
-
-#include "utmp-compat.h"
-#include "utmp-private.h"
-
-#if defined SHARED
-# undef weak_alias
-# define weak_alias(n,a)
-#endif
-#include <login/updwtmp.c>
-
-#if defined SHARED
-default_symbol_version (__updwtmp, updwtmp, UTMP_COMPAT_BASE);
-#endif
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/updwtmpx.c b/sysdeps/unix/sysv/linux/s390/s390-32/updwtmpx.c
deleted file mode 100644
index ce94139c3c..0000000000
--- a/sysdeps/unix/sysv/linux/s390/s390-32/updwtmpx.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
-   Contributed by Andreas Krebbel <Andreas.Krebbel@de.ibm.com>.
-   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.h>
-#include <utmpx.h>
-
-#include "utmp-compat.h"
-
-#undef weak_alias
-#define weak_alias(n,a)
-#define updwtmpx __updwtmpx
-#include "login/updwtmpx.c"
-#undef updwtmpx
-
-default_symbol_version (__updwtmpx, updwtmpx, UTMP_COMPAT_BASE);
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/utmp-compat.h b/sysdeps/unix/sysv/linux/s390/s390-32/utmp-compat.h
index 4e5972b65d..ef8115370c 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/utmp-compat.h
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/utmp-compat.h
@@ -18,4 +18,4 @@
 
 /* This macro defines the glibc version tag at which the 64 bit struct
    utmp functions have been added to the 32 bit glibc.  */
-#define UTMP_COMPAT_BASE GLIBC_2.9
+#define UTMP_COMPAT_BASE GLIBC_2_9
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index bd96aeaff7..0df18459dc 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -2105,12 +2105,27 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf 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..3f66f39bac 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libutil.abilist
@@ -4,3 +4,4 @@ GLIBC_2.2 login_tty F
 GLIBC_2.2 logout F
 GLIBC_2.2 logwtmp F
 GLIBC_2.2 openpty F
+GLIBC_2.33 login F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index b4cebb11dd..ea78226332 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2071,12 +2071,27 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libutil.abilist b/sysdeps/unix/sysv/linux/sh/le/libutil.abilist
index aa2d35b323..1bd22adb45 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libutil.abilist
@@ -4,3 +4,4 @@ GLIBC_2.0 login_tty F
 GLIBC_2.0 logout F
 GLIBC_2.0 logwtmp F
 GLIBC_2.0 openpty F
+GLIBC_2.33 login F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index f208405859..6f3a2df230 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2195,12 +2195,27 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libutil.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libutil.abilist
index aa2d35b323..1bd22adb45 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libutil.abilist
@@ -4,3 +4,4 @@ GLIBC_2.0 login_tty F
 GLIBC_2.0 logout F
 GLIBC_2.0 logwtmp F
 GLIBC_2.0 openpty F
+GLIBC_2.33 login F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 44e68aded2..b4e75bb47e 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -2122,12 +2122,27 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libutil.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libutil.abilist
index aa2d35b323..1bd22adb45 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libutil.abilist
@@ -4,3 +4,4 @@ GLIBC_2.0 login_tty F
 GLIBC_2.0 logout F
 GLIBC_2.0 logwtmp F
 GLIBC_2.0 openpty F
+GLIBC_2.33 login F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 51e76861f6..74c0c26ba5 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -2080,12 +2080,27 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk 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..7df76778a4 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libutil.abilist
@@ -4,3 +4,4 @@ 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.33 login F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index f83473c11f..3597a3ff88 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -2177,9 +2177,24 @@ GLIBC_2.33 fstat F
 GLIBC_2.33 fstat64 F
 GLIBC_2.33 fstatat F
 GLIBC_2.33 fstatat64 F
+GLIBC_2.33 getutent F
+GLIBC_2.33 getutent_r F
+GLIBC_2.33 getutid F
+GLIBC_2.33 getutid_r F
+GLIBC_2.33 getutline F
+GLIBC_2.33 getutline_r F
+GLIBC_2.33 getutmp F
+GLIBC_2.33 getutmpx F
+GLIBC_2.33 getutxent F
+GLIBC_2.33 getutxid F
+GLIBC_2.33 getutxline F
 GLIBC_2.33 lstat F
 GLIBC_2.33 lstat64 F
 GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
+GLIBC_2.33 pututline F
+GLIBC_2.33 pututxline F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.33 updwtmp F
+GLIBC_2.33 updwtmpx 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..9431f297d8 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libutil.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libutil.abilist
@@ -4,3 +4,4 @@ GLIBC_2.16 login_tty F
 GLIBC_2.16 logout F
 GLIBC_2.16 logwtmp F
 GLIBC_2.16 openpty F
+GLIBC_2.33 login F
-- 
2.25.1


  parent reply	other threads:[~2020-07-29 20:51 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-29 20:51 [PATCH 1/5] login: Consolidate utmp and utmpx headers Adhemerval Zanella via Libc-alpha
2020-07-29 20:51 ` [PATCH 2/5] login: Move gnu utmpx to default implementaion Adhemerval Zanella via Libc-alpha
2020-10-22  8:15   ` Lukasz Majewski
2020-10-22  9:16   ` Andreas Schwab
2020-07-29 20:51 ` Adhemerval Zanella via Libc-alpha [this message]
2020-07-29 21:17   ` [PATCH 3/5] login: Add 64-bit time support Joseph Myers
2020-07-30 12:34     ` Adhemerval Zanella via Libc-alpha
2020-08-02 19:02       ` Maciej W. Rozycki via Libc-alpha
2020-08-02 22:05         ` Adhemerval Zanella via Libc-alpha
2020-10-22  9:16   ` Lukasz Majewski
2020-07-29 20:51 ` [PATCH 4/5] login: User 64-bit time on struct lastlog Adhemerval Zanella via Libc-alpha
2020-07-29 21:04   ` Andreas Schwab
2020-07-29 21:14   ` Andreas Schwab
2020-07-30 12:39     ` Adhemerval Zanella via Libc-alpha
2020-07-30 16:19       ` Florian Weimer via Libc-alpha
2020-07-30 18:54         ` Joseph Myers
2020-07-30 21:53           ` Adhemerval Zanella via Libc-alpha
2020-07-31  0:31             ` Joseph Myers
2020-07-30 21:46         ` Adhemerval Zanella via Libc-alpha
2020-10-22  9:25   ` Lukasz Majewski
2020-07-29 20:51 ` [PATCH 5/5] Remove __WORDSIZE_TIME64_COMPAT32 Adhemerval Zanella via Libc-alpha
2020-10-22  9:31   ` Lukasz Majewski
2020-07-29 21:08 ` [PATCH 1/5] login: Consolidate utmp and utmpx headers Joseph Myers
2020-07-30 12:36   ` Adhemerval Zanella via Libc-alpha
2020-10-22  8:06 ` Lukasz Majewski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/libc/involved.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200729205117.2925113-3-adhemerval.zanella@linaro.org \
    --to=libc-alpha@sourceware.org \
    --cc=adhemerval.zanella@linaro.org \
    --cc=alistair.francis@wdc.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).