public inbox for glibc-cvs@sourceware.org
help / color / mirror / Atom feed
* [glibc/azanella/y2038] y2038: Add support for 64 bit time on legacy ABIs
@ 2021-06-08 20:49 Adhemerval Zanella
  0 siblings, 0 replies; 10+ messages in thread
From: Adhemerval Zanella @ 2021-06-08 20:49 UTC (permalink / raw)
  To: glibc-cvs

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=ca455098f73cc72394bd1ab3f132b69b2bdc8736

commit ca455098f73cc72394bd1ab3f132b69b2bdc8736
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Wed Feb 17 13:35:19 2021 -0300

    y2038: Add support for 64 bit time on legacy ABIs
    
    A new build flag, _TIME_BITS, enables the usage of the newer 64 bit
    time symbols for legacy ABI (where 32 bit time_t is default).  The 64
    bit time support is only enabled if LFS (_FILE_OFFSET_BITS=64) is
    also used.
    
    Different than LFS support, the y2038 symbols are added only for the
    required ABIs (armhf, csky, hppa, i386, m68k, microblaze, mips32,
    mips64-n32, nios2, powerpc32, sparc32, s390-32, and sh).  The ABIs with
    64 bit time support are unchanged, both for symbol and types
    redirection.
    
    On Linux the full 64 bit time support requires a minimum of kernel
    version v5.1.  Otherwise, the 32 bit fallbacks are used and might
    results in error with overflow return code (EOVERFLOW).
    
    The i686-gnu does not yet support 64 bit time.
    
    This patch exports following rediretions to support 64 bit time:
    
      * libc:
        adjtime
        adjtimex
        clock_adjtime
        clock_getres
        clock_gettime
        clock_nanosleep
        clock_settime
        cnd_timedwait
        ctime
        ctime_r
        difftime
        fstat
        fstatat
        futimens
        futimes
        futimesat
        getitimer
        getrusage
        gettimeofday
        gmtime
        gmtime_r
        localtime
        localtime_r
        lstat_time
        lutimes
        mktime
        msgctl
        mtx_timedlock
        nanosleep
        nanosleep
        ntp_gettime
        ntp_gettimex
        ppoll
        pselec
        pselect
        pthread_clockjoin_np
        pthread_cond_clockwait
        pthread_cond_timedwait
        pthread_mutex_clocklock
        pthread_mutex_timedlock
        pthread_rwlock_clockrdlock
        pthread_rwlock_clockwrlock
        pthread_rwlock_timedrdlock
        pthread_rwlock_timedwrlock
        pthread_timedjoin_np
        recvmmsg
        sched_rr_get_interval
        select
        sem_clockwait
        semctl
        semtimedop
        sem_timedwait
        setitimer
        settimeofday
        shmctl
        sigtimedwait
        stat
        thrd_sleep
        time
        timegm
        timerfd_gettime
        timerfd_settime
        timespec_get
        utime
        utimensat
        utimes
        utimes
        wait3
        wait4
    
      * librt:
        aio_suspend
        mq_timedreceive
        mq_timedsend
        timer_gettime
        timer_settime
    
      * libanl:
        gai_suspend
    
    Reviewed-by: Lukasz Majewski <lukma@denx.de>
    Reviewed-by: Carlos O'Donell <carlos@redhat.com>
    Tested-by: Carlos O'Donell <carlos@redhat.com>

Diff:
---
 Makefile                                           |   2 +-
 NEWS                                               |   5 +
 include/features-time64.h                          |   1 +
 include/features.h                                 |   2 +
 io/sys/poll.h                                      |  11 ++
 io/sys/stat.h                                      | 113 +++++++++++++++--
 io/utime.h                                         |  11 ++
 manual/creature.texi                               |  44 +++++++
 misc/sys/select.h                                  |  27 ++++
 nptl/pthread_clockjoin.c                           |   3 +-
 nptl/pthread_cond_wait.c                           |   9 +-
 nptl/pthread_mutex_timedlock.c                     |   8 +-
 nptl/pthread_rwlock_clockrdlock.c                  |   4 +-
 nptl/pthread_rwlock_clockwrlock.c                  |   4 +-
 nptl/pthread_rwlock_timedrdlock.c                  |   4 +-
 nptl/pthread_rwlock_timedwrlock.c                  |   4 +-
 nptl/pthread_timedjoin.c                           |   3 +-
 nptl/sem_clockwait.c                               |   3 +-
 nptl/sem_timedwait.c                               |   4 +-
 posix/sched.h                                      |  11 +-
 posix/sys/wait.h                                   |  20 +++
 resolv/netdb.h                                     |  11 ++
 resource/sys/resource.h                            |  10 ++
 rt/aio.h                                           |  15 ++-
 rt/mqueue.h                                        |  22 ++++
 signal/signal.h                                    |  13 ++
 socket/sys/socket.h                                |  11 ++
 sysdeps/generic/features-time64.h                  |  19 +++
 sysdeps/generic/time64-compat.h                    |   3 +
 sysdeps/nptl/pthread.h                             | 119 ++++++++++++++++++
 sysdeps/pthread/semaphore.h                        |  25 ++++
 sysdeps/pthread/threads.h                          |  33 +++++
 sysdeps/unix/sysv/linux/Makefile                   |   3 +
 sysdeps/unix/sysv/linux/Versions                   |  97 +++++++++++++++
 sysdeps/unix/sysv/linux/arm/be/libanl.abilist      |   1 +
 sysdeps/unix/sysv/linux/arm/be/libc.abilist        |  67 ++++++++++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist       |   5 +
 sysdeps/unix/sysv/linux/arm/le/libanl.abilist      |   1 +
 sysdeps/unix/sysv/linux/arm/le/libc.abilist        |  67 ++++++++++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist       |   5 +
 sysdeps/unix/sysv/linux/arm/time64-compat.h        |   2 +
 sysdeps/unix/sysv/linux/bits/msq.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/sem.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/shm.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/time.h                |  10 ++
 sysdeps/unix/sysv/linux/cnd_timedwait.c            |   8 +-
 sysdeps/unix/sysv/linux/csky/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/csky/libc.abilist          |  67 ++++++++++
 sysdeps/unix/sysv/linux/csky/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/csky/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/features-time64.h          |  37 ++++++
 sysdeps/unix/sysv/linux/hppa/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/hppa/libc.abilist          |  67 ++++++++++
 sysdeps/unix/sysv/linux/hppa/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/hppa/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/i386/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/i386/libc.abilist          |  67 ++++++++++
 sysdeps/unix/sysv/linux/i386/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/i386/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/include/sys/msg.h          |   2 -
 sysdeps/unix/sysv/linux/include/sys/shm.h          |   2 -
 sysdeps/unix/sysv/linux/include/sys/timex.h        |   2 +
 .../unix/sysv/linux/m68k/coldfire/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist |  67 ++++++++++
 .../unix/sysv/linux/m68k/coldfire/librt.abilist    |   5 +
 sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist |   1 +
 sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist   |  67 ++++++++++
 sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist  |   5 +
 sysdeps/unix/sysv/linux/m68k/time64-compat.h       |   2 +
 .../unix/sysv/linux/microblaze/be/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/microblaze/be/libc.abilist |  67 ++++++++++
 .../unix/sysv/linux/microblaze/be/librt.abilist    |   5 +
 .../unix/sysv/linux/microblaze/le/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/microblaze/le/libc.abilist |  67 ++++++++++
 .../unix/sysv/linux/microblaze/le/librt.abilist    |   5 +
 sysdeps/unix/sysv/linux/microblaze/time64-compat.h |   2 +
 .../unix/sysv/linux/mips/mips32/fpu/libc.abilist   |  67 ++++++++++
 sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist |   1 +
 sysdeps/unix/sysv/linux/mips/mips32/librt.abilist  |   5 +
 .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist |  67 ++++++++++
 .../unix/sysv/linux/mips/mips32/time64-compat.h    |   2 +
 .../unix/sysv/linux/mips/mips64/n32/libanl.abilist |   1 +
 .../unix/sysv/linux/mips/mips64/n32/libc.abilist   |  67 ++++++++++
 .../unix/sysv/linux/mips/mips64/n32/librt.abilist  |   5 +
 .../sysv/linux/mips/mips64/n32/time64-compat.h     |   2 +
 sysdeps/unix/sysv/linux/mtx_timedlock.c            |   8 +-
 sysdeps/unix/sysv/linux/nios2/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/nios2/libc.abilist         |  67 ++++++++++
 sysdeps/unix/sysv/linux/nios2/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/nios2/time64-compat.h      |   2 +
 .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist  |  67 ++++++++++
 .../sysv/linux/powerpc/powerpc32/libanl.abilist    |   1 +
 .../sysv/linux/powerpc/powerpc32/librt.abilist     |   5 +
 .../linux/powerpc/powerpc32/nofpu/libc.abilist     |  67 ++++++++++
 .../sysv/linux/powerpc/powerpc32/time64-compat.h   |   2 +
 .../unix/sysv/linux/s390/s390-32/libanl.abilist    |   1 +
 sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist  |  67 ++++++++++
 sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist |   5 +
 .../unix/sysv/linux/s390/s390-32/time64-compat.h   |   2 +
 sysdeps/unix/sysv/linux/semctl.c                   |   1 -
 sysdeps/unix/sysv/linux/sh/be/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/sh/be/libc.abilist         |  67 ++++++++++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/sh/le/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/sh/le/libc.abilist         |  67 ++++++++++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/sh/time64-compat.h         |   2 +
 .../unix/sysv/linux/sparc/sparc32/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist |  67 ++++++++++
 .../unix/sysv/linux/sparc/sparc32/librt.abilist    |   5 +
 .../unix/sysv/linux/sparc/sparc32/time64-compat.h  |   2 +
 sysdeps/unix/sysv/linux/sys/timerfd.h              |  22 ++++
 sysdeps/unix/sysv/linux/sys/timex.h                |  27 +++-
 sysvipc/sys/msg.h                                  |  10 ++
 sysvipc/sys/sem.h                                  |  21 ++++
 sysvipc/sys/shm.h                                  |  10 ++
 time/sys/time.h                                    |  71 +++++++++++
 time/time.h                                        | 138 ++++++++++++++++++++-
 118 files changed, 2387 insertions(+), 60 deletions(-)

diff --git a/Makefile b/Makefile
index 242d36de91..0157b53cb8 100644
--- a/Makefile
+++ b/Makefile
@@ -68,7 +68,7 @@ endif # $(AUTOCONF) = no
 		   subdir_objs subdir_stubs subdir_testclean		\
 		   $(addprefix install-, no-libc.a bin lib data headers others)
 \f
-headers := limits.h values.h features.h gnu-versions.h \
+headers := limits.h values.h features.h features-time64.h gnu-versions.h \
 	   bits/xopen_lim.h gnu/libc-version.h stdc-predef.h \
 	   bits/libc-header-start.h
 
diff --git a/NEWS b/NEWS
index 1bf3daa502..72115073fb 100644
--- a/NEWS
+++ b/NEWS
@@ -31,6 +31,11 @@ Major new features:
   __STDC_WANT_IEC_60559_BFP_EXT__, as specified in TS 18661-1, is
   defined, and when _GNU_SOURCE is defined.
 
+* Add support for 64 bit time_t for ABIs with defaults to 32 bit time_t.
+  This is enabled with the _TIME_BITS preprocessor set to 64 and only
+  supported when LFS (_FILE_OFFSET_BITS=64) is also enabled.  It is only
+  enabled for Linux and the full support requires a minimum version of 5.1.
+
 Deprecated and removed features, and other changes affecting compatibility:
 
 * The function pthread_mutex_consistent_np has been deprecated; programs
diff --git a/include/features-time64.h b/include/features-time64.h
new file mode 100644
index 0000000000..06115b7c86
--- /dev/null
+++ b/include/features-time64.h
@@ -0,0 +1 @@
+#include_next <features-time64.h>
diff --git a/include/features.h b/include/features.h
index fcd1a9502f..039bcb112b 100644
--- a/include/features.h
+++ b/include/features.h
@@ -389,6 +389,8 @@
 # define __USE_FILE_OFFSET64	1
 #endif
 
+#include <features-time64.h>
+
 #if defined _DEFAULT_SOURCE
 # define __USE_MISC	1
 #endif
diff --git a/io/sys/poll.h b/io/sys/poll.h
index 08f29df540..e640efb2bc 100644
--- a/io/sys/poll.h
+++ b/io/sys/poll.h
@@ -66,6 +66,17 @@ extern int ppoll (struct pollfd *__fds, nfds_t __nfds,
 		  const __sigset_t *__ss)
     __attr_access ((__write_only__, 1, 2));
 
+# ifdef __USE_TIME_BITS64
+#  ifdef __REDIRECT
+extern int __REDIRECT (ppoll, (struct pollfd *__fds, nfds_t __nfds,
+                               const struct timespec *__timeout,
+                               const __sigset_t *__ss),
+                       __ppoll64)
+    __attr_access ((__write_only__, 1, 2));
+#  else
+#  define ppoll __ppoll64
+#  endif
+# endif
 #endif
 
 __END_DECLS
diff --git a/io/sys/stat.h b/io/sys/stat.h
index 549375c087..f7874ec5ba 100644
--- a/io/sys/stat.h
+++ b/io/sys/stat.h
@@ -209,21 +209,51 @@ extern int stat (const char *__restrict __file,
    that file descriptor FD is open on and put them in BUF.  */
 extern int fstat (int __fd, struct stat *__buf) __THROW __nonnull ((2));
 #else
-# ifdef __REDIRECT_NTH
+# ifdef __USE_TIME_BITS64
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
+				  struct stat *__restrict __buf),
+				  __stat64_time64)
+     __nonnull ((1, 2));
+extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf),
+				   __fstat64_time64)
+     __nonnull ((2));
+#  else
+#   define stat __stat64_time64
+#   define fstat __fstat64_time64
+#  endif
+# else
+#  ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
 				  struct stat *__restrict __buf), stat64)
      __nonnull ((1, 2));
 extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf), fstat64)
      __nonnull ((2));
-# else
-#  define stat stat64
-#  define fstat fstat64
+#  else
+#   define stat stat64
+#   define fstat fstat64
+#  endif
 # endif
 #endif
 #ifdef __USE_LARGEFILE64
+# ifndef __USE_TIME_BITS64
 extern int stat64 (const char *__restrict __file,
 		   struct stat64 *__restrict __buf) __THROW __nonnull ((1, 2));
 extern int fstat64 (int __fd, struct stat64 *__buf) __THROW __nonnull ((2));
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (stat64, (const char *__restrict __file,
+				    struct stat64 *__restrict __buf),
+			   __stat64_time64)
+     __nonnull ((1, 2));
+extern int __REDIRECT_NTH (fstat64, (int __fd, struct stat64 *__buf),
+			   __fstat64_time64)
+     __nonnull ((2));
+#  else
+#   define stat64 __stat64_time64
+#   define fstat64 __fstat64_time
+#  endif
+# endif
 #endif
 
 #ifdef __USE_ATFILE
@@ -235,20 +265,44 @@ extern int fstatat (int __fd, const char *__restrict __file,
 		    struct stat *__restrict __buf, int __flag)
      __THROW __nonnull ((2, 3));
 # else
-#  ifdef __REDIRECT_NTH
+#  ifdef __USE_TIME_BITS64
+#   ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
 				     struct stat *__restrict __buf,
 				     int __flag),
-			   fstatat64) __nonnull ((2, 3));
+			   __fstatat64_time64) __nonnull ((2, 3));
+#   else
+#    define fstatat __fstatat64_time64
+#   endif
 #  else
-#   define fstatat fstatat64
+#   ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
+				     struct stat *__restrict __buf,
+				     int __flag),
+			   fstatat64) __nonnull ((2, 3));
+#   else
+#    define fstatat fstatat64
+#   endif
 #  endif
 # endif
 
 # ifdef __USE_LARGEFILE64
+#  ifndef __USE_TIME_BITS64
 extern int fstatat64 (int __fd, const char *__restrict __file,
 		      struct stat64 *__restrict __buf, int __flag)
      __THROW __nonnull ((2, 3));
+#  else
+#   ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (fstatat64, (int __fd,
+				       const char *__restrict __file,
+				       struct stat64 *__restrict __buf,
+				       int __flag),
+			   __fstatat64_time64)
+     __nonnull ((2, 3));
+#   else
+#    define fstatat64 __fstatat64_time64
+#   endif
+#  endif
 # endif
 #endif
 
@@ -259,19 +313,37 @@ extern int fstatat64 (int __fd, const char *__restrict __file,
 extern int lstat (const char *__restrict __file,
 		  struct stat *__restrict __buf) __THROW __nonnull ((1, 2));
 # else
-#  ifdef __REDIRECT_NTH
+#  ifdef __USE_TIME_BITS64
+#   ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (lstat,
 			   (const char *__restrict __file,
-			    struct stat *__restrict __buf), lstat64)
+			    struct stat *__restrict __buf), __lstat64_time64)
      __nonnull ((1, 2));
+#   else
+#    define lstat __lstat64_time64
+#   endif
 #  else
-#   define lstat lstat64
+#   ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (lstat,
+			   (const char *__restrict __file,
+			    struct stat *__restrict __buf), lstat64)
+     __nonnull ((1, 2));
+#   else
+#    define lstat lstat64
+#   endif
 #  endif
 # endif
 # ifdef __USE_LARGEFILE64
+#  ifndef __USE_TIME_BITS64
 extern int lstat64 (const char *__restrict __file,
 		    struct stat64 *__restrict __buf)
      __THROW __nonnull ((1, 2));
+#  else
+extern int __REDIRECT_NTH (lstat64, (const char *__restrict __file,
+				     struct stat64 *__restrict __buf),
+			   __lstat64_time64)
+     __nonnull ((1, 2));
+#  endif
 # endif
 #endif
 
@@ -355,17 +427,38 @@ extern int mkfifoat (int __fd, const char *__path, __mode_t __mode)
 #endif
 \f
 #ifdef __USE_ATFILE
+# ifndef __USE_TIME_BITS64
 /* Set file access and modification times relative to directory file
    descriptor.  */
 extern int utimensat (int __fd, const char *__path,
 		      const struct timespec __times[2],
 		      int __flags)
      __THROW __nonnull ((2));
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (utimensat, (int fd, const char *__path,
+                                       const struct timespec __times[2],
+                                       int flags),
+                           __utimensat64) __nonnull ((2));
+#  else
+#   define utimensat __utimensat64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_XOPEN2K8
+# ifndef __USE_TIME_BITS64
 /* Set file access and modification times of the file associated with FD.  */
 extern int futimens (int __fd, const struct timespec __times[2]) __THROW;
+
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (futimens, (int fd, const struct timespec __times[2]),
+                           __futimens64);
+#  else
+#   define futimens __futimens64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
diff --git a/io/utime.h b/io/utime.h
index c7612d0838..1a645a3fff 100644
--- a/io/utime.h
+++ b/io/utime.h
@@ -46,10 +46,21 @@ struct utimbuf
 
 /* Set the access and modification times of FILE to those given in
    *FILE_TIMES.  If FILE_TIMES is NULL, set them to the current time.  */
+#ifndef __USE_TIME_BITS64
 extern int utime (const char *__file,
 		  const struct utimbuf *__file_times)
      __THROW __nonnull ((1));
 
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (utime, (const char *__file,
+                                   const struct utimbuf *__file_times),
+                           __utime64);
+# else
+#  define utime __utime64
+# endif
+#endif
+
 __END_DECLS
 
 #endif /* utime.h */
diff --git a/manual/creature.texi b/manual/creature.texi
index 705a949089..9fa658e9a7 100644
--- a/manual/creature.texi
+++ b/manual/creature.texi
@@ -165,6 +165,50 @@ This macro was introduced as part of the Large File Support extension
 (LFS).
 @end defvr
 
+@defvr Macro _TIME_BITS
+This macro determines the bit size of @code{time_t} (and therefore the
+bit size of all @code{time_t} derived types and the prototypes of all
+related functions).  If @code{_TIME_BITS} is undefined, the bit size of
+@code{time_t} is architecture dependent.
+
+Possible values of @code{_TIME_BITS}:
+@enumerate
+@item
+@code{_TIME_BITS=64} and port from the outset uses 64-bit
+@code{time_t} and word size equals to @w{64 bits} (e.g. x86_64) - no
+action
+
+@item
+@code{_TIME_BITS=32} and port from the outset uses 32-bit
+@code{time_t} and word size equals to @w{64 bits} (e.g. ARM) - no
+action
+
+@item
+@code{_TIME_BITS=64} and port from the outset uses 64-bit
+@code{time_t} and word size equals to @w{32 bits} (e.g. ARC, RV32)
+- no action
+
+@item
+@code{_TIME_BITS=64} and port from the outset uses 32-bit
+@code{time_t} and word size equals to @w{32 bits} (e.g. ARM)
+- the @code{time_t} is modified to be able to hold 64-bit time.
+
+@item
+For any other use case the compile-time error is emitted.
+@end enumerate
+
+The @code{_TIME_BITS} can be only used when @code{_FILE_OFFSET_BITS=64}
+is also defined.
+
+For the point @b{4} above, calls to proper syscalls depend on the
+Linux kernel version on which the system is running. For Linux kernel
+version above @b{5.1} syscalls supporting 64-bit time are used. Otherwise,
+a fallback code is used with legacy (i.e. 32-bit) syscalls.
+
+By using this macro certain ports gain support for 64-bit time and as
+a result become immune to Y2038 problem.
+@end defvr
+
 @defvr Macro _ISOC99_SOURCE
 @standards{GNU, (none)}
 If this macro is defined, features from ISO C99 are included.  Since
diff --git a/misc/sys/select.h b/misc/sys/select.h
index 188a7fe607..e9c0e8fc20 100644
--- a/misc/sys/select.h
+++ b/misc/sys/select.h
@@ -98,10 +98,23 @@ __BEGIN_DECLS
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+#ifndef __USE_TIME_BITS64
 extern int select (int __nfds, fd_set *__restrict __readfds,
 		   fd_set *__restrict __writefds,
 		   fd_set *__restrict __exceptfds,
 		   struct timeval *__restrict __timeout);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (select,
+                       (int __nfds, fd_set *__restrict __readfds,
+                        fd_set *__restrict __writefds,
+                        fd_set *__restrict __exceptfds,
+                        struct timeval *__restrict __timeout),
+                       __select64);
+# else
+#  define select __select64
+# endif
+#endif
 
 #ifdef __USE_XOPEN2K
 /* Same as above only that the TIMEOUT value is given with higher
@@ -110,11 +123,25 @@ extern int select (int __nfds, fd_set *__restrict __readfds,
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int pselect (int __nfds, fd_set *__restrict __readfds,
 		    fd_set *__restrict __writefds,
 		    fd_set *__restrict __exceptfds,
 		    const struct timespec *__restrict __timeout,
 		    const __sigset_t *__restrict __sigmask);
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (pselect,
+                       (int __nfds, fd_set *__restrict __readfds,
+                        fd_set *__restrict __writefds,
+                        fd_set *__restrict __exceptfds,
+                        const struct timespec *__restrict __timeout,
+                        const __sigset_t *__restrict __sigmask),
+                       __pselect64);
+#  else
+#   define pselect __pselect64
+#  endif
+# endif
 #endif
 
 
diff --git a/nptl/pthread_clockjoin.c b/nptl/pthread_clockjoin.c
index f5007d7831..2d01ba03a2 100644
--- a/nptl/pthread_clockjoin.c
+++ b/nptl/pthread_clockjoin.c
@@ -36,7 +36,8 @@ ___pthread_clockjoin_np64 (pthread_t threadid, void **thread_return,
 #if __TIMESIZE == 64
 strong_alias (___pthread_clockjoin_np64, ___pthread_clockjoin_np)
 #else /* __TIMESPEC64 != 64 */
-libc_hidden_ver (___pthread_clockjoin_np64, __pthread_clockjoin_np64)
+strong_alias (___pthread_clockjoin_np64, __pthread_clockjoin_np64)
+libc_hidden_def (__pthread_clockjoin_np64)
 
 int
 ___pthread_clockjoin_np (pthread_t threadid, void **thread_return,
diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c
index 409a99ecb7..daba8600fe 100644
--- a/nptl/pthread_cond_wait.c
+++ b/nptl/pthread_cond_wait.c
@@ -647,10 +647,8 @@ ___pthread_cond_timedwait64 (pthread_cond_t *cond, pthread_mutex_t *mutex,
 #if __TIMESIZE == 64
 strong_alias (___pthread_cond_timedwait64, ___pthread_cond_timedwait)
 #else
-libc_hidden_ver (___pthread_cond_timedwait64, __pthread_cond_timedwait64)
-#ifndef SHARED
 strong_alias (___pthread_cond_timedwait64, __pthread_cond_timedwait64)
-#endif
+libc_hidden_def (__pthread_cond_timedwait64)
 
 int
 ___pthread_cond_timedwait (pthread_cond_t *cond, pthread_mutex_t *mutex,
@@ -688,9 +686,8 @@ ___pthread_cond_clockwait64 (pthread_cond_t *cond, pthread_mutex_t *mutex,
 #if __TIMESIZE == 64
 strong_alias (___pthread_cond_clockwait64, ___pthread_cond_clockwait)
 #else
-versioned_symbol (libc, ___pthread_cond_clockwait64,
-		  __pthread_cond_clockwait64, GLIBC_PRIVATE);
-libc_hidden_ver (___pthread_cond_clockwait64, __pthread_cond_clockwait64)
+strong_alias (___pthread_cond_clockwait64, __pthread_cond_clockwait64);
+libc_hidden_def (__pthread_cond_clockwait64)
 
 int
 ___pthread_cond_clockwait (pthread_cond_t *cond, pthread_mutex_t *mutex,
diff --git a/nptl/pthread_mutex_timedlock.c b/nptl/pthread_mutex_timedlock.c
index acd78131b2..5afd6222d6 100644
--- a/nptl/pthread_mutex_timedlock.c
+++ b/nptl/pthread_mutex_timedlock.c
@@ -585,7 +585,8 @@ ___pthread_mutex_clocklock64 (pthread_mutex_t *mutex,
 #if __TIMESIZE == 64
 strong_alias (___pthread_mutex_clocklock64, ___pthread_mutex_clocklock)
 #else /* __TIMESPEC64 != 64 */
-libc_hidden_ver (___pthread_mutex_clocklock64, __pthread_mutex_clocklock64)
+strong_alias (___pthread_mutex_clocklock64, __pthread_mutex_clocklock64)
+libc_hidden_def (__pthread_mutex_clocklock64)
 
 int
 ___pthread_mutex_clocklock (pthread_mutex_t *mutex,
@@ -618,9 +619,8 @@ ___pthread_mutex_timedlock64 (pthread_mutex_t *mutex,
 #if __TIMESIZE == 64
 strong_alias (___pthread_mutex_timedlock64, ___pthread_mutex_timedlock)
 #else /* __TIMESPEC64 != 64 */
-versioned_symbol (libc, ___pthread_mutex_timedlock64,
-		  __pthread_mutex_timedlock64, GLIBC_PRIVATE);
-libc_hidden_ver (___pthread_mutex_timedlock64, __pthread_mutex_timedlock64)
+strong_alias (___pthread_mutex_timedlock64, __pthread_mutex_timedlock64);
+libc_hidden_def (__pthread_mutex_timedlock64)
 
 int
 ___pthread_mutex_timedlock (pthread_mutex_t *mutex,
diff --git a/nptl/pthread_rwlock_clockrdlock.c b/nptl/pthread_rwlock_clockrdlock.c
index 9db96b9904..83ae1d1823 100644
--- a/nptl/pthread_rwlock_clockrdlock.c
+++ b/nptl/pthread_rwlock_clockrdlock.c
@@ -31,8 +31,8 @@ ___pthread_rwlock_clockrdlock64 (pthread_rwlock_t *rwlock, clockid_t clockid,
 #if __TIMESIZE == 64
 strong_alias (___pthread_rwlock_clockrdlock64, ___pthread_rwlock_clockrdlock)
 #else /* __TIMESPEC64 != 64 */
-libc_hidden_ver (___pthread_rwlock_clockrdlock64,
-		 __pthread_rwlock_clockrdlock64)
+strong_alias (___pthread_rwlock_clockrdlock64, __pthread_rwlock_clockrdlock64)
+libc_hidden_def (__pthread_rwlock_clockrdlock64)
 
 int
 ___pthread_rwlock_clockrdlock (pthread_rwlock_t *rwlock, clockid_t clockid,
diff --git a/nptl/pthread_rwlock_clockwrlock.c b/nptl/pthread_rwlock_clockwrlock.c
index ca0ebe2a65..08a2276da5 100644
--- a/nptl/pthread_rwlock_clockwrlock.c
+++ b/nptl/pthread_rwlock_clockwrlock.c
@@ -31,8 +31,8 @@ ___pthread_rwlock_clockwrlock64 (pthread_rwlock_t *rwlock, clockid_t clockid,
 #if __TIMESIZE == 64
 strong_alias (___pthread_rwlock_clockwrlock64, ___pthread_rwlock_clockwrlock)
 #else /* __TIMESPEC64 != 64 */
-libc_hidden_ver (___pthread_rwlock_clockwrlock64,
-		 __pthread_rwlock_clockwrlock64)
+strong_alias (___pthread_rwlock_clockwrlock64, __pthread_rwlock_clockwrlock64)
+libc_hidden_def (__pthread_rwlock_clockwrlock64)
 
 int
 ___pthread_rwlock_clockwrlock (pthread_rwlock_t *rwlock, clockid_t clockid,
diff --git a/nptl/pthread_rwlock_timedrdlock.c b/nptl/pthread_rwlock_timedrdlock.c
index dd9b7cb0a2..8c73af26fb 100644
--- a/nptl/pthread_rwlock_timedrdlock.c
+++ b/nptl/pthread_rwlock_timedrdlock.c
@@ -30,8 +30,8 @@ ___pthread_rwlock_timedrdlock64 (pthread_rwlock_t *rwlock,
 #if __TIMESIZE == 64
 strong_alias (___pthread_rwlock_timedrdlock64, ___pthread_rwlock_timedrdlock)
 #else /* __TIMESPEC64 != 64 */
-libc_hidden_ver (___pthread_rwlock_timedrdlock64,
-		 __pthread_rwlock_timedrdlock64)
+strong_alias (___pthread_rwlock_timedrdlock64, __pthread_rwlock_timedrdlock64)
+libc_hidden_def (__pthread_rwlock_timedrdlock64)
 
 int
 ___pthread_rwlock_timedrdlock (pthread_rwlock_t *rwlock,
diff --git a/nptl/pthread_rwlock_timedwrlock.c b/nptl/pthread_rwlock_timedwrlock.c
index e660a544cd..890da92968 100644
--- a/nptl/pthread_rwlock_timedwrlock.c
+++ b/nptl/pthread_rwlock_timedwrlock.c
@@ -30,8 +30,8 @@ ___pthread_rwlock_timedwrlock64 (pthread_rwlock_t *rwlock,
 #if __TIMESIZE == 64
 strong_alias (___pthread_rwlock_timedwrlock64, ___pthread_rwlock_timedwrlock)
 #else /* __TIMESPEC64 != 64 */
-libc_hidden_ver (___pthread_rwlock_timedwrlock64,
-		 __pthread_rwlock_timedwrlock64)
+strong_alias (___pthread_rwlock_timedwrlock64, __pthread_rwlock_timedwrlock64)
+libc_hidden_def (__pthread_rwlock_timedwrlock64)
 
 int
 ___pthread_rwlock_timedwrlock (pthread_rwlock_t *rwlock,
diff --git a/nptl/pthread_timedjoin.c b/nptl/pthread_timedjoin.c
index ebc31f935a..0b4026612f 100644
--- a/nptl/pthread_timedjoin.c
+++ b/nptl/pthread_timedjoin.c
@@ -31,7 +31,8 @@ ___pthread_timedjoin_np64 (pthread_t threadid, void **thread_return,
 #if __TIMESIZE == 64
 strong_alias (___pthread_timedjoin_np64, ___pthread_timedjoin_np)
 #else /* __TIMESPEC64 != 64 */
-libc_hidden_ver (___pthread_timedjoin_np64, __pthread_timedjoin_np64)
+strong_alias (___pthread_timedjoin_np64, __pthread_timedjoin_np64)
+libc_hidden_def (__pthread_timedjoin_np64)
 
 int
   ___pthread_timedjoin_np (pthread_t threadid, void **thread_return,
diff --git a/nptl/sem_clockwait.c b/nptl/sem_clockwait.c
index 2739799e26..19751aff04 100644
--- a/nptl/sem_clockwait.c
+++ b/nptl/sem_clockwait.c
@@ -49,7 +49,8 @@ ___sem_clockwait64 (sem_t *sem, clockid_t clockid,
 #if __TIMESIZE == 64
 strong_alias (___sem_clockwait64, ___sem_clockwait)
 #else /* __TIMESPEC64 != 64 */
-libc_hidden_ver (___sem_clockwait64, __sem_clockwait64)
+strong_alias (___sem_clockwait64, __sem_clockwait64)
+libc_hidden_def (__sem_clockwait64)
 
 int
 ___sem_clockwait (sem_t *sem, clockid_t clockid, const struct timespec *abstime)
diff --git a/nptl/sem_timedwait.c b/nptl/sem_timedwait.c
index 584546c706..5c8f37d3bb 100644
--- a/nptl/sem_timedwait.c
+++ b/nptl/sem_timedwait.c
@@ -45,10 +45,8 @@ ___sem_timedwait64 (sem_t *sem, const struct __timespec64 *abstime)
 #if __TIMESIZE == 64
 strong_alias (___sem_timedwait64, ___sem_timedwait)
 #else /* __TIMESPEC64 != 64 */
-libc_hidden_ver (___sem_timedwait64, __sem_timedwait64)
-#ifndef SHARED
 strong_alias (___sem_timedwait64, __sem_timedwait64)
-#endif
+libc_hidden_def (__sem_timedwait64)
 
 int
 ___sem_timedwait (sem_t *sem, const struct timespec *abstime)
diff --git a/posix/sched.h b/posix/sched.h
index d8ce08a3ea..7dd97a49b2 100644
--- a/posix/sched.h
+++ b/posix/sched.h
@@ -74,8 +74,17 @@ extern int sched_get_priority_max (int __algorithm) __THROW;
 extern int sched_get_priority_min (int __algorithm) __THROW;
 
 /* Get the SCHED_RR interval for the named process.  */
+#ifndef __USE_TIME_BITS64
 extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __THROW;
-
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (sched_rr_get_interval,
+                           (__pid_t __pid, struct timespec *__t),
+                           __sched_rr_get_interval64);
+# else
+#  define sched_rr_get_interval __sched_rr_get_interval64
+# endif
+#endif
 
 #ifdef __USE_GNU
 /* Access macros for `cpu_set'.  */
diff --git a/posix/sys/wait.h b/posix/sys/wait.h
index 9e7bb7f154..5325bfa4d2 100644
--- a/posix/sys/wait.h
+++ b/posix/sys/wait.h
@@ -144,14 +144,34 @@ struct rusage;
    nil, store information about the child's resource usage there.  If the
    WUNTRACED bit is set in OPTIONS, return status for stopped children;
    otherwise don't.  */
+# ifndef __USE_TIME_BITS64
 extern __pid_t wait3 (int *__stat_loc, int __options,
 		      struct rusage * __usage) __THROWNL;
+# else
+#  ifdef __REDIRECT_NTHNL
+extern __pid_t __REDIRECT_NTHNL (wait3, (int *__stat_loc, int __options,
+                                         struct rusage * __usage),
+                                 __wait3_time64);
+#  else
+#   define wait3 __wait3_time64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_MISC
+# ifndef __USE_TIME_BITS64
 /* PID is like waitpid.  Other args are like wait3.  */
 extern __pid_t wait4 (__pid_t __pid, int *__stat_loc, int __options,
 		      struct rusage *__usage) __THROWNL;
+# else
+#  ifdef __REDIRECT_NTHNL
+extern __pid_t __REDIRECT_NTHNL (wait4, (__pid_t __pid, int *__stat_loc,
+                                         int __options, struct rusage *__usage),
+                                 __wait4_time64);
+#  else
+#   define wait4 __wait4_time64
+#  endif
+# endif
 #endif /* Use misc.  */
 
 
diff --git a/resolv/netdb.h b/resolv/netdb.h
index 1f36f25d4a..9b242ce3d1 100644
--- a/resolv/netdb.h
+++ b/resolv/netdb.h
@@ -701,6 +701,17 @@ extern int getaddrinfo_a (int __mode, struct gaicb *__list[__restrict_arr],
 extern int gai_suspend (const struct gaicb *const __list[], int __ent,
 			const struct timespec *__timeout);
 
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (gai_suspend, (const struct gaicb *const __list[],
+                                     int __ent,
+                                     const struct timespec *__timeout),
+                       __gai_suspend_time64);
+#  else
+#   define gai_suspend __gai_suspend_time64
+#  endif
+# endif
+
 /* Get the error status of the request REQ.  */
 extern int gai_error (struct gaicb *__req) __THROW;
 
diff --git a/resource/sys/resource.h b/resource/sys/resource.h
index d30379d085..551d25e275 100644
--- a/resource/sys/resource.h
+++ b/resource/sys/resource.h
@@ -88,6 +88,16 @@ extern int setrlimit64 (__rlimit_resource_t __resource,
    and put it in *USAGE.  Returns 0 for success, -1 for failure.  */
 extern int getrusage (__rusage_who_t __who, struct rusage *__usage) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (getrusage, (__rusage_who_t __who,
+                                       struct rusage *__usage),
+                           __getrusage64);
+# else
+# define getrusage __getrusage64
+# endif
+#endif
+
 /* Return the highest priority of any process specified by WHICH and WHO
    (see above); if WHO is zero, the current process, process group, or user
    (as specified by WHO) is used.  A lower priority number means higher
diff --git a/rt/aio.h b/rt/aio.h
index 3a107b2783..72cf626690 100644
--- a/rt/aio.h
+++ b/rt/aio.h
@@ -193,12 +193,17 @@ extern __ssize_t __REDIRECT_NTH (aio_return, (struct aiocb *__aiocbp),
 extern int __REDIRECT_NTH (aio_cancel,
 			   (int __fildes, struct aiocb *__aiocbp),
 			   aio_cancel64);
-
+#  ifdef __USE_TIME_BITS64
+extern int __REDIRECT_NTH (aio_suspend,
+			   (const struct aiocb *const __list[], int __nent,
+			    const struct timespec *__restrict __timeout),
+			   __aio_suspend_time64) __nonnull ((1));
+#  else
 extern int __REDIRECT_NTH (aio_suspend,
 			   (const struct aiocb *const __list[], int __nent,
 			    const struct timespec *__restrict __timeout),
 			   aio_suspend64) __nonnull ((1));
-
+#  endif
 extern int __REDIRECT_NTH (aio_fsync,
 			   (int __operation, struct aiocb *__aiocbp),
 			   aio_fsync64) __nonnull ((2));
@@ -210,7 +215,11 @@ extern int __REDIRECT_NTH (aio_fsync,
 #  define aio_error aio_error64
 #  define aio_return aio_return64
 #  define aio_cancel aio_cancel64
-#  define aio_suspend aio_suspend64
+#  ifdef __USE_TIME_BITS64
+#   define aio_suspend __aio_suspend_time64
+#  else
+#   define aio_suspend aio_suspend64
+#  endif
 #  define aio_fsync aio_fsync64
 # endif
 #endif
diff --git a/rt/mqueue.h b/rt/mqueue.h
index 8a62d99f50..e8a85637e4 100644
--- a/rt/mqueue.h
+++ b/rt/mqueue.h
@@ -71,6 +71,7 @@ extern int mq_send (mqd_t __mqdes, const char *__msg_ptr, size_t __msg_len,
 		    unsigned int __msg_prio) __nonnull ((2));
 
 #ifdef __USE_XOPEN2K
+# ifndef __USE_TIME_BITS64
 /* Receive the oldest from highest priority messages in message queue
    MQDES, stop waiting if ABS_TIMEOUT expires.  */
 extern ssize_t mq_timedreceive (mqd_t __mqdes, char *__restrict __msg_ptr,
@@ -85,6 +86,27 @@ extern int mq_timedsend (mqd_t __mqdes, const char *__msg_ptr,
 			 size_t __msg_len, unsigned int __msg_prio,
 			 const struct timespec *__abs_timeout)
   __nonnull ((2, 5));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (mq_timedreceive, (mqd_t __mqdes,
+                               char *__restrict __msg_ptr,
+                               size_t __msg_len,
+                               unsigned int *__restrict __msg_prio,
+                               const struct timespec *__restrict __abs_timeout),
+                       __mq_timedreceive_time64)
+  __nonnull ((2, 5));
+
+extern int __REDIRECT (mq_timedsend, (mqd_t __mqdes,
+                       const char *__msg_ptr, size_t __msg_len,
+                       unsigned int __msg_prio,
+                       const struct timespec *__abs_timeout),
+		       __mq_timedsend_time64)
+  __nonnull ((2, 5));
+#  else
+#   define mq_timedreceive __mq_timedreceive_time64
+#   define mq_timedsend __mq_timedsend_time64
+#  endif
+# endif
 #endif
 
 /* Define some inlines helping to catch common problems.  */
diff --git a/signal/signal.h b/signal/signal.h
index b17203c99c..5fd93382fc 100644
--- a/signal/signal.h
+++ b/signal/signal.h
@@ -269,10 +269,23 @@ extern int sigwaitinfo (const sigset_t *__restrict __set,
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+#  ifndef __USE_TIME_BITS64
 extern int sigtimedwait (const sigset_t *__restrict __set,
 			 siginfo_t *__restrict __info,
 			 const struct timespec *__restrict __timeout)
      __nonnull ((1));
+#  else
+#   ifdef __REDIRECT
+extern int __REDIRECT (sigtimedwait,
+                       (const sigset_t *__restrict __set,
+                        siginfo_t *__restrict __info,
+                        const struct timespec *__restrict __timeout),
+                       __sigtimedwait64)
+     __nonnull ((1));
+#   else
+#    define sigtimedwait __sigtimedwait64
+#   endif
+#  endif
 
 /* Send signal SIG to the process PID.  Associate data in VAL with the
    signal.  */
diff --git a/socket/sys/socket.h b/socket/sys/socket.h
index 949851a6ce..5577e75b80 100644
--- a/socket/sys/socket.h
+++ b/socket/sys/socket.h
@@ -196,9 +196,20 @@ extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags);
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
 		     unsigned int __vlen, int __flags,
 		     struct timespec *__tmo);
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (recvmmsg, (int __fd, struct mmsghdr *__vmessages,
+                                  unsigned int __vlen, int __flags,
+                                  struct timespec *__tmo),
+                       __recvmmsg64);
+#  else
+#   define recvmmsg __recvmmsg64
+#  endif
+# endif
 #endif
 
 
diff --git a/sysdeps/generic/features-time64.h b/sysdeps/generic/features-time64.h
new file mode 100644
index 0000000000..a5a677f837
--- /dev/null
+++ b/sysdeps/generic/features-time64.h
@@ -0,0 +1,19 @@
+/* Features part to handle 64-bit time_t support.  Generic 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/>.  */
+
+/* The generic configuration only support _TIME_BITS=32.  */
diff --git a/sysdeps/generic/time64-compat.h b/sysdeps/generic/time64-compat.h
new file mode 100644
index 0000000000..e44b6b68e3
--- /dev/null
+++ b/sysdeps/generic/time64-compat.h
@@ -0,0 +1,3 @@
+/* Header included by Versions to generate the 64 bit time_t compat symbols.
+   Legacy ABIs with default 32 bit time support define TIME64_NON_DEFAULT to
+   generate the 64 bit symbols.  */
diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h
index 22e037dcb4..52e2eadbfc 100644
--- a/sysdeps/nptl/pthread.h
+++ b/sysdeps/nptl/pthread.h
@@ -221,6 +221,7 @@ extern int pthread_join (pthread_t __th, void **__thread_return);
    the thread in *THREAD_RETURN, if THREAD_RETURN is not NULL.  */
 extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __THROW;
 
+# ifndef __USE_TIME_BITS64
 /* Make calling thread wait for termination of the thread TH, but only
    until TIMEOUT.  The exit status of the thread is stored in
    *THREAD_RETURN, if THREAD_RETURN is not NULL.
@@ -240,6 +241,23 @@ extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
 extern int pthread_clockjoin_np (pthread_t __th, void **__thread_return,
                                  clockid_t __clockid,
 				 const struct timespec *__abstime);
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (pthread_timedjoin_np,
+                       (pthread_t __th, void **__thread_return,
+                        const struct timespec *__abstime),
+                       __pthread_timedjoin_np64);
+
+extern int __REDIRECT (pthread_clockjoin_np,
+                       (pthread_t __th, void **__thread_return,
+                        clockid_t __clockid,
+                        const struct timespec *__abstime),
+                       __pthread_clockjoin_np64);
+#  else
+#   define pthread_timedjoin_np __pthread_timedjoin_np64
+#   define pthread_clockjoin_np __pthread_clockjoin_np64
+#  endif
+# endif
 #endif
 
 /* Indicate that the thread TH is never to be joined with PTHREAD_JOIN.
@@ -776,16 +794,39 @@ extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
 
 #ifdef __USE_XOPEN2K
 /* Wait until lock becomes available, or specified time passes. */
+# ifndef __USE_TIME_BITS64
 extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
 				    const struct timespec *__restrict
 				    __abstime) __THROWNL __nonnull ((1, 2));
+# else
+#  ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_mutex_timedlock,
+                             (pthread_mutex_t *__restrict __mutex,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_mutex_timedlock64) __nonnull ((1, 2));
+#  else
+#   define pthread_mutex_timedlock __pthread_mutex_timedlock64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
+# ifndef __USE_TIME_BITS64
 extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex,
 				    clockid_t __clockid,
 				    const struct timespec *__restrict
 				    __abstime) __THROWNL __nonnull ((1, 3));
+# else
+#  ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_mutex_clocklock,
+                             (pthread_mutex_t *__restrict __mutex,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_mutex_clocklock64) __nonnull ((1, 3));
+#  else
+#   define pthread_mutex_clocklock __pthread_mutex_clocklock64
+#  endif
+# endif
 #endif
 
 /* Unlock a mutex.  */
@@ -939,16 +980,41 @@ extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
 
 # ifdef __USE_XOPEN2K
 /* Try to acquire read lock for RWLOCK or return after specfied time.  */
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 2));
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_timedrdlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_timedrdlock64)
+    __nonnull ((1, 2));
+#   else
+#    define pthread_rwlock_timedrdlock __pthread_rwlock_timedrdlock64
+#   endif
+#  endif
 # endif
 
 # ifdef __USE_GNU
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock,
 				       clockid_t __clockid,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 3));
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_clockrdlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_clockrdlock64)
+    __nonnull ((1, 3));
+#   else
+#    define pthread_rwlock_clockrdlock __pthread_rwlock_clockrdlock64
+#   endif
+#  endif
 # endif
 
 /* Acquire write lock for RWLOCK.  */
@@ -961,16 +1027,42 @@ extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
 
 # ifdef __USE_XOPEN2K
 /* Try to acquire write lock for RWLOCK or return after specfied time.  */
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 2));
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_timedwrlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_timedwrlock64)
+    __nonnull ((1, 2));
+#   else
+#    define pthread_rwlock_timedwrlock __pthread_rwlock_timedwrlock64
+#   endif
+#  endif
 # endif
 
 # ifdef __USE_GNU
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock,
 				       clockid_t __clockid,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 3));
+
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_clockwrlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_clockwrlock64)
+    __nonnull ((1, 3));
+#   else
+#    define pthread_rwlock_clockwrlock __pthread_rwlock_clockwrlock64
+#   endif
+#  endif
 # endif
 
 /* Unlock RWLOCK.  */
@@ -1047,10 +1139,23 @@ extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
 				   pthread_mutex_t *__restrict __mutex,
 				   const struct timespec *__restrict __abstime)
      __nonnull ((1, 2, 3));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (pthread_cond_timedwait,
+                       (pthread_cond_t *__restrict __cond,
+                        pthread_mutex_t *__restrict __mutex,
+                        const struct timespec *__restrict __abstime),
+                       __pthread_cond_timedwait64)
+     __nonnull ((1, 2, 3));
+#  else
+#   define pthread_cond_timedwait __pthread_cond_timedwait64
+#  endif
+# endif
 
 # ifdef __USE_GNU
 /* Wait for condition variable COND to be signaled or broadcast until
@@ -1060,11 +1165,25 @@ extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
 
    This function is a cancellation point and therefore not marked with
    __THROW. */
+#  ifndef __USE_TIME_BITS64
 extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond,
 				   pthread_mutex_t *__restrict __mutex,
 				   __clockid_t __clock_id,
 				   const struct timespec *__restrict __abstime)
      __nonnull ((1, 2, 4));
+#  else
+#   ifdef __REDIRECT
+extern int __REDIRECT (pthread_cond_clockwait,
+                       (pthread_cond_t *__restrict __cond,
+                        pthread_mutex_t *__restrict __mutex,
+                        __clockid_t __clock_id,
+                        const struct timespec *__restrict __abstime),
+                       __pthread_cond_clockwait64)
+     __nonnull ((1, 2, 4));
+#   else
+#    define pthread_cond_clockwait __pthread_cond_clockwait64
+#   endif
+#  endif
 # endif
 
 /* Functions for handling condition variable attributes.  */
diff --git a/sysdeps/pthread/semaphore.h b/sysdeps/pthread/semaphore.h
index 7fb0e5c103..35780e7c4e 100644
--- a/sysdeps/pthread/semaphore.h
+++ b/sysdeps/pthread/semaphore.h
@@ -59,16 +59,41 @@ extern int sem_wait (sem_t *__sem) __nonnull ((1));
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int sem_timedwait (sem_t *__restrict __sem,
 			  const struct timespec *__restrict __abstime)
   __nonnull ((1, 2));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (sem_timedwait,
+                       (sem_t *__restrict __sem,
+                        const struct timespec *__restrict __abstime),
+                        __sem_timedwait64)
+  __nonnull ((1, 2));
+#  else
+#   define sem_timedwait __sem_timedwait64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
+# ifndef __USE_TIME_BITS64
 extern int sem_clockwait (sem_t *__restrict __sem,
 			  clockid_t clock,
 			  const struct timespec *__restrict __abstime)
   __nonnull ((1, 3));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (sem_clockwait,
+                       (sem_t *__restrict __sem,
+                        clockid_t clock,
+                        const struct timespec *__restrict __abstime),
+                        __sem_clockwait64)
+  __nonnull ((1, 3));
+#  else
+#   define sem_clockwait __sem_clockwait64
+#  endif
+# endif
 #endif
 
 /* Test whether SEM is posted.  */
diff --git a/sysdeps/pthread/threads.h b/sysdeps/pthread/threads.h
index 46929a025e..bf251c9db4 100644
--- a/sysdeps/pthread/threads.h
+++ b/sysdeps/pthread/threads.h
@@ -88,8 +88,18 @@ extern thrd_t thrd_current (void);
    __TIME_POINT.  The current thread may resume if receives a signal.  In
    that case, if __REMAINING is not NULL, the remaining time is stored in
    the object pointed by it.  */
+#ifndef __USE_TIME_BITS64
 extern int thrd_sleep (const struct timespec *__time_point,
 		       struct timespec *__remaining);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (thrd_sleep, (const struct timespec *__time_point,
+                                    struct timespec *__remaining),
+                       __thrd_sleep64);
+# else
+#  define thrd_sleep __thrd_sleep64
+# endif
+#endif
 
 /* Terminate current thread execution, cleaning up any thread local
    storage and freeing resources.  Returns the value specified in __RES.  */
@@ -131,8 +141,19 @@ extern int mtx_lock (mtx_t *__mutex);
 /* Block the current thread until the mutex pointed by __MUTEX is unlocked
    or time pointed by __TIME_POINT is reached.  In case the mutex is unlock,
    the current thread will not be blocked.  */
+#ifndef __USE_TIME_BITS64
 extern int mtx_timedlock (mtx_t *__restrict __mutex,
 			  const struct timespec *__restrict __time_point);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (mtx_timedlock, (mtx_t *__restrict __mutex,
+                                       const struct timespec *__restrict
+                                       __time_point),
+                       __mtx_timedlock64);
+# else
+#  define mtx_timedlock __mtx_timedlock64
+# endif
+#endif
 
 /* Try to lock the mutex pointed by __MUTEX without blocking.  If the mutex
    is free the current threads takes control of it, otherwise it returns
@@ -171,9 +192,21 @@ extern int cnd_wait (cnd_t *__cond, mtx_t *__mutex);
 /* Block current thread on the condition variable until condition variable
    pointed by __COND is signaled or time pointed by __TIME_POINT is
    reached.  */
+#ifndef __USE_TIME_BITS64
 extern int cnd_timedwait (cnd_t *__restrict __cond,
 			  mtx_t *__restrict __mutex,
 			  const struct timespec *__restrict __time_point);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (cnd_timedwait, (cnd_t *__restrict __cond,
+                                       mtx_t *__restrict __mutex,
+                                       const struct timespec *__restrict
+                                       __time_point),
+                       __cnd_timedwait64);
+# else
+#  define cnd_timedwait __cnd_timedwait64
+# endif
+#endif
 
 /* Destroy condition variable pointed by __cond and free all of its
    resources.  */
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index 8b4d3a6a54..aedd02fd55 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -102,8 +102,11 @@ sysdep_headers += sys/mount.h sys/acct.h \
 		  bits/ipc-perm.h \
 		  bits/struct_stat.h \
 		  bits/struct_stat_time64_helper.h \
+		  bits/types/struct_msqid64_ds.h \
 		  bits/types/struct_msqid64_ds_helper.h \
+		  bits/types/struct_semid64_ds.h \
 		  bits/types/struct_semid64_ds_helper.h \
+		  bits/types/struct_shmid64_ds.h \
 		  bits/types/struct_shmid64_ds_helper.h
 
 tests += tst-clone tst-clone2 tst-clone3 tst-fanotify tst-personality \
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index 4637fd651d..c07e136be5 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -1,3 +1,4 @@
+%include <time64-compat.h>
 libc {
   GLIBC_2.0 {
     # functions used in inline functions or macros
@@ -185,6 +186,81 @@ libc {
     getdents64; gettid; tgkill;
   }
   GLIBC_2.32 {
+  }
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    __adjtime64;
+    ___adjtimex64;
+    __clock_adjtime64;
+    __clock_getres64;
+    __clock_gettime64;
+    __clock_nanosleep_time64;
+    __clock_settime64;
+    __cnd_timedwait64;
+    __ctime64;
+    __ctime64_r;
+    __difftime64;
+    __fstat64_time64;
+    __fstatat64_time64;
+    __futimens64;
+    __futimes64;
+    __futimesat64;
+    __getitimer64;
+    __getrusage64;
+    __gettimeofday64;
+    __gmtime64;
+    __gmtime64_r;
+    __localtime64;
+    __localtime64_r;
+    __lstat64_time64;
+    __lutimes64;
+    __mktime64;
+    __msgctl64;
+    __mtx_timedlock64;
+    __nanosleep64;
+    __nanosleep64;
+    __ntp_gettime64;
+    __ntp_gettimex64;
+    __ppoll64;
+    __pselec64;
+    __pselect64;
+    __pthread_clockjoin_np64;
+    __pthread_cond_clockwait64;
+    __pthread_cond_timedwait64;
+    __pthread_mutex_clocklock64;
+    __pthread_mutex_timedlock64;
+    __pthread_rwlock_clockrdlock64;
+    __pthread_rwlock_clockwrlock64;
+    __pthread_rwlock_timedrdlock64;
+    __pthread_rwlock_timedwrlock64;
+    __pthread_timedjoin_np64;
+    __recvmmsg64;
+    __sched_rr_get_interval64;
+    __select64;
+    __sem_clockwait64;
+    __semctl64;
+    __semtimedop64;
+    __sem_timedwait64;
+    __setitimer64;
+    __settimeofday64;
+    __shmctl64;
+    __sigtimedwait64;
+    __stat64_time64;
+    __thrd_sleep64;
+    __time64;
+    __timegm64;
+    __timerfd_gettime64;
+    __timerfd_settime64;
+    __timespec_get64;
+    __timespec_getres64;
+    __utime64;
+    __utimensat64;
+    __utimes64;
+    __utimes64;
+    __wait3_time64;
+    __wait4_time64;
+%endif
   }
   GLIBC_PRIVATE {
     # functions used in other libraries
@@ -205,3 +281,24 @@ ld {
     __nptl_change_stack_perm;
   }
 }
+
+librt {
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    __aio_suspend_time64;
+    __mq_timedsend_time64;
+    __mq_timedreceive_time64;
+    __timer_gettime64;
+    __timer_settime64;
+%endif
+  }
+}
+
+libanl {
+%ifdef TIME64_NON_DEFAULT
+  GLIBC_2.34 {
+    __gai_suspend_time64;
+  }
+%endif
+}
diff --git a/sysdeps/unix/sysv/linux/arm/be/libanl.abilist b/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index f66ee7aab1..1d32514579 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -190,16 +190,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libanl.abilist b/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 3798b32830..05d0878232 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -187,16 +187,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/arm/time64-compat.h b/sysdeps/unix/sysv/linux/arm/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/arm/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/bits/msq.h b/sysdeps/unix/sysv/linux/bits/msq.h
index 3313b69d78..7c9c479551 100644
--- a/sysdeps/unix/sysv/linux/bits/msq.h
+++ b/sysdeps/unix/sysv/linux/bits/msq.h
@@ -26,6 +26,7 @@ typedef __syscall_ulong_t msgqnum_t;
 typedef __syscall_ulong_t msglen_t;
 
 #include <bits/types/struct_msqid_ds.h>
+#include <bits/types/struct_msqid64_ds.h>
 
 /* Define options for message queue functions.  */
 #define MSG_NOERROR	010000	/* no error if message is too big */
diff --git a/sysdeps/unix/sysv/linux/bits/sem.h b/sysdeps/unix/sysv/linux/bits/sem.h
index ad13287e66..776524b876 100644
--- a/sysdeps/unix/sysv/linux/bits/sem.h
+++ b/sysdeps/unix/sysv/linux/bits/sem.h
@@ -22,6 +22,7 @@
 #include <sys/types.h>
 #include <bits/timesize.h>
 #include <bits/types/struct_semid_ds.h>
+#include <bits/types/struct_semid64_ds.h>
 
 /* Flags for `semop'.  */
 #define SEM_UNDO	0x1000		/* undo the operation on exit */
diff --git a/sysdeps/unix/sysv/linux/bits/shm.h b/sysdeps/unix/sysv/linux/bits/shm.h
index a50c79d7be..454fc3f366 100644
--- a/sysdeps/unix/sysv/linux/bits/shm.h
+++ b/sysdeps/unix/sysv/linux/bits/shm.h
@@ -43,6 +43,7 @@ __BEGIN_DECLS
 typedef __syscall_ulong_t shmatt_t;
 
 #include <bits/types/struct_shmid_ds.h>
+#include <bits/types/struct_shmid64_ds.h>
 
 #ifdef __USE_MISC
 
diff --git a/sysdeps/unix/sysv/linux/bits/time.h b/sysdeps/unix/sysv/linux/bits/time.h
index ee5a8b3ef4..d0c98a7864 100644
--- a/sysdeps/unix/sysv/linux/bits/time.h
+++ b/sysdeps/unix/sysv/linux/bits/time.h
@@ -77,6 +77,16 @@ __BEGIN_DECLS
 /* Tune a POSIX clock.  */
 extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (clock_adjtime, (__clockid_t __clock_id,
+                                           struct timex *__utx),
+                           __clock_adjtime64);
+# else
+# define clock_adjtime __clock_adjtime64
+# endif
+#endif
+
 __END_DECLS
 #endif /* use GNU */
 
diff --git a/sysdeps/unix/sysv/linux/cnd_timedwait.c b/sysdeps/unix/sysv/linux/cnd_timedwait.c
index 0415c683f9..6e8ce3d61b 100644
--- a/sysdeps/unix/sysv/linux/cnd_timedwait.c
+++ b/sysdeps/unix/sysv/linux/cnd_timedwait.c
@@ -21,8 +21,8 @@
 #include "thrd_priv.h"
 
 int
-___cnd_timedwait64 (cnd_t *restrict cond, mtx_t *restrict mutex,
-                    const struct __timespec64 *restrict time_point)
+__cnd_timedwait64 (cnd_t *restrict cond, mtx_t *restrict mutex,
+                   const struct __timespec64 *restrict time_point)
 {
   int err_code = __pthread_cond_timedwait64 ((pthread_cond_t *) cond,
                                              (pthread_mutex_t *) mutex,
@@ -31,9 +31,9 @@ ___cnd_timedwait64 (cnd_t *restrict cond, mtx_t *restrict mutex,
 }
 
 #if __TIMESIZE == 64
-strong_alias (___cnd_timedwait64, ___cnd_timedwait)
+strong_alias (__cnd_timedwait64, ___cnd_timedwait)
 #else
-libc_hidden_ver (___cnd_timedwait64, __cnd_timedwait64)
+libc_hidden_def (__cnd_timedwait64)
 
 int
 ___cnd_timedwait (cnd_t *restrict cond, mtx_t *restrict mutex,
diff --git a/sysdeps/unix/sysv/linux/csky/libanl.abilist b/sysdeps/unix/sysv/linux/csky/libanl.abilist
index 416a6f8ddb..01f2e6cbf0 100644
--- a/sysdeps/unix/sysv/linux/csky/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.29 gai_cancel F
 GLIBC_2.29 gai_error F
 GLIBC_2.29 gai_suspend F
 GLIBC_2.29 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index ba53b61ea6..ac9f009f38 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -2277,16 +2277,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index c6690ef7c1..b60deca65a 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.29 timer_delete F
 GLIBC_2.29 timer_getoverrun F
 GLIBC_2.29 timer_gettime F
 GLIBC_2.29 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/csky/time64-compat.h b/sysdeps/unix/sysv/linux/csky/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/csky/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/features-time64.h b/sysdeps/unix/sysv/linux/features-time64.h
new file mode 100644
index 0000000000..c6a0a1874c
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/features-time64.h
@@ -0,0 +1,37 @@
+/* Features part to handle 64-bit time_t support.
+   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/>.  */
+
+/* We need to know the word size in order to check the time size.  */
+#include <bits/wordsize.h>
+#include <bits/timesize.h>
+
+#if defined _TIME_BITS
+# if _TIME_BITS == 64
+#  if ! defined (_FILE_OFFSET_BITS) || _FILE_OFFSET_BITS != 64
+#   error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64"
+#  elif __TIMESIZE == 32
+#   define __USE_TIME_BITS64	1
+#  endif
+# elif _TIME_BITS == 32
+#  if __TIMESIZE > 32
+#   error "_TIME_BITS=32 is not compatible with __TIMESIZE > 32"
+#  endif
+# else
+#  error Invalid _TIME_BITS value (can only be 32 or 64 bits)
+# endif
+#endif
diff --git a/sysdeps/unix/sysv/linux/hppa/libanl.abilist b/sysdeps/unix/sysv/linux/hppa/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/hppa/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 9783504c93..d2770a4874 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2231,16 +2231,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/hppa/time64-compat.h b/sysdeps/unix/sysv/linux/hppa/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/hppa/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/i386/libanl.abilist b/sysdeps/unix/sysv/linux/i386/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/i386/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index c223c360ff..eb20d66c28 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2414,17 +2414,84 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __isnanf128 F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/i386/time64-compat.h b/sysdeps/unix/sysv/linux/i386/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/include/sys/msg.h b/sysdeps/unix/sysv/linux/include/sys/msg.h
index 522903f818..c460be0dc9 100644
--- a/sysdeps/unix/sysv/linux/include/sys/msg.h
+++ b/sysdeps/unix/sysv/linux/include/sys/msg.h
@@ -7,8 +7,6 @@ extern ssize_t __libc_msgrcv (int msqid, void *msgp, size_t msgsz,
 extern int __libc_msgsnd (int msqid, const void *msgp, size_t msgsz,
 			  int msgflg);
 
-# include <bits/types/struct_msqid64_ds.h>
-
 # if __TIMESIZE == 64
 #  define __msgctl64 __msgctl
 # else
diff --git a/sysdeps/unix/sysv/linux/include/sys/shm.h b/sysdeps/unix/sysv/linux/include/sys/shm.h
index 530a1cdfc9..85177a632d 100644
--- a/sysdeps/unix/sysv/linux/include/sys/shm.h
+++ b/sysdeps/unix/sysv/linux/include/sys/shm.h
@@ -3,8 +3,6 @@
 
 #ifndef _ISOMAC
 
-# include <bits/types/struct_shmid64_ds.h>
-
 # if __TIMESIZE == 64
 #  define __shmctl64 __shmctl
 # else
diff --git a/sysdeps/unix/sysv/linux/include/sys/timex.h b/sysdeps/unix/sysv/linux/include/sys/timex.h
index e136ed172e..c554248ed9 100644
--- a/sysdeps/unix/sysv/linux/include/sys/timex.h
+++ b/sysdeps/unix/sysv/linux/include/sys/timex.h
@@ -23,10 +23,12 @@
 
 # ifndef _ISOMAC
 
+extern int __adjtimex (struct timex *__ntx);
 libc_hidden_proto (__adjtimex)
 
 #  include <time.h>
 #  include <struct___timeval64.h>
+
 /* Local definition of 64 bit time supporting timex struct */
 #  if __TIMESIZE == 64
 #   define __timex64 timex
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 3cb4279b41..044cec51fc 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -191,16 +191,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 94a718ff58..3a6463a3ef 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2358,16 +2358,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/m68k/time64-compat.h b/sysdeps/unix/sysv/linux/m68k/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/m68k/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
index 67c7554803..c06e33a1cf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.18 gai_cancel F
 GLIBC_2.18 gai_error F
 GLIBC_2.18 gai_suspend F
 GLIBC_2.18 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 5823bf18ef..612d7f1c58 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2328,16 +2328,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index 889dfbc0ee..1b8fc10087 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timer_gettime F
 GLIBC_2.18 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
index 67c7554803..c06e33a1cf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.18 gai_cancel F
 GLIBC_2.18 gai_error F
 GLIBC_2.18 gai_suspend F
 GLIBC_2.18 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 723c4bcb09..685cb974c3 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2325,16 +2325,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 889dfbc0ee..1b8fc10087 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timer_gettime F
 GLIBC_2.18 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/time64-compat.h b/sysdeps/unix/sysv/linux/microblaze/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/microblaze/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index f67da8f37a..d17b5a02a5 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2323,16 +2323,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index 1539c1cef9..c4dd28e3b2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index e44a6be8aa..aba6bd2e3c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2321,16 +2321,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h b/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 21cbe39166..88d8e2af38 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2329,16 +2329,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index 1539c1cef9..c4dd28e3b2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h b/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/mtx_timedlock.c b/sysdeps/unix/sysv/linux/mtx_timedlock.c
index 7715ebb315..8983eb8556 100644
--- a/sysdeps/unix/sysv/linux/mtx_timedlock.c
+++ b/sysdeps/unix/sysv/linux/mtx_timedlock.c
@@ -21,8 +21,8 @@
 #include "thrd_priv.h"
 
 int
-___mtx_timedlock64 (mtx_t *restrict mutex,
-                    const struct __timespec64 *restrict time_point)
+__mtx_timedlock64 (mtx_t *restrict mutex,
+                   const struct __timespec64 *restrict time_point)
 {
   int err_code = __pthread_mutex_timedlock64 ((pthread_mutex_t *)mutex,
                                               time_point);
@@ -30,9 +30,9 @@ ___mtx_timedlock64 (mtx_t *restrict mutex,
 }
 
 #if __TIMESIZE == 64
-strong_alias (___mtx_timedlock64, ___mtx_timedlock)
+strong_alias (__mtx_timedlock64, ___mtx_timedlock)
 #else
-libc_hidden_ver (___mtx_timedlock64, __mtx_timedlock64)
+libc_hidden_def (__mtx_timedlock64)
 
 int
 ___mtx_timedlock (mtx_t *restrict mutex,
diff --git a/sysdeps/unix/sysv/linux/nios2/libanl.abilist b/sysdeps/unix/sysv/linux/nios2/libanl.abilist
index 6ff9c2d94e..6b080bd075 100644
--- a/sysdeps/unix/sysv/linux/nios2/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.21 gai_cancel F
 GLIBC_2.21 gai_error F
 GLIBC_2.21 gai_suspend F
 GLIBC_2.21 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 9429209215..3b64e2cf51 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2367,16 +2367,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index b4ae7a2dc2..2458614125 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.21 timer_delete F
 GLIBC_2.21 timer_getoverrun F
 GLIBC_2.21 timer_gettime F
 GLIBC_2.21 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/time64-compat.h b/sysdeps/unix/sysv/linux/nios2/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/nios2/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index eaca8e4b0c..5404fdea4a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2385,16 +2385,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index c754a181da..506fa3619f 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2418,16 +2418,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 963e27571d..99b6d6d1ce 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2383,16 +2383,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h b/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/semctl.c b/sysdeps/unix/sysv/linux/semctl.c
index 1043b2b80d..bb2690d30f 100644
--- a/sysdeps/unix/sysv/linux/semctl.c
+++ b/sysdeps/unix/sysv/linux/semctl.c
@@ -21,7 +21,6 @@
 #include <ipc_priv.h>
 #include <sysdep.h>
 #include <shlib-compat.h>
-#include <bits/types/struct_semid64_ds.h>  /* For __semid64_ds.  */
 #include <linux/posix_types.h>             /* For __kernel_mode_t.  */
 
 /* The struct used to issue the syscall.  For architectures that assume
diff --git a/sysdeps/unix/sysv/linux/sh/be/libanl.abilist b/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 456abfb5bb..68a631b161 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2238,16 +2238,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libanl.abilist b/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 45e59f1821..61a29e643a 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2235,16 +2235,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sh/time64-compat.h b/sysdeps/unix/sysv/linux/sh/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sh/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 734e1f38b6..fa3ae954c1 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2376,16 +2376,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index 38f0aad791..fb2769e87b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -34,6 +34,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h b/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/sys/timerfd.h b/sysdeps/unix/sysv/linux/sys/timerfd.h
index 4ad64c2259..790b9d5be6 100644
--- a/sysdeps/unix/sysv/linux/sys/timerfd.h
+++ b/sysdeps/unix/sysv/linux/sys/timerfd.h
@@ -47,9 +47,31 @@ extern int timerfd_settime (int __ufd, int __flags,
 			    const struct itimerspec *__utmr,
 			    struct itimerspec *__otmr) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timerfd_settime,
+                           (int __ufd, int __flags,
+                            const struct itimerspec *__restrict __value,
+                            struct itimerspec *__restrict __ovalue),
+                           __timerfd_settime64);
+# else
+# define timerfd_settime __timerfd_settime64
+# endif
+#endif
+
 /* Return the next expiration time of UFD.  */
 extern int timerfd_gettime (int __ufd, struct itimerspec *__otmr) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timerfd_gettime, (int __ufd,
+                                             struct itimerspec *__otmr),
+                           __timerfd_gettime64);
+# else
+# define timerfd_gettime __timerfd_gettime64
+# endif
+#endif
+
 __END_DECLS
 
 #endif /* sys/timerfd.h */
diff --git a/sysdeps/unix/sysv/linux/sys/timex.h b/sysdeps/unix/sysv/linux/sys/timex.h
index eb8d15a806..e17265c607 100644
--- a/sysdeps/unix/sysv/linux/sys/timex.h
+++ b/sysdeps/unix/sysv/linux/sys/timex.h
@@ -54,17 +54,34 @@ struct ntptimeval
 
 __BEGIN_DECLS
 
-extern int __adjtimex (struct timex *__ntx) __THROW;
+#ifndef __USE_TIME_BITS64
 extern int adjtimex (struct timex *__ntx) __THROW;
 extern int ntp_gettimex (struct ntptimeval *__ntv) __THROW;
 
-#ifdef __REDIRECT_NTH
+# ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv),
-			   ntp_gettimex);
+                           ntp_gettimex);
+# else
+#  define ntp_gettime ntp_gettimex
+# endif
+extern int ntp_adjtime (struct timex *__tntx) __THROW;
 #else
-# define ntp_gettime ntp_gettimex
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (adjtimex, (struct timex *__ntx),
+                           ___adjtimex64);
+extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv),
+                           __ntp_gettime64);
+extern int __REDIRECT_NTH (ntp_gettimex, (struct ntptimeval *__ntv),
+                           __ntp_gettimex64);
+extern int __REDIRECT_NTH (ntp_adjtime, (struct timex *__ntx),
+                           ___adjtimex64);
+# else
+#  define adjtimex ___adjtimex64
+#  define ntp_adjtime ___adjtimex64
+#  define ntp_gettime __ntp_gettime64
+#  define ntp_gettimex __ntp_gettimex64
+# endif
 #endif
-extern int ntp_adjtime (struct timex *__tntx) __THROW;
 
 __END_DECLS
 
diff --git a/sysvipc/sys/msg.h b/sysvipc/sys/msg.h
index 9ddedf5e15..f31a43757d 100644
--- a/sysvipc/sys/msg.h
+++ b/sysvipc/sys/msg.h
@@ -58,7 +58,17 @@ struct msgbuf
 __BEGIN_DECLS
 
 /* Message queue control operation.  */
+#ifndef __USE_TIME_BITS64
 extern int msgctl (int __msqid, int __cmd, struct msqid_ds *__buf) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (msgctl,
+                           (int __msqid, int __cmd, struct msqid_ds *__buf),
+                           __msgctl64);
+# else
+#  define msgctl __msgctl64
+# endif
+#endif
 
 /* Get messages queue.  */
 extern int msgget (key_t __key, int __msgflg) __THROW;
diff --git a/sysvipc/sys/sem.h b/sysvipc/sys/sem.h
index 03b65dff21..4eb4c51bbe 100644
--- a/sysvipc/sys/sem.h
+++ b/sysvipc/sys/sem.h
@@ -48,7 +48,17 @@ struct sembuf
 __BEGIN_DECLS
 
 /* Semaphore control operation.  */
+#ifndef __USE_TIME_BITS64
 extern int semctl (int __semid, int __semnum, int __cmd, ...) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (semctl,
+                           (int __semid, int __semnum, int __cmd, ...),
+                           __semctl64);
+# else
+#  define semctl __semctl64
+# endif
+#endif
 
 /* Get semaphore.  */
 extern int semget (key_t __key, int __nsems, int __semflg) __THROW;
@@ -58,8 +68,19 @@ extern int semop (int __semid, struct sembuf *__sops, size_t __nsops) __THROW;
 
 #ifdef __USE_GNU
 /* Operate on semaphore with timeout.  */
+# ifndef __USE_TIME_BITS64
 extern int semtimedop (int __semid, struct sembuf *__sops, size_t __nsops,
 		       const struct timespec *__timeout) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (semtimedop, (int __semid, struct sembuf *__sops,
+                                        size_t __nsops,
+                                        const struct timespec *__timeout),
+                           __semtimedop64);
+#  else
+#   define semtimedop __semtimedop64
+#  endif
+# endif
 #endif
 
 __END_DECLS
diff --git a/sysvipc/sys/shm.h b/sysvipc/sys/shm.h
index 7506ba67bf..b09e0497e6 100644
--- a/sysvipc/sys/shm.h
+++ b/sysvipc/sys/shm.h
@@ -46,7 +46,17 @@ __BEGIN_DECLS
    facility.  The definition is found in XPG4.2.  */
 
 /* Shared memory control operation.  */
+#ifndef __USE_TIME_BITS64
 extern int shmctl (int __shmid, int __cmd, struct shmid_ds *__buf) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (shmctl,
+                           (int __shmid, int __cmd, struct shmid_ds *__buf),
+                           __shmctl64);
+# else
+#  define shmctl __shmctl64
+# endif
+#endif
 
 /* Get shared memory segment.  */
 extern int shmget (key_t __key, size_t __size, int __shmflg) __THROW;
diff --git a/time/sys/time.h b/time/sys/time.h
index 42f91f186b..d21411c0b4 100644
--- a/time/sys/time.h
+++ b/time/sys/time.h
@@ -63,10 +63,21 @@ struct timezone
    use localtime etc. instead.
    This function itself is semi-obsolete;
    most callers should use time or clock_gettime instead. */
+#ifndef __USE_TIME_BITS64
 extern int gettimeofday (struct timeval *__restrict __tv,
 			 void *__restrict __tz) __THROW __nonnull ((1));
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (gettimeofday, (struct timeval *__restrict __tv,
+                                          void *__restrict __tz),
+                           __gettimeofday64) __nonnull ((1));
+# else
+#  define gettimeofday __gettimeofday64
+# endif
+#endif
 
 #ifdef __USE_MISC
+# ifndef __USE_TIME_BITS64
 /* Set the current time of day and timezone information.
    This call is restricted to the super-user.
    Setting the timezone in this way is obsolete, but we don't yet
@@ -82,6 +93,20 @@ extern int settimeofday (const struct timeval *__tv,
    This call is restricted to the super-user.  */
 extern int adjtime (const struct timeval *__delta,
 		    struct timeval *__olddelta) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (settimeofday, (const struct timeval *__tv,
+                                          const struct timezone *__tz),
+                           __settimeofday64);
+
+extern int __REDIRECT_NTH (adjtime, (const struct timeval *__delta,
+                                     struct timeval *__olddelta),
+                           __adjtime64);
+#  else
+#   define settimeofday __settimeofday64
+#   define adjtime __adjtime64
+#  endif
+# endif
 #endif
 
 
@@ -118,6 +143,7 @@ typedef enum __itimer_which __itimer_which_t;
 typedef int __itimer_which_t;
 #endif
 
+#ifndef __USE_TIME_BITS64
 /* Set *VALUE to the current setting of timer WHICH.
    Return 0 on success, -1 on errors.  */
 extern int getitimer (__itimer_which_t __which,
@@ -136,21 +162,66 @@ extern int setitimer (__itimer_which_t __which,
 extern int utimes (const char *__file, const struct timeval __tvp[2])
      __THROW __nonnull ((1));
 
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (getitimer, (__itimer_which_t __which,
+                                       struct itimerval *__value),
+                           __getitimer64);
+
+extern int __REDIRECT_NTH (setitimer, (__itimer_which_t __which,
+                                       const struct itimerval *__restrict __new,
+                                       struct itimerval *__restrict __old),
+                           __setitimer64);
+
+extern int __REDIRECT_NTH (utimes, (const char *__file,
+                                    const struct timeval __tvp[2]),
+                           __utimes64) __nonnull ((1));
+# else
+#  define getitimer __getitimer64
+#  define setitimer __setitimer64
+#  define utimes __utimes64
+# endif
+#endif
+
 #ifdef __USE_MISC
+# ifndef __USE_TIME_BITS64
 /* Same as `utimes', but does not follow symbolic links.  */
 extern int lutimes (const char *__file, const struct timeval __tvp[2])
      __THROW __nonnull ((1));
 
 /* Same as `utimes', but takes an open file descriptor instead of a name.  */
 extern int futimes (int __fd, const struct timeval __tvp[2]) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (lutimes, (const char *__file,
+                                     const struct timeval __tvp[2]),
+                           __lutimes64) __nonnull ((1));
+
+extern int __REDIRECT_NTH (futimes, (int __fd, const struct timeval __tvp[2]),
+                           __futimes64);
+#  else
+#   define lutimes __lutimes64
+#   define futimes __futimes64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
+# ifndef __USE_TIME_BITS64
 /* Change the access time of FILE relative to FD to TVP[0] and the
    modification time of FILE to TVP[1].  If TVP is a null pointer, use
    the current time instead.  Returns 0 on success, -1 on errors.  */
 extern int futimesat (int __fd, const char *__file,
 		      const struct timeval __tvp[2]) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (futimesat, (int __fd, const char *__file,
+                                       const struct timeval __tvp[2]),
+                           __futimesat64);
+#  else
+#   define futimesat __futimesat64
+#  endif
+# endif
 #endif
 
 
diff --git a/time/time.h b/time/time.h
index e255db9772..bde870c934 100644
--- a/time/time.h
+++ b/time/time.h
@@ -71,6 +71,7 @@ __BEGIN_DECLS
    The result / CLOCKS_PER_SEC is program time in seconds.  */
 extern clock_t clock (void) __THROW;
 
+#ifndef __USE_TIME_BITS64
 /* Return the current time and put it in *TIMER if TIMER is not NULL.  */
 extern time_t time (time_t *__timer) __THROW;
 
@@ -80,7 +81,18 @@ extern double difftime (time_t __time1, time_t __time0)
 
 /* Return the `time_t' representation of TP and normalize TP.  */
 extern time_t mktime (struct tm *__tp) __THROW;
-
+#else
+# ifdef __REDIRECT_NTH
+extern time_t __REDIRECT_NTH (time, (time_t *__timer), __time64);
+extern double __REDIRECT_NTH (difftime, (time_t __time1, time_t __time0),
+                              __difftime64) __attribute__ ((__const__));
+extern time_t __REDIRECT_NTH (mktime, (struct tm *__tp), __mktime64);
+# else
+#  define time __time64
+#  define difftime __difftime64
+#  define mktime __mktime64
+# endif
+#endif
 
 /* Format TP into S according to FORMAT.
    Write no more than MAXSIZE characters and return the number
@@ -114,6 +126,7 @@ extern char *strptime_l (const char *__restrict __s,
 #endif
 
 
+#ifndef __USE_TIME_BITS64
 /* Return the `struct tm' representation of *TIMER
    in Universal Coordinated Time (aka Greenwich Mean Time).  */
 extern struct tm *gmtime (const time_t *__timer) __THROW;
@@ -122,7 +135,20 @@ extern struct tm *gmtime (const time_t *__timer) __THROW;
    of *TIMER in the local timezone.  */
 extern struct tm *localtime (const time_t *__timer) __THROW;
 
+#else
+# ifdef __REDIRECT_NTH
+extern struct tm*__REDIRECT_NTH (gmtime, (const time_t *__timer), __gmtime64);
+extern struct tm *__REDIRECT_NTH (localtime, (const time_t *__timer),
+				  __localtime64);
+# else
+#  define gmtime __gmtime64
+#  define localtime __localtime64
+# endif
+#endif
+
+
 #if defined __USE_POSIX || __GLIBC_USE (ISOC2X)
+# ifndef __USE_TIME_BITS64
 /* Return the `struct tm' representation of *TIMER in UTC,
    using *TP to store the result.  */
 extern struct tm *gmtime_r (const time_t *__restrict __timer,
@@ -132,6 +158,20 @@ extern struct tm *gmtime_r (const time_t *__restrict __timer,
    using *TP to store the result.  */
 extern struct tm *localtime_r (const time_t *__restrict __timer,
 			       struct tm *__restrict __tp) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern struct tm*__REDIRECT_NTH (gmtime_r, (const time_t *__restrict __timer,
+                                            struct tm *__restrict __tp),
+                                 __gmtime64_r);
+
+extern struct tm*__REDIRECT_NTH (localtime_r, (const time_t *__restrict __t,
+                                               struct tm *__restrict __tp),
+                                 __localtime64_r);
+#  else
+#   define gmtime_r __gmtime64_r
+#   define localtime_r __localtime_r
+#  endif
+# endif
 #endif	/* POSIX || C2X */
 
 /* Return a string of the form "Day Mon dd hh:mm:ss yyyy\n"
@@ -139,7 +179,15 @@ extern struct tm *localtime_r (const time_t *__restrict __timer,
 extern char *asctime (const struct tm *__tp) __THROW;
 
 /* Equivalent to `asctime (localtime (timer))'.  */
+#ifndef __USE_TIME_BITS64
 extern char *ctime (const time_t *__timer) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern char *__REDIRECT_NTH (ctime, (const time_t *__timer), __ctime64);
+# else
+#  define ctime __ctime64
+# endif
+#endif
 
 #ifdef __USE_POSIX
 /* Reentrant versions of the above functions.  */
@@ -150,8 +198,18 @@ extern char *asctime_r (const struct tm *__restrict __tp,
 			char *__restrict __buf) __THROW;
 
 /* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'.  */
+#ifndef __USE_TIME_BITS64
 extern char *ctime_r (const time_t *__restrict __timer,
 		      char *__restrict __buf) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern char *__REDIRECT_NTH (ctime_r, (const time_t *__restrict __timer,
+                                       char *__restrict __buf), __ctime64_r);
+# else
+#  define ctime_r __ctime64_r
+# endif
+#endif
+
 #endif	/* POSIX */
 
 
@@ -186,11 +244,19 @@ extern long int timezone;
 /* Miscellaneous functions many Unices inherited from the public domain
    localtime package.  These are included only for compatibility.  */
 
+#ifndef __USE_TIME_BITS64
 /* Like `mktime', but for TP represents Universal Time, not local time.  */
 extern time_t timegm (struct tm *__tp) __THROW;
-
 /* Another name for `mktime'.  */
 extern time_t timelocal (struct tm *__tp) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern time_t __REDIRECT_NTH (timegm, (struct tm *__tp), __timegm64);
+extern time_t __REDIRECT_NTH (timelocal, (struct tm *__tp), __mktime64);
+# else
+#  define timegm __timegm64
+# endif
+#endif
 
 /* Return the number of days in YEAR.  */
 extern int dysize (int __year) __THROW  __attribute__ ((__const__));
@@ -198,6 +264,7 @@ extern int dysize (int __year) __THROW  __attribute__ ((__const__));
 
 
 #ifdef __USE_POSIX199309
+# ifndef __USE_TIME_BITS64
 /* Pause execution for a number of nanoseconds.
 
    This function is a cancellation point and therefore not marked with
@@ -205,7 +272,6 @@ extern int dysize (int __year) __THROW  __attribute__ ((__const__));
 extern int nanosleep (const struct timespec *__requested_time,
 		      struct timespec *__remaining);
 
-
 /* Get resolution of clock CLOCK_ID.  */
 extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __THROW;
 
@@ -215,15 +281,46 @@ extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW;
 /* Set clock CLOCK_ID to value TP.  */
 extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp)
      __THROW;
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (nanosleep, (const struct timespec *__requested_time,
+                                   struct timespec *__remaining),
+                       __nanosleep64);
+extern int __REDIRECT_NTH (clock_getres, (clockid_t __clock_id,
+                                          struct timespec *__res),
+                           __clock_getres64);
+extern int __REDIRECT_NTH (clock_gettime, (clockid_t __clock_id, struct
+                                           timespec *__tp), __clock_gettime64);
+extern int __REDIRECT_NTH (clock_settime, (clockid_t __clock_id, const struct
+                                           timespec *__tp), __clock_settime64);
+#  else
+#   define nanosleep __nanosleep64
+#   define clock_getres __clock_getres64
+#   define clock_gettime __clock_gettime64
+#   define clock_settime __clock_settime64
+#  endif
+# endif
+
 
 # ifdef __USE_XOPEN2K
 /* High-resolution sleep with the specified clock.
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+#  ifndef __USE_TIME_BITS64
 extern int clock_nanosleep (clockid_t __clock_id, int __flags,
 			    const struct timespec *__req,
 			    struct timespec *__rem);
+#  else
+#   ifdef __REDIRECT
+extern int __REDIRECT (clock_nanosleep, (clockid_t __clock_id, int __flags,
+                                         const struct timespec *__req,
+                                         struct timespec *__rem),
+                       __clock_nanosleep_time64);
+#   else
+#    define clock_nanosleep __clock_nanosleep_time64
+#   endif
+#  endif
 
 /* Return clock ID for CPU-time clock.  */
 extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __THROW;
@@ -239,6 +336,7 @@ extern int timer_create (clockid_t __clock_id,
 extern int timer_delete (timer_t __timerid) __THROW;
 
 /* Set timer TIMERID to VALUE, returning old value in OVALUE.  */
+# ifndef __USE_TIME_BITS64
 extern int timer_settime (timer_t __timerid, int __flags,
 			  const struct itimerspec *__restrict __value,
 			  struct itimerspec *__restrict __ovalue) __THROW;
@@ -246,6 +344,21 @@ extern int timer_settime (timer_t __timerid, int __flags,
 /* Get current value of timer TIMERID and store it in VALUE.  */
 extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
      __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (timer_settime, (timer_t __timerid, int __flags,
+     const struct itimerspec *__restrict __value,
+     struct itimerspec *__restrict __ovalue),
+                          __timer_settime64);
+
+extern int __REDIRECT_NTH (timer_gettime, (timer_t __timerid,
+                                           struct itimerspec *__value),
+                           __timer_gettime64);
+#  else
+#   define timer_settime __timer_settime64
+#   define timer_gettime __timer_gettime64
+#  endif
+# endif
 
 /* Get expiration overrun for timer TIMERID.  */
 extern int timer_getoverrun (timer_t __timerid) __THROW;
@@ -253,16 +366,35 @@ extern int timer_getoverrun (timer_t __timerid) __THROW;
 
 
 #ifdef __USE_ISOC11
+# ifndef __USE_TIME_BITS64
 /* Set TS to calendar time based in time base BASE.  */
 extern int timespec_get (struct timespec *__ts, int __base)
      __THROW __nonnull ((1));
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (timespec_get, (struct timespec *__ts, int __base),
+                           __timespec_get64) __nonnull ((1));
+#  else
+#   define timespec_get __timespec_get64
+#  endif
+# endif
 #endif
 
 
 #if __GLIBC_USE (ISOC2X)
+# ifndef __USE_TIME_BITS64
 /* Set TS to resolution of time base BASE.  */
 extern int timespec_getres (struct timespec *__ts, int __base)
      __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (timespec_getres, (struct timespec *__ts,
+                                             int __base),
+                           __timespec_getres64);
+#  else
+#   define timespec_getres __timespec_getres64
+#  endif
+# endif
 #endif


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [glibc/azanella/y2038] y2038: Add support for 64 bit time on legacy ABIs
@ 2021-05-26 16:25 Adhemerval Zanella
  0 siblings, 0 replies; 10+ messages in thread
From: Adhemerval Zanella @ 2021-05-26 16:25 UTC (permalink / raw)
  To: glibc-cvs

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=99fe7d56ddefaa898c0c93f2ae81e791b5880507

commit 99fe7d56ddefaa898c0c93f2ae81e791b5880507
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Wed Feb 17 13:35:19 2021 -0300

    y2038: Add support for 64 bit time on legacy ABIs
    
    A new build flag, _TIME_BITS, enables the usage of the newer 64 bit
    time symbols for legacy ABI (where 32 bit time_t is default).  The 64
    bit time support is only enabled if LFS (_FILE_OFFSET_BITS=64) is
    also used.
    
    Different than LFS support, the y2038 symbols are added only for the
    required ABIs (armhf, csky, hppa, i386, m68k, microblaze, mips32,
    mips64-n32, nios2, powerpc32, sparc32, s390-32, and sh).  The ABIs with
    64 bit time support are unchanged, both for symbol and types
    redirection.
    
    On Linux the full 64 bit time support requires a minimum of kernel
    version v5.1.  Otherwise, the 32 bit fallbacks are used and might
    results in error with overflow return code (EOVERFLOW).
    
    The i686-gnu does not yet support 64 bit time.
    
    This patch exports following rediretions to support 64 bit time:
    
      * libc:
        adjtime
        adjtimex
        clock_adjtime
        clock_getres
        clock_gettime
        clock_nanosleep
        clock_settime
        cnd_timedwait
        ctime
        ctime_r
        difftime
        fstat
        fstatat
        futimens
        futimes
        futimesat
        getitimer
        getrusage
        gettimeofday
        gmtime
        gmtime_r
        localtime
        localtime_r
        lstat_time
        lutimes
        mktime
        msgctl
        mtx_timedlock
        nanosleep
        nanosleep
        ntp_gettime
        ntp_gettimex
        ppoll
        pselec
        pselect
        pthread_clockjoin_np
        pthread_cond_clockwait
        pthread_cond_timedwait
        pthread_mutex_clocklock
        pthread_mutex_timedlock
        pthread_rwlock_clockrdlock
        pthread_rwlock_clockwrlock
        pthread_rwlock_timedrdlock
        pthread_rwlock_timedwrlock
        pthread_timedjoin_np
        recvmmsg
        sched_rr_get_interval
        select
        sem_clockwait
        semctl
        semtimedop
        sem_timedwait
        setitimer
        settimeofday
        shmctl
        sigtimedwait
        stat
        thrd_sleep
        time
        timegm
        timerfd_gettime
        timerfd_settime
        timespec_get
        utime
        utimensat
        utimes
        utimes
        wait3
        wait4
    
      * librt:
        aio_suspend
        mq_timedreceive
        mq_timedsend
        timer_gettime
        timer_settime
    
      * libanl:
        gai_suspend

Diff:
---
 Makefile                                           |   2 +-
 NEWS                                               |   5 +
 include/features-time64.h                          |   1 +
 include/features.h                                 |   2 +
 io/sys/poll.h                                      |  11 ++
 io/sys/stat.h                                      | 113 +++++++++++++++--
 io/utime.h                                         |  11 ++
 manual/creature.texi                               |  44 +++++++
 misc/sys/select.h                                  |  27 ++++
 nptl/pthread_clockjoin.c                           |   3 +-
 nptl/pthread_cond_wait.c                           |   9 +-
 nptl/pthread_mutex_timedlock.c                     |   8 +-
 nptl/pthread_rwlock_clockrdlock.c                  |   4 +-
 nptl/pthread_rwlock_clockwrlock.c                  |   4 +-
 nptl/pthread_rwlock_timedrdlock.c                  |   4 +-
 nptl/pthread_rwlock_timedwrlock.c                  |   4 +-
 nptl/pthread_timedjoin.c                           |   3 +-
 nptl/sem_clockwait.c                               |   3 +-
 nptl/sem_timedwait.c                               |   4 +-
 posix/sched.h                                      |  11 +-
 posix/sys/wait.h                                   |  20 +++
 resolv/netdb.h                                     |  11 ++
 resource/sys/resource.h                            |  10 ++
 rt/aio.h                                           |  15 ++-
 rt/mqueue.h                                        |  22 ++++
 signal/signal.h                                    |  13 ++
 socket/sys/socket.h                                |  11 ++
 sysdeps/generic/features-time64.h                  |  19 +++
 sysdeps/generic/time64-compat.h                    |   3 +
 sysdeps/nptl/pthread.h                             | 119 ++++++++++++++++++
 sysdeps/pthread/semaphore.h                        |  25 ++++
 sysdeps/pthread/threads.h                          |  33 +++++
 sysdeps/unix/sysv/linux/Makefile                   |   3 +
 sysdeps/unix/sysv/linux/Versions                   |  97 +++++++++++++++
 sysdeps/unix/sysv/linux/arm/be/libanl.abilist      |   1 +
 sysdeps/unix/sysv/linux/arm/be/libc.abilist        |  67 ++++++++++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist       |   5 +
 sysdeps/unix/sysv/linux/arm/le/libanl.abilist      |   1 +
 sysdeps/unix/sysv/linux/arm/le/libc.abilist        |  67 ++++++++++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist       |   5 +
 sysdeps/unix/sysv/linux/arm/time64-compat.h        |   2 +
 sysdeps/unix/sysv/linux/bits/msq.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/sem.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/shm.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/time.h                |  10 ++
 sysdeps/unix/sysv/linux/cnd_timedwait.c            |   8 +-
 sysdeps/unix/sysv/linux/csky/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/csky/libc.abilist          |  67 ++++++++++
 sysdeps/unix/sysv/linux/csky/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/csky/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/features-time64.h          |  37 ++++++
 sysdeps/unix/sysv/linux/hppa/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/hppa/libc.abilist          |  67 ++++++++++
 sysdeps/unix/sysv/linux/hppa/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/hppa/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/i386/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/i386/libc.abilist          |  67 ++++++++++
 sysdeps/unix/sysv/linux/i386/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/i386/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/include/sys/msg.h          |   2 -
 sysdeps/unix/sysv/linux/include/sys/shm.h          |   2 -
 sysdeps/unix/sysv/linux/include/sys/timex.h        |   2 +
 .../unix/sysv/linux/m68k/coldfire/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist |  67 ++++++++++
 .../unix/sysv/linux/m68k/coldfire/librt.abilist    |   5 +
 sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist |   1 +
 sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist   |  67 ++++++++++
 sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist  |   5 +
 sysdeps/unix/sysv/linux/m68k/time64-compat.h       |   2 +
 .../unix/sysv/linux/microblaze/be/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/microblaze/be/libc.abilist |  67 ++++++++++
 .../unix/sysv/linux/microblaze/be/librt.abilist    |   5 +
 .../unix/sysv/linux/microblaze/le/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/microblaze/le/libc.abilist |  67 ++++++++++
 .../unix/sysv/linux/microblaze/le/librt.abilist    |   5 +
 sysdeps/unix/sysv/linux/microblaze/time64-compat.h |   2 +
 .../unix/sysv/linux/mips/mips32/fpu/libc.abilist   |  67 ++++++++++
 sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist |   1 +
 sysdeps/unix/sysv/linux/mips/mips32/librt.abilist  |   5 +
 .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist |  67 ++++++++++
 .../unix/sysv/linux/mips/mips32/time64-compat.h    |   2 +
 .../unix/sysv/linux/mips/mips64/n32/libanl.abilist |   1 +
 .../unix/sysv/linux/mips/mips64/n32/libc.abilist   |  67 ++++++++++
 .../unix/sysv/linux/mips/mips64/n32/librt.abilist  |   5 +
 .../sysv/linux/mips/mips64/n32/time64-compat.h     |   2 +
 sysdeps/unix/sysv/linux/mtx_timedlock.c            |   8 +-
 sysdeps/unix/sysv/linux/nios2/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/nios2/libc.abilist         |  67 ++++++++++
 sysdeps/unix/sysv/linux/nios2/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/nios2/time64-compat.h      |   2 +
 .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist  |  67 ++++++++++
 .../sysv/linux/powerpc/powerpc32/libanl.abilist    |   1 +
 .../sysv/linux/powerpc/powerpc32/librt.abilist     |   5 +
 .../linux/powerpc/powerpc32/nofpu/libc.abilist     |  67 ++++++++++
 .../sysv/linux/powerpc/powerpc32/time64-compat.h   |   2 +
 .../unix/sysv/linux/s390/s390-32/libanl.abilist    |   1 +
 sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist  |  67 ++++++++++
 sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist |   5 +
 .../unix/sysv/linux/s390/s390-32/time64-compat.h   |   2 +
 sysdeps/unix/sysv/linux/semctl.c                   |   1 -
 sysdeps/unix/sysv/linux/sh/be/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/sh/be/libc.abilist         |  67 ++++++++++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/sh/le/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/sh/le/libc.abilist         |  67 ++++++++++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/sh/time64-compat.h         |   2 +
 .../unix/sysv/linux/sparc/sparc32/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist |  67 ++++++++++
 .../unix/sysv/linux/sparc/sparc32/librt.abilist    |   5 +
 .../unix/sysv/linux/sparc/sparc32/time64-compat.h  |   2 +
 sysdeps/unix/sysv/linux/sys/timerfd.h              |  22 ++++
 sysdeps/unix/sysv/linux/sys/timex.h                |  27 +++-
 sysvipc/sys/msg.h                                  |  10 ++
 sysvipc/sys/sem.h                                  |  21 ++++
 sysvipc/sys/shm.h                                  |  10 ++
 time/sys/time.h                                    |  71 +++++++++++
 time/time.h                                        | 138 ++++++++++++++++++++-
 118 files changed, 2387 insertions(+), 60 deletions(-)

diff --git a/Makefile b/Makefile
index 242d36de91..0157b53cb8 100644
--- a/Makefile
+++ b/Makefile
@@ -68,7 +68,7 @@ endif # $(AUTOCONF) = no
 		   subdir_objs subdir_stubs subdir_testclean		\
 		   $(addprefix install-, no-libc.a bin lib data headers others)
 \f
-headers := limits.h values.h features.h gnu-versions.h \
+headers := limits.h values.h features.h features-time64.h gnu-versions.h \
 	   bits/xopen_lim.h gnu/libc-version.h stdc-predef.h \
 	   bits/libc-header-start.h
 
diff --git a/NEWS b/NEWS
index 266837bf2d..3bb122ec3c 100644
--- a/NEWS
+++ b/NEWS
@@ -25,6 +25,11 @@ Major new features:
 
 * The ISO C2X function timespec_getres has been added.
 
+* Add support for 64 bit time_t for ABIs with defaults to 32 bit time_t.
+  This is enabled with the _TIME_BITS preprocessor set to 64 and only
+  supported when LFS (_FILE_OFFSET_BITS=64) is also enabled.  It is only
+  enabled for Linux and the full support requires a minimum version of 5.1.
+
 Deprecated and removed features, and other changes affecting compatibility:
 
 * The function pthread_mutex_consistent_np has been deprecated; programs
diff --git a/include/features-time64.h b/include/features-time64.h
new file mode 100644
index 0000000000..06115b7c86
--- /dev/null
+++ b/include/features-time64.h
@@ -0,0 +1 @@
+#include_next <features-time64.h>
diff --git a/include/features.h b/include/features.h
index eb97470afa..9d39e11345 100644
--- a/include/features.h
+++ b/include/features.h
@@ -387,6 +387,8 @@
 # define __USE_FILE_OFFSET64	1
 #endif
 
+#include <features-time64.h>
+
 #if defined _DEFAULT_SOURCE
 # define __USE_MISC	1
 #endif
diff --git a/io/sys/poll.h b/io/sys/poll.h
index 08f29df540..e640efb2bc 100644
--- a/io/sys/poll.h
+++ b/io/sys/poll.h
@@ -66,6 +66,17 @@ extern int ppoll (struct pollfd *__fds, nfds_t __nfds,
 		  const __sigset_t *__ss)
     __attr_access ((__write_only__, 1, 2));
 
+# ifdef __USE_TIME_BITS64
+#  ifdef __REDIRECT
+extern int __REDIRECT (ppoll, (struct pollfd *__fds, nfds_t __nfds,
+                               const struct timespec *__timeout,
+                               const __sigset_t *__ss),
+                       __ppoll64)
+    __attr_access ((__write_only__, 1, 2));
+#  else
+#  define ppoll __ppoll64
+#  endif
+# endif
 #endif
 
 __END_DECLS
diff --git a/io/sys/stat.h b/io/sys/stat.h
index 549375c087..f7874ec5ba 100644
--- a/io/sys/stat.h
+++ b/io/sys/stat.h
@@ -209,21 +209,51 @@ extern int stat (const char *__restrict __file,
    that file descriptor FD is open on and put them in BUF.  */
 extern int fstat (int __fd, struct stat *__buf) __THROW __nonnull ((2));
 #else
-# ifdef __REDIRECT_NTH
+# ifdef __USE_TIME_BITS64
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
+				  struct stat *__restrict __buf),
+				  __stat64_time64)
+     __nonnull ((1, 2));
+extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf),
+				   __fstat64_time64)
+     __nonnull ((2));
+#  else
+#   define stat __stat64_time64
+#   define fstat __fstat64_time64
+#  endif
+# else
+#  ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
 				  struct stat *__restrict __buf), stat64)
      __nonnull ((1, 2));
 extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf), fstat64)
      __nonnull ((2));
-# else
-#  define stat stat64
-#  define fstat fstat64
+#  else
+#   define stat stat64
+#   define fstat fstat64
+#  endif
 # endif
 #endif
 #ifdef __USE_LARGEFILE64
+# ifndef __USE_TIME_BITS64
 extern int stat64 (const char *__restrict __file,
 		   struct stat64 *__restrict __buf) __THROW __nonnull ((1, 2));
 extern int fstat64 (int __fd, struct stat64 *__buf) __THROW __nonnull ((2));
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (stat64, (const char *__restrict __file,
+				    struct stat64 *__restrict __buf),
+			   __stat64_time64)
+     __nonnull ((1, 2));
+extern int __REDIRECT_NTH (fstat64, (int __fd, struct stat64 *__buf),
+			   __fstat64_time64)
+     __nonnull ((2));
+#  else
+#   define stat64 __stat64_time64
+#   define fstat64 __fstat64_time
+#  endif
+# endif
 #endif
 
 #ifdef __USE_ATFILE
@@ -235,20 +265,44 @@ extern int fstatat (int __fd, const char *__restrict __file,
 		    struct stat *__restrict __buf, int __flag)
      __THROW __nonnull ((2, 3));
 # else
-#  ifdef __REDIRECT_NTH
+#  ifdef __USE_TIME_BITS64
+#   ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
 				     struct stat *__restrict __buf,
 				     int __flag),
-			   fstatat64) __nonnull ((2, 3));
+			   __fstatat64_time64) __nonnull ((2, 3));
+#   else
+#    define fstatat __fstatat64_time64
+#   endif
 #  else
-#   define fstatat fstatat64
+#   ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
+				     struct stat *__restrict __buf,
+				     int __flag),
+			   fstatat64) __nonnull ((2, 3));
+#   else
+#    define fstatat fstatat64
+#   endif
 #  endif
 # endif
 
 # ifdef __USE_LARGEFILE64
+#  ifndef __USE_TIME_BITS64
 extern int fstatat64 (int __fd, const char *__restrict __file,
 		      struct stat64 *__restrict __buf, int __flag)
      __THROW __nonnull ((2, 3));
+#  else
+#   ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (fstatat64, (int __fd,
+				       const char *__restrict __file,
+				       struct stat64 *__restrict __buf,
+				       int __flag),
+			   __fstatat64_time64)
+     __nonnull ((2, 3));
+#   else
+#    define fstatat64 __fstatat64_time64
+#   endif
+#  endif
 # endif
 #endif
 
@@ -259,19 +313,37 @@ extern int fstatat64 (int __fd, const char *__restrict __file,
 extern int lstat (const char *__restrict __file,
 		  struct stat *__restrict __buf) __THROW __nonnull ((1, 2));
 # else
-#  ifdef __REDIRECT_NTH
+#  ifdef __USE_TIME_BITS64
+#   ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (lstat,
 			   (const char *__restrict __file,
-			    struct stat *__restrict __buf), lstat64)
+			    struct stat *__restrict __buf), __lstat64_time64)
      __nonnull ((1, 2));
+#   else
+#    define lstat __lstat64_time64
+#   endif
 #  else
-#   define lstat lstat64
+#   ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (lstat,
+			   (const char *__restrict __file,
+			    struct stat *__restrict __buf), lstat64)
+     __nonnull ((1, 2));
+#   else
+#    define lstat lstat64
+#   endif
 #  endif
 # endif
 # ifdef __USE_LARGEFILE64
+#  ifndef __USE_TIME_BITS64
 extern int lstat64 (const char *__restrict __file,
 		    struct stat64 *__restrict __buf)
      __THROW __nonnull ((1, 2));
+#  else
+extern int __REDIRECT_NTH (lstat64, (const char *__restrict __file,
+				     struct stat64 *__restrict __buf),
+			   __lstat64_time64)
+     __nonnull ((1, 2));
+#  endif
 # endif
 #endif
 
@@ -355,17 +427,38 @@ extern int mkfifoat (int __fd, const char *__path, __mode_t __mode)
 #endif
 \f
 #ifdef __USE_ATFILE
+# ifndef __USE_TIME_BITS64
 /* Set file access and modification times relative to directory file
    descriptor.  */
 extern int utimensat (int __fd, const char *__path,
 		      const struct timespec __times[2],
 		      int __flags)
      __THROW __nonnull ((2));
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (utimensat, (int fd, const char *__path,
+                                       const struct timespec __times[2],
+                                       int flags),
+                           __utimensat64) __nonnull ((2));
+#  else
+#   define utimensat __utimensat64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_XOPEN2K8
+# ifndef __USE_TIME_BITS64
 /* Set file access and modification times of the file associated with FD.  */
 extern int futimens (int __fd, const struct timespec __times[2]) __THROW;
+
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (futimens, (int fd, const struct timespec __times[2]),
+                           __futimens64);
+#  else
+#   define futimens __futimens64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
diff --git a/io/utime.h b/io/utime.h
index c7612d0838..1a645a3fff 100644
--- a/io/utime.h
+++ b/io/utime.h
@@ -46,10 +46,21 @@ struct utimbuf
 
 /* Set the access and modification times of FILE to those given in
    *FILE_TIMES.  If FILE_TIMES is NULL, set them to the current time.  */
+#ifndef __USE_TIME_BITS64
 extern int utime (const char *__file,
 		  const struct utimbuf *__file_times)
      __THROW __nonnull ((1));
 
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (utime, (const char *__file,
+                                   const struct utimbuf *__file_times),
+                           __utime64);
+# else
+#  define utime __utime64
+# endif
+#endif
+
 __END_DECLS
 
 #endif /* utime.h */
diff --git a/manual/creature.texi b/manual/creature.texi
index 5090735e4f..606b73d184 100644
--- a/manual/creature.texi
+++ b/manual/creature.texi
@@ -165,6 +165,50 @@ This macro was introduced as part of the Large File Support extension
 (LFS).
 @end defvr
 
+@defvr Macro _TIME_BITS
+This macro determines the bit size of @code{time_t} (and therefore the
+bit size of all @code{time_t} derived types and the prototypes of all
+related functions).  If @code{_TIME_BITS} is undefined, the bit size of
+@code{time_t} is architecture dependent.
+
+Possible values of @code{_TIME_BITS}:
+@enumerate
+@item
+@code{_TIME_BITS=64} and port from the outset uses 64-bit
+@code{time_t} and word size equals to @w{64 bits} (e.g. x86_64) - no
+action
+
+@item
+@code{_TIME_BITS=32} and port from the outset uses 32-bit
+@code{time_t} and word size equals to @w{64 bits} (e.g. ARM) - no
+action
+
+@item
+@code{_TIME_BITS=64} and port from the outset uses 64-bit
+@code{time_t} and word size equals to @w{32 bits} (e.g. ARC, RV32)
+- no action
+
+@item
+@code{_TIME_BITS=64} and port from the outset uses 32-bit
+@code{time_t} and word size equals to @w{32 bits} (e.g. ARM)
+- the @code{time_t} is modified to be able to hold 64-bit time.
+
+@item
+For any other use case the compile-time error is emitted.
+@end enumerate
+
+The @code{_TIME_BITS} can be only used when @code{_FILE_OFFSET_BITS=64}
+is also defined.
+
+For the point @b{4} above, calls to proper syscalls depend on the
+Linux kernel version on which the system is running. For Linux kernel
+version above @b{5.1} syscalls supporting 64-bit time are used. Otherwise,
+a fallback code is used with legacy (i.e. 32-bit) syscalls.
+
+By using this macro certain ports gain support for 64-bit time and as
+a result become immune to Y2038 problem.
+@end defvr
+
 @defvr Macro _ISOC99_SOURCE
 @standards{GNU, (none)}
 If this macro is defined, features from ISO C99 are included.  Since
diff --git a/misc/sys/select.h b/misc/sys/select.h
index 188a7fe607..e9c0e8fc20 100644
--- a/misc/sys/select.h
+++ b/misc/sys/select.h
@@ -98,10 +98,23 @@ __BEGIN_DECLS
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+#ifndef __USE_TIME_BITS64
 extern int select (int __nfds, fd_set *__restrict __readfds,
 		   fd_set *__restrict __writefds,
 		   fd_set *__restrict __exceptfds,
 		   struct timeval *__restrict __timeout);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (select,
+                       (int __nfds, fd_set *__restrict __readfds,
+                        fd_set *__restrict __writefds,
+                        fd_set *__restrict __exceptfds,
+                        struct timeval *__restrict __timeout),
+                       __select64);
+# else
+#  define select __select64
+# endif
+#endif
 
 #ifdef __USE_XOPEN2K
 /* Same as above only that the TIMEOUT value is given with higher
@@ -110,11 +123,25 @@ extern int select (int __nfds, fd_set *__restrict __readfds,
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int pselect (int __nfds, fd_set *__restrict __readfds,
 		    fd_set *__restrict __writefds,
 		    fd_set *__restrict __exceptfds,
 		    const struct timespec *__restrict __timeout,
 		    const __sigset_t *__restrict __sigmask);
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (pselect,
+                       (int __nfds, fd_set *__restrict __readfds,
+                        fd_set *__restrict __writefds,
+                        fd_set *__restrict __exceptfds,
+                        const struct timespec *__restrict __timeout,
+                        const __sigset_t *__restrict __sigmask),
+                       __pselect64);
+#  else
+#   define pselect __pselect64
+#  endif
+# endif
 #endif
 
 
diff --git a/nptl/pthread_clockjoin.c b/nptl/pthread_clockjoin.c
index f5007d7831..2d01ba03a2 100644
--- a/nptl/pthread_clockjoin.c
+++ b/nptl/pthread_clockjoin.c
@@ -36,7 +36,8 @@ ___pthread_clockjoin_np64 (pthread_t threadid, void **thread_return,
 #if __TIMESIZE == 64
 strong_alias (___pthread_clockjoin_np64, ___pthread_clockjoin_np)
 #else /* __TIMESPEC64 != 64 */
-libc_hidden_ver (___pthread_clockjoin_np64, __pthread_clockjoin_np64)
+strong_alias (___pthread_clockjoin_np64, __pthread_clockjoin_np64)
+libc_hidden_def (__pthread_clockjoin_np64)
 
 int
 ___pthread_clockjoin_np (pthread_t threadid, void **thread_return,
diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c
index 409a99ecb7..daba8600fe 100644
--- a/nptl/pthread_cond_wait.c
+++ b/nptl/pthread_cond_wait.c
@@ -647,10 +647,8 @@ ___pthread_cond_timedwait64 (pthread_cond_t *cond, pthread_mutex_t *mutex,
 #if __TIMESIZE == 64
 strong_alias (___pthread_cond_timedwait64, ___pthread_cond_timedwait)
 #else
-libc_hidden_ver (___pthread_cond_timedwait64, __pthread_cond_timedwait64)
-#ifndef SHARED
 strong_alias (___pthread_cond_timedwait64, __pthread_cond_timedwait64)
-#endif
+libc_hidden_def (__pthread_cond_timedwait64)
 
 int
 ___pthread_cond_timedwait (pthread_cond_t *cond, pthread_mutex_t *mutex,
@@ -688,9 +686,8 @@ ___pthread_cond_clockwait64 (pthread_cond_t *cond, pthread_mutex_t *mutex,
 #if __TIMESIZE == 64
 strong_alias (___pthread_cond_clockwait64, ___pthread_cond_clockwait)
 #else
-versioned_symbol (libc, ___pthread_cond_clockwait64,
-		  __pthread_cond_clockwait64, GLIBC_PRIVATE);
-libc_hidden_ver (___pthread_cond_clockwait64, __pthread_cond_clockwait64)
+strong_alias (___pthread_cond_clockwait64, __pthread_cond_clockwait64);
+libc_hidden_def (__pthread_cond_clockwait64)
 
 int
 ___pthread_cond_clockwait (pthread_cond_t *cond, pthread_mutex_t *mutex,
diff --git a/nptl/pthread_mutex_timedlock.c b/nptl/pthread_mutex_timedlock.c
index acd78131b2..5afd6222d6 100644
--- a/nptl/pthread_mutex_timedlock.c
+++ b/nptl/pthread_mutex_timedlock.c
@@ -585,7 +585,8 @@ ___pthread_mutex_clocklock64 (pthread_mutex_t *mutex,
 #if __TIMESIZE == 64
 strong_alias (___pthread_mutex_clocklock64, ___pthread_mutex_clocklock)
 #else /* __TIMESPEC64 != 64 */
-libc_hidden_ver (___pthread_mutex_clocklock64, __pthread_mutex_clocklock64)
+strong_alias (___pthread_mutex_clocklock64, __pthread_mutex_clocklock64)
+libc_hidden_def (__pthread_mutex_clocklock64)
 
 int
 ___pthread_mutex_clocklock (pthread_mutex_t *mutex,
@@ -618,9 +619,8 @@ ___pthread_mutex_timedlock64 (pthread_mutex_t *mutex,
 #if __TIMESIZE == 64
 strong_alias (___pthread_mutex_timedlock64, ___pthread_mutex_timedlock)
 #else /* __TIMESPEC64 != 64 */
-versioned_symbol (libc, ___pthread_mutex_timedlock64,
-		  __pthread_mutex_timedlock64, GLIBC_PRIVATE);
-libc_hidden_ver (___pthread_mutex_timedlock64, __pthread_mutex_timedlock64)
+strong_alias (___pthread_mutex_timedlock64, __pthread_mutex_timedlock64);
+libc_hidden_def (__pthread_mutex_timedlock64)
 
 int
 ___pthread_mutex_timedlock (pthread_mutex_t *mutex,
diff --git a/nptl/pthread_rwlock_clockrdlock.c b/nptl/pthread_rwlock_clockrdlock.c
index 9db96b9904..83ae1d1823 100644
--- a/nptl/pthread_rwlock_clockrdlock.c
+++ b/nptl/pthread_rwlock_clockrdlock.c
@@ -31,8 +31,8 @@ ___pthread_rwlock_clockrdlock64 (pthread_rwlock_t *rwlock, clockid_t clockid,
 #if __TIMESIZE == 64
 strong_alias (___pthread_rwlock_clockrdlock64, ___pthread_rwlock_clockrdlock)
 #else /* __TIMESPEC64 != 64 */
-libc_hidden_ver (___pthread_rwlock_clockrdlock64,
-		 __pthread_rwlock_clockrdlock64)
+strong_alias (___pthread_rwlock_clockrdlock64, __pthread_rwlock_clockrdlock64)
+libc_hidden_def (__pthread_rwlock_clockrdlock64)
 
 int
 ___pthread_rwlock_clockrdlock (pthread_rwlock_t *rwlock, clockid_t clockid,
diff --git a/nptl/pthread_rwlock_clockwrlock.c b/nptl/pthread_rwlock_clockwrlock.c
index ca0ebe2a65..08a2276da5 100644
--- a/nptl/pthread_rwlock_clockwrlock.c
+++ b/nptl/pthread_rwlock_clockwrlock.c
@@ -31,8 +31,8 @@ ___pthread_rwlock_clockwrlock64 (pthread_rwlock_t *rwlock, clockid_t clockid,
 #if __TIMESIZE == 64
 strong_alias (___pthread_rwlock_clockwrlock64, ___pthread_rwlock_clockwrlock)
 #else /* __TIMESPEC64 != 64 */
-libc_hidden_ver (___pthread_rwlock_clockwrlock64,
-		 __pthread_rwlock_clockwrlock64)
+strong_alias (___pthread_rwlock_clockwrlock64, __pthread_rwlock_clockwrlock64)
+libc_hidden_def (__pthread_rwlock_clockwrlock64)
 
 int
 ___pthread_rwlock_clockwrlock (pthread_rwlock_t *rwlock, clockid_t clockid,
diff --git a/nptl/pthread_rwlock_timedrdlock.c b/nptl/pthread_rwlock_timedrdlock.c
index dd9b7cb0a2..8c73af26fb 100644
--- a/nptl/pthread_rwlock_timedrdlock.c
+++ b/nptl/pthread_rwlock_timedrdlock.c
@@ -30,8 +30,8 @@ ___pthread_rwlock_timedrdlock64 (pthread_rwlock_t *rwlock,
 #if __TIMESIZE == 64
 strong_alias (___pthread_rwlock_timedrdlock64, ___pthread_rwlock_timedrdlock)
 #else /* __TIMESPEC64 != 64 */
-libc_hidden_ver (___pthread_rwlock_timedrdlock64,
-		 __pthread_rwlock_timedrdlock64)
+strong_alias (___pthread_rwlock_timedrdlock64, __pthread_rwlock_timedrdlock64)
+libc_hidden_def (__pthread_rwlock_timedrdlock64)
 
 int
 ___pthread_rwlock_timedrdlock (pthread_rwlock_t *rwlock,
diff --git a/nptl/pthread_rwlock_timedwrlock.c b/nptl/pthread_rwlock_timedwrlock.c
index e660a544cd..890da92968 100644
--- a/nptl/pthread_rwlock_timedwrlock.c
+++ b/nptl/pthread_rwlock_timedwrlock.c
@@ -30,8 +30,8 @@ ___pthread_rwlock_timedwrlock64 (pthread_rwlock_t *rwlock,
 #if __TIMESIZE == 64
 strong_alias (___pthread_rwlock_timedwrlock64, ___pthread_rwlock_timedwrlock)
 #else /* __TIMESPEC64 != 64 */
-libc_hidden_ver (___pthread_rwlock_timedwrlock64,
-		 __pthread_rwlock_timedwrlock64)
+strong_alias (___pthread_rwlock_timedwrlock64, __pthread_rwlock_timedwrlock64)
+libc_hidden_def (__pthread_rwlock_timedwrlock64)
 
 int
 ___pthread_rwlock_timedwrlock (pthread_rwlock_t *rwlock,
diff --git a/nptl/pthread_timedjoin.c b/nptl/pthread_timedjoin.c
index ebc31f935a..0b4026612f 100644
--- a/nptl/pthread_timedjoin.c
+++ b/nptl/pthread_timedjoin.c
@@ -31,7 +31,8 @@ ___pthread_timedjoin_np64 (pthread_t threadid, void **thread_return,
 #if __TIMESIZE == 64
 strong_alias (___pthread_timedjoin_np64, ___pthread_timedjoin_np)
 #else /* __TIMESPEC64 != 64 */
-libc_hidden_ver (___pthread_timedjoin_np64, __pthread_timedjoin_np64)
+strong_alias (___pthread_timedjoin_np64, __pthread_timedjoin_np64)
+libc_hidden_def (__pthread_timedjoin_np64)
 
 int
   ___pthread_timedjoin_np (pthread_t threadid, void **thread_return,
diff --git a/nptl/sem_clockwait.c b/nptl/sem_clockwait.c
index 2739799e26..19751aff04 100644
--- a/nptl/sem_clockwait.c
+++ b/nptl/sem_clockwait.c
@@ -49,7 +49,8 @@ ___sem_clockwait64 (sem_t *sem, clockid_t clockid,
 #if __TIMESIZE == 64
 strong_alias (___sem_clockwait64, ___sem_clockwait)
 #else /* __TIMESPEC64 != 64 */
-libc_hidden_ver (___sem_clockwait64, __sem_clockwait64)
+strong_alias (___sem_clockwait64, __sem_clockwait64)
+libc_hidden_def (__sem_clockwait64)
 
 int
 ___sem_clockwait (sem_t *sem, clockid_t clockid, const struct timespec *abstime)
diff --git a/nptl/sem_timedwait.c b/nptl/sem_timedwait.c
index 584546c706..5c8f37d3bb 100644
--- a/nptl/sem_timedwait.c
+++ b/nptl/sem_timedwait.c
@@ -45,10 +45,8 @@ ___sem_timedwait64 (sem_t *sem, const struct __timespec64 *abstime)
 #if __TIMESIZE == 64
 strong_alias (___sem_timedwait64, ___sem_timedwait)
 #else /* __TIMESPEC64 != 64 */
-libc_hidden_ver (___sem_timedwait64, __sem_timedwait64)
-#ifndef SHARED
 strong_alias (___sem_timedwait64, __sem_timedwait64)
-#endif
+libc_hidden_def (__sem_timedwait64)
 
 int
 ___sem_timedwait (sem_t *sem, const struct timespec *abstime)
diff --git a/posix/sched.h b/posix/sched.h
index d8ce08a3ea..7dd97a49b2 100644
--- a/posix/sched.h
+++ b/posix/sched.h
@@ -74,8 +74,17 @@ extern int sched_get_priority_max (int __algorithm) __THROW;
 extern int sched_get_priority_min (int __algorithm) __THROW;
 
 /* Get the SCHED_RR interval for the named process.  */
+#ifndef __USE_TIME_BITS64
 extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __THROW;
-
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (sched_rr_get_interval,
+                           (__pid_t __pid, struct timespec *__t),
+                           __sched_rr_get_interval64);
+# else
+#  define sched_rr_get_interval __sched_rr_get_interval64
+# endif
+#endif
 
 #ifdef __USE_GNU
 /* Access macros for `cpu_set'.  */
diff --git a/posix/sys/wait.h b/posix/sys/wait.h
index 9e7bb7f154..5325bfa4d2 100644
--- a/posix/sys/wait.h
+++ b/posix/sys/wait.h
@@ -144,14 +144,34 @@ struct rusage;
    nil, store information about the child's resource usage there.  If the
    WUNTRACED bit is set in OPTIONS, return status for stopped children;
    otherwise don't.  */
+# ifndef __USE_TIME_BITS64
 extern __pid_t wait3 (int *__stat_loc, int __options,
 		      struct rusage * __usage) __THROWNL;
+# else
+#  ifdef __REDIRECT_NTHNL
+extern __pid_t __REDIRECT_NTHNL (wait3, (int *__stat_loc, int __options,
+                                         struct rusage * __usage),
+                                 __wait3_time64);
+#  else
+#   define wait3 __wait3_time64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_MISC
+# ifndef __USE_TIME_BITS64
 /* PID is like waitpid.  Other args are like wait3.  */
 extern __pid_t wait4 (__pid_t __pid, int *__stat_loc, int __options,
 		      struct rusage *__usage) __THROWNL;
+# else
+#  ifdef __REDIRECT_NTHNL
+extern __pid_t __REDIRECT_NTHNL (wait4, (__pid_t __pid, int *__stat_loc,
+                                         int __options, struct rusage *__usage),
+                                 __wait4_time64);
+#  else
+#   define wait4 __wait4_time64
+#  endif
+# endif
 #endif /* Use misc.  */
 
 
diff --git a/resolv/netdb.h b/resolv/netdb.h
index 1f36f25d4a..9b242ce3d1 100644
--- a/resolv/netdb.h
+++ b/resolv/netdb.h
@@ -701,6 +701,17 @@ extern int getaddrinfo_a (int __mode, struct gaicb *__list[__restrict_arr],
 extern int gai_suspend (const struct gaicb *const __list[], int __ent,
 			const struct timespec *__timeout);
 
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (gai_suspend, (const struct gaicb *const __list[],
+                                     int __ent,
+                                     const struct timespec *__timeout),
+                       __gai_suspend_time64);
+#  else
+#   define gai_suspend __gai_suspend_time64
+#  endif
+# endif
+
 /* Get the error status of the request REQ.  */
 extern int gai_error (struct gaicb *__req) __THROW;
 
diff --git a/resource/sys/resource.h b/resource/sys/resource.h
index d30379d085..551d25e275 100644
--- a/resource/sys/resource.h
+++ b/resource/sys/resource.h
@@ -88,6 +88,16 @@ extern int setrlimit64 (__rlimit_resource_t __resource,
    and put it in *USAGE.  Returns 0 for success, -1 for failure.  */
 extern int getrusage (__rusage_who_t __who, struct rusage *__usage) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (getrusage, (__rusage_who_t __who,
+                                       struct rusage *__usage),
+                           __getrusage64);
+# else
+# define getrusage __getrusage64
+# endif
+#endif
+
 /* Return the highest priority of any process specified by WHICH and WHO
    (see above); if WHO is zero, the current process, process group, or user
    (as specified by WHO) is used.  A lower priority number means higher
diff --git a/rt/aio.h b/rt/aio.h
index 3a107b2783..72cf626690 100644
--- a/rt/aio.h
+++ b/rt/aio.h
@@ -193,12 +193,17 @@ extern __ssize_t __REDIRECT_NTH (aio_return, (struct aiocb *__aiocbp),
 extern int __REDIRECT_NTH (aio_cancel,
 			   (int __fildes, struct aiocb *__aiocbp),
 			   aio_cancel64);
-
+#  ifdef __USE_TIME_BITS64
+extern int __REDIRECT_NTH (aio_suspend,
+			   (const struct aiocb *const __list[], int __nent,
+			    const struct timespec *__restrict __timeout),
+			   __aio_suspend_time64) __nonnull ((1));
+#  else
 extern int __REDIRECT_NTH (aio_suspend,
 			   (const struct aiocb *const __list[], int __nent,
 			    const struct timespec *__restrict __timeout),
 			   aio_suspend64) __nonnull ((1));
-
+#  endif
 extern int __REDIRECT_NTH (aio_fsync,
 			   (int __operation, struct aiocb *__aiocbp),
 			   aio_fsync64) __nonnull ((2));
@@ -210,7 +215,11 @@ extern int __REDIRECT_NTH (aio_fsync,
 #  define aio_error aio_error64
 #  define aio_return aio_return64
 #  define aio_cancel aio_cancel64
-#  define aio_suspend aio_suspend64
+#  ifdef __USE_TIME_BITS64
+#   define aio_suspend __aio_suspend_time64
+#  else
+#   define aio_suspend aio_suspend64
+#  endif
 #  define aio_fsync aio_fsync64
 # endif
 #endif
diff --git a/rt/mqueue.h b/rt/mqueue.h
index 8a62d99f50..e8a85637e4 100644
--- a/rt/mqueue.h
+++ b/rt/mqueue.h
@@ -71,6 +71,7 @@ extern int mq_send (mqd_t __mqdes, const char *__msg_ptr, size_t __msg_len,
 		    unsigned int __msg_prio) __nonnull ((2));
 
 #ifdef __USE_XOPEN2K
+# ifndef __USE_TIME_BITS64
 /* Receive the oldest from highest priority messages in message queue
    MQDES, stop waiting if ABS_TIMEOUT expires.  */
 extern ssize_t mq_timedreceive (mqd_t __mqdes, char *__restrict __msg_ptr,
@@ -85,6 +86,27 @@ extern int mq_timedsend (mqd_t __mqdes, const char *__msg_ptr,
 			 size_t __msg_len, unsigned int __msg_prio,
 			 const struct timespec *__abs_timeout)
   __nonnull ((2, 5));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (mq_timedreceive, (mqd_t __mqdes,
+                               char *__restrict __msg_ptr,
+                               size_t __msg_len,
+                               unsigned int *__restrict __msg_prio,
+                               const struct timespec *__restrict __abs_timeout),
+                       __mq_timedreceive_time64)
+  __nonnull ((2, 5));
+
+extern int __REDIRECT (mq_timedsend, (mqd_t __mqdes,
+                       const char *__msg_ptr, size_t __msg_len,
+                       unsigned int __msg_prio,
+                       const struct timespec *__abs_timeout),
+		       __mq_timedsend_time64)
+  __nonnull ((2, 5));
+#  else
+#   define mq_timedreceive __mq_timedreceive_time64
+#   define mq_timedsend __mq_timedsend_time64
+#  endif
+# endif
 #endif
 
 /* Define some inlines helping to catch common problems.  */
diff --git a/signal/signal.h b/signal/signal.h
index b17203c99c..5fd93382fc 100644
--- a/signal/signal.h
+++ b/signal/signal.h
@@ -269,10 +269,23 @@ extern int sigwaitinfo (const sigset_t *__restrict __set,
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+#  ifndef __USE_TIME_BITS64
 extern int sigtimedwait (const sigset_t *__restrict __set,
 			 siginfo_t *__restrict __info,
 			 const struct timespec *__restrict __timeout)
      __nonnull ((1));
+#  else
+#   ifdef __REDIRECT
+extern int __REDIRECT (sigtimedwait,
+                       (const sigset_t *__restrict __set,
+                        siginfo_t *__restrict __info,
+                        const struct timespec *__restrict __timeout),
+                       __sigtimedwait64)
+     __nonnull ((1));
+#   else
+#    define sigtimedwait __sigtimedwait64
+#   endif
+#  endif
 
 /* Send signal SIG to the process PID.  Associate data in VAL with the
    signal.  */
diff --git a/socket/sys/socket.h b/socket/sys/socket.h
index 949851a6ce..5577e75b80 100644
--- a/socket/sys/socket.h
+++ b/socket/sys/socket.h
@@ -196,9 +196,20 @@ extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags);
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
 		     unsigned int __vlen, int __flags,
 		     struct timespec *__tmo);
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (recvmmsg, (int __fd, struct mmsghdr *__vmessages,
+                                  unsigned int __vlen, int __flags,
+                                  struct timespec *__tmo),
+                       __recvmmsg64);
+#  else
+#   define recvmmsg __recvmmsg64
+#  endif
+# endif
 #endif
 
 
diff --git a/sysdeps/generic/features-time64.h b/sysdeps/generic/features-time64.h
new file mode 100644
index 0000000000..a5a677f837
--- /dev/null
+++ b/sysdeps/generic/features-time64.h
@@ -0,0 +1,19 @@
+/* Features part to handle 64-bit time_t support.  Generic 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/>.  */
+
+/* The generic configuration only support _TIME_BITS=32.  */
diff --git a/sysdeps/generic/time64-compat.h b/sysdeps/generic/time64-compat.h
new file mode 100644
index 0000000000..e44b6b68e3
--- /dev/null
+++ b/sysdeps/generic/time64-compat.h
@@ -0,0 +1,3 @@
+/* Header included by Versions to generate the 64 bit time_t compat symbols.
+   Legacy ABIs with default 32 bit time support define TIME64_NON_DEFAULT to
+   generate the 64 bit symbols.  */
diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h
index 22e037dcb4..52e2eadbfc 100644
--- a/sysdeps/nptl/pthread.h
+++ b/sysdeps/nptl/pthread.h
@@ -221,6 +221,7 @@ extern int pthread_join (pthread_t __th, void **__thread_return);
    the thread in *THREAD_RETURN, if THREAD_RETURN is not NULL.  */
 extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __THROW;
 
+# ifndef __USE_TIME_BITS64
 /* Make calling thread wait for termination of the thread TH, but only
    until TIMEOUT.  The exit status of the thread is stored in
    *THREAD_RETURN, if THREAD_RETURN is not NULL.
@@ -240,6 +241,23 @@ extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
 extern int pthread_clockjoin_np (pthread_t __th, void **__thread_return,
                                  clockid_t __clockid,
 				 const struct timespec *__abstime);
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (pthread_timedjoin_np,
+                       (pthread_t __th, void **__thread_return,
+                        const struct timespec *__abstime),
+                       __pthread_timedjoin_np64);
+
+extern int __REDIRECT (pthread_clockjoin_np,
+                       (pthread_t __th, void **__thread_return,
+                        clockid_t __clockid,
+                        const struct timespec *__abstime),
+                       __pthread_clockjoin_np64);
+#  else
+#   define pthread_timedjoin_np __pthread_timedjoin_np64
+#   define pthread_clockjoin_np __pthread_clockjoin_np64
+#  endif
+# endif
 #endif
 
 /* Indicate that the thread TH is never to be joined with PTHREAD_JOIN.
@@ -776,16 +794,39 @@ extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
 
 #ifdef __USE_XOPEN2K
 /* Wait until lock becomes available, or specified time passes. */
+# ifndef __USE_TIME_BITS64
 extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
 				    const struct timespec *__restrict
 				    __abstime) __THROWNL __nonnull ((1, 2));
+# else
+#  ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_mutex_timedlock,
+                             (pthread_mutex_t *__restrict __mutex,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_mutex_timedlock64) __nonnull ((1, 2));
+#  else
+#   define pthread_mutex_timedlock __pthread_mutex_timedlock64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
+# ifndef __USE_TIME_BITS64
 extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex,
 				    clockid_t __clockid,
 				    const struct timespec *__restrict
 				    __abstime) __THROWNL __nonnull ((1, 3));
+# else
+#  ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_mutex_clocklock,
+                             (pthread_mutex_t *__restrict __mutex,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_mutex_clocklock64) __nonnull ((1, 3));
+#  else
+#   define pthread_mutex_clocklock __pthread_mutex_clocklock64
+#  endif
+# endif
 #endif
 
 /* Unlock a mutex.  */
@@ -939,16 +980,41 @@ extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
 
 # ifdef __USE_XOPEN2K
 /* Try to acquire read lock for RWLOCK or return after specfied time.  */
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 2));
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_timedrdlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_timedrdlock64)
+    __nonnull ((1, 2));
+#   else
+#    define pthread_rwlock_timedrdlock __pthread_rwlock_timedrdlock64
+#   endif
+#  endif
 # endif
 
 # ifdef __USE_GNU
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock,
 				       clockid_t __clockid,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 3));
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_clockrdlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_clockrdlock64)
+    __nonnull ((1, 3));
+#   else
+#    define pthread_rwlock_clockrdlock __pthread_rwlock_clockrdlock64
+#   endif
+#  endif
 # endif
 
 /* Acquire write lock for RWLOCK.  */
@@ -961,16 +1027,42 @@ extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
 
 # ifdef __USE_XOPEN2K
 /* Try to acquire write lock for RWLOCK or return after specfied time.  */
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 2));
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_timedwrlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_timedwrlock64)
+    __nonnull ((1, 2));
+#   else
+#    define pthread_rwlock_timedwrlock __pthread_rwlock_timedwrlock64
+#   endif
+#  endif
 # endif
 
 # ifdef __USE_GNU
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock,
 				       clockid_t __clockid,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 3));
+
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_clockwrlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_clockwrlock64)
+    __nonnull ((1, 3));
+#   else
+#    define pthread_rwlock_clockwrlock __pthread_rwlock_clockwrlock64
+#   endif
+#  endif
 # endif
 
 /* Unlock RWLOCK.  */
@@ -1047,10 +1139,23 @@ extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
 				   pthread_mutex_t *__restrict __mutex,
 				   const struct timespec *__restrict __abstime)
      __nonnull ((1, 2, 3));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (pthread_cond_timedwait,
+                       (pthread_cond_t *__restrict __cond,
+                        pthread_mutex_t *__restrict __mutex,
+                        const struct timespec *__restrict __abstime),
+                       __pthread_cond_timedwait64)
+     __nonnull ((1, 2, 3));
+#  else
+#   define pthread_cond_timedwait __pthread_cond_timedwait64
+#  endif
+# endif
 
 # ifdef __USE_GNU
 /* Wait for condition variable COND to be signaled or broadcast until
@@ -1060,11 +1165,25 @@ extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
 
    This function is a cancellation point and therefore not marked with
    __THROW. */
+#  ifndef __USE_TIME_BITS64
 extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond,
 				   pthread_mutex_t *__restrict __mutex,
 				   __clockid_t __clock_id,
 				   const struct timespec *__restrict __abstime)
      __nonnull ((1, 2, 4));
+#  else
+#   ifdef __REDIRECT
+extern int __REDIRECT (pthread_cond_clockwait,
+                       (pthread_cond_t *__restrict __cond,
+                        pthread_mutex_t *__restrict __mutex,
+                        __clockid_t __clock_id,
+                        const struct timespec *__restrict __abstime),
+                       __pthread_cond_clockwait64)
+     __nonnull ((1, 2, 4));
+#   else
+#    define pthread_cond_clockwait __pthread_cond_clockwait64
+#   endif
+#  endif
 # endif
 
 /* Functions for handling condition variable attributes.  */
diff --git a/sysdeps/pthread/semaphore.h b/sysdeps/pthread/semaphore.h
index 7fb0e5c103..35780e7c4e 100644
--- a/sysdeps/pthread/semaphore.h
+++ b/sysdeps/pthread/semaphore.h
@@ -59,16 +59,41 @@ extern int sem_wait (sem_t *__sem) __nonnull ((1));
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int sem_timedwait (sem_t *__restrict __sem,
 			  const struct timespec *__restrict __abstime)
   __nonnull ((1, 2));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (sem_timedwait,
+                       (sem_t *__restrict __sem,
+                        const struct timespec *__restrict __abstime),
+                        __sem_timedwait64)
+  __nonnull ((1, 2));
+#  else
+#   define sem_timedwait __sem_timedwait64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
+# ifndef __USE_TIME_BITS64
 extern int sem_clockwait (sem_t *__restrict __sem,
 			  clockid_t clock,
 			  const struct timespec *__restrict __abstime)
   __nonnull ((1, 3));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (sem_clockwait,
+                       (sem_t *__restrict __sem,
+                        clockid_t clock,
+                        const struct timespec *__restrict __abstime),
+                        __sem_clockwait64)
+  __nonnull ((1, 3));
+#  else
+#   define sem_clockwait __sem_clockwait64
+#  endif
+# endif
 #endif
 
 /* Test whether SEM is posted.  */
diff --git a/sysdeps/pthread/threads.h b/sysdeps/pthread/threads.h
index 46929a025e..bf251c9db4 100644
--- a/sysdeps/pthread/threads.h
+++ b/sysdeps/pthread/threads.h
@@ -88,8 +88,18 @@ extern thrd_t thrd_current (void);
    __TIME_POINT.  The current thread may resume if receives a signal.  In
    that case, if __REMAINING is not NULL, the remaining time is stored in
    the object pointed by it.  */
+#ifndef __USE_TIME_BITS64
 extern int thrd_sleep (const struct timespec *__time_point,
 		       struct timespec *__remaining);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (thrd_sleep, (const struct timespec *__time_point,
+                                    struct timespec *__remaining),
+                       __thrd_sleep64);
+# else
+#  define thrd_sleep __thrd_sleep64
+# endif
+#endif
 
 /* Terminate current thread execution, cleaning up any thread local
    storage and freeing resources.  Returns the value specified in __RES.  */
@@ -131,8 +141,19 @@ extern int mtx_lock (mtx_t *__mutex);
 /* Block the current thread until the mutex pointed by __MUTEX is unlocked
    or time pointed by __TIME_POINT is reached.  In case the mutex is unlock,
    the current thread will not be blocked.  */
+#ifndef __USE_TIME_BITS64
 extern int mtx_timedlock (mtx_t *__restrict __mutex,
 			  const struct timespec *__restrict __time_point);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (mtx_timedlock, (mtx_t *__restrict __mutex,
+                                       const struct timespec *__restrict
+                                       __time_point),
+                       __mtx_timedlock64);
+# else
+#  define mtx_timedlock __mtx_timedlock64
+# endif
+#endif
 
 /* Try to lock the mutex pointed by __MUTEX without blocking.  If the mutex
    is free the current threads takes control of it, otherwise it returns
@@ -171,9 +192,21 @@ extern int cnd_wait (cnd_t *__cond, mtx_t *__mutex);
 /* Block current thread on the condition variable until condition variable
    pointed by __COND is signaled or time pointed by __TIME_POINT is
    reached.  */
+#ifndef __USE_TIME_BITS64
 extern int cnd_timedwait (cnd_t *__restrict __cond,
 			  mtx_t *__restrict __mutex,
 			  const struct timespec *__restrict __time_point);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (cnd_timedwait, (cnd_t *__restrict __cond,
+                                       mtx_t *__restrict __mutex,
+                                       const struct timespec *__restrict
+                                       __time_point),
+                       __cnd_timedwait64);
+# else
+#  define cnd_timedwait __cnd_timedwait64
+# endif
+#endif
 
 /* Destroy condition variable pointed by __cond and free all of its
    resources.  */
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index 0f1d9ecffd..43e015bf69 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -102,8 +102,11 @@ sysdep_headers += sys/mount.h sys/acct.h \
 		  bits/ipc-perm.h \
 		  bits/struct_stat.h \
 		  bits/struct_stat_time64_helper.h \
+		  bits/types/struct_msqid64_ds.h \
 		  bits/types/struct_msqid64_ds_helper.h \
+		  bits/types/struct_semid64_ds.h \
 		  bits/types/struct_semid64_ds_helper.h \
+		  bits/types/struct_shmid64_ds.h \
 		  bits/types/struct_shmid64_ds_helper.h
 
 tests += tst-clone tst-clone2 tst-clone3 tst-fanotify tst-personality \
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index 148f04c50a..52fedc61f0 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -1,3 +1,4 @@
+%include <time64-compat.h>
 libc {
   GLIBC_2.0 {
     # functions used in inline functions or macros
@@ -168,6 +169,81 @@ libc {
     getdents64; gettid; tgkill;
   }
   GLIBC_2.32 {
+  }
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    __adjtime64;
+    ___adjtimex64;
+    __clock_adjtime64;
+    __clock_getres64;
+    __clock_gettime64;
+    __clock_nanosleep_time64;
+    __clock_settime64;
+    __cnd_timedwait64;
+    __ctime64;
+    __ctime64_r;
+    __difftime64;
+    __fstat64_time64;
+    __fstatat64_time64;
+    __futimens64;
+    __futimes64;
+    __futimesat64;
+    __getitimer64;
+    __getrusage64;
+    __gettimeofday64;
+    __gmtime64;
+    __gmtime64_r;
+    __localtime64;
+    __localtime64_r;
+    __lstat64_time64;
+    __lutimes64;
+    __mktime64;
+    __msgctl64;
+    __mtx_timedlock64;
+    __nanosleep64;
+    __nanosleep64;
+    __ntp_gettime64;
+    __ntp_gettimex64;
+    __ppoll64;
+    __pselec64;
+    __pselect64;
+    __pthread_clockjoin_np64;
+    __pthread_cond_clockwait64;
+    __pthread_cond_timedwait64;
+    __pthread_mutex_clocklock64;
+    __pthread_mutex_timedlock64;
+    __pthread_rwlock_clockrdlock64;
+    __pthread_rwlock_clockwrlock64;
+    __pthread_rwlock_timedrdlock64;
+    __pthread_rwlock_timedwrlock64;
+    __pthread_timedjoin_np64;
+    __recvmmsg64;
+    __sched_rr_get_interval64;
+    __select64;
+    __sem_clockwait64;
+    __semctl64;
+    __semtimedop64;
+    __sem_timedwait64;
+    __setitimer64;
+    __settimeofday64;
+    __shmctl64;
+    __sigtimedwait64;
+    __stat64_time64;
+    __thrd_sleep64;
+    __time64;
+    __timegm64;
+    __timerfd_gettime64;
+    __timerfd_settime64;
+    __timespec_get64;
+    __timespec_getres64;
+    __utime64;
+    __utimensat64;
+    __utimes64;
+    __utimes64;
+    __wait3_time64;
+    __wait4_time64;
+%endif
   }
   GLIBC_PRIVATE {
     # functions used in other libraries
@@ -188,3 +264,24 @@ ld {
     __nptl_change_stack_perm;
   }
 }
+
+librt {
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    __aio_suspend_time64;
+    __mq_timedsend_time64;
+    __mq_timedreceive_time64;
+    __timer_gettime64;
+    __timer_settime64;
+%endif
+  }
+}
+
+libanl {
+%ifdef TIME64_NON_DEFAULT
+  GLIBC_2.34 {
+    __gai_suspend_time64;
+  }
+%endif
+}
diff --git a/sysdeps/unix/sysv/linux/arm/be/libanl.abilist b/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 120288d766..c9731cbcd6 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -190,16 +190,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libanl.abilist b/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index be987da77e..69dd484f83 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -187,16 +187,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/arm/time64-compat.h b/sysdeps/unix/sysv/linux/arm/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/arm/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/bits/msq.h b/sysdeps/unix/sysv/linux/bits/msq.h
index 3313b69d78..7c9c479551 100644
--- a/sysdeps/unix/sysv/linux/bits/msq.h
+++ b/sysdeps/unix/sysv/linux/bits/msq.h
@@ -26,6 +26,7 @@ typedef __syscall_ulong_t msgqnum_t;
 typedef __syscall_ulong_t msglen_t;
 
 #include <bits/types/struct_msqid_ds.h>
+#include <bits/types/struct_msqid64_ds.h>
 
 /* Define options for message queue functions.  */
 #define MSG_NOERROR	010000	/* no error if message is too big */
diff --git a/sysdeps/unix/sysv/linux/bits/sem.h b/sysdeps/unix/sysv/linux/bits/sem.h
index ad13287e66..776524b876 100644
--- a/sysdeps/unix/sysv/linux/bits/sem.h
+++ b/sysdeps/unix/sysv/linux/bits/sem.h
@@ -22,6 +22,7 @@
 #include <sys/types.h>
 #include <bits/timesize.h>
 #include <bits/types/struct_semid_ds.h>
+#include <bits/types/struct_semid64_ds.h>
 
 /* Flags for `semop'.  */
 #define SEM_UNDO	0x1000		/* undo the operation on exit */
diff --git a/sysdeps/unix/sysv/linux/bits/shm.h b/sysdeps/unix/sysv/linux/bits/shm.h
index a50c79d7be..454fc3f366 100644
--- a/sysdeps/unix/sysv/linux/bits/shm.h
+++ b/sysdeps/unix/sysv/linux/bits/shm.h
@@ -43,6 +43,7 @@ __BEGIN_DECLS
 typedef __syscall_ulong_t shmatt_t;
 
 #include <bits/types/struct_shmid_ds.h>
+#include <bits/types/struct_shmid64_ds.h>
 
 #ifdef __USE_MISC
 
diff --git a/sysdeps/unix/sysv/linux/bits/time.h b/sysdeps/unix/sysv/linux/bits/time.h
index ee5a8b3ef4..d0c98a7864 100644
--- a/sysdeps/unix/sysv/linux/bits/time.h
+++ b/sysdeps/unix/sysv/linux/bits/time.h
@@ -77,6 +77,16 @@ __BEGIN_DECLS
 /* Tune a POSIX clock.  */
 extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (clock_adjtime, (__clockid_t __clock_id,
+                                           struct timex *__utx),
+                           __clock_adjtime64);
+# else
+# define clock_adjtime __clock_adjtime64
+# endif
+#endif
+
 __END_DECLS
 #endif /* use GNU */
 
diff --git a/sysdeps/unix/sysv/linux/cnd_timedwait.c b/sysdeps/unix/sysv/linux/cnd_timedwait.c
index 0415c683f9..6e8ce3d61b 100644
--- a/sysdeps/unix/sysv/linux/cnd_timedwait.c
+++ b/sysdeps/unix/sysv/linux/cnd_timedwait.c
@@ -21,8 +21,8 @@
 #include "thrd_priv.h"
 
 int
-___cnd_timedwait64 (cnd_t *restrict cond, mtx_t *restrict mutex,
-                    const struct __timespec64 *restrict time_point)
+__cnd_timedwait64 (cnd_t *restrict cond, mtx_t *restrict mutex,
+                   const struct __timespec64 *restrict time_point)
 {
   int err_code = __pthread_cond_timedwait64 ((pthread_cond_t *) cond,
                                              (pthread_mutex_t *) mutex,
@@ -31,9 +31,9 @@ ___cnd_timedwait64 (cnd_t *restrict cond, mtx_t *restrict mutex,
 }
 
 #if __TIMESIZE == 64
-strong_alias (___cnd_timedwait64, ___cnd_timedwait)
+strong_alias (__cnd_timedwait64, ___cnd_timedwait)
 #else
-libc_hidden_ver (___cnd_timedwait64, __cnd_timedwait64)
+libc_hidden_def (__cnd_timedwait64)
 
 int
 ___cnd_timedwait (cnd_t *restrict cond, mtx_t *restrict mutex,
diff --git a/sysdeps/unix/sysv/linux/csky/libanl.abilist b/sysdeps/unix/sysv/linux/csky/libanl.abilist
index 416a6f8ddb..01f2e6cbf0 100644
--- a/sysdeps/unix/sysv/linux/csky/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.29 gai_cancel F
 GLIBC_2.29 gai_error F
 GLIBC_2.29 gai_suspend F
 GLIBC_2.29 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index adb4e15cb8..4754f90ef3 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -2268,16 +2268,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index c6690ef7c1..b60deca65a 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.29 timer_delete F
 GLIBC_2.29 timer_getoverrun F
 GLIBC_2.29 timer_gettime F
 GLIBC_2.29 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/csky/time64-compat.h b/sysdeps/unix/sysv/linux/csky/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/csky/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/features-time64.h b/sysdeps/unix/sysv/linux/features-time64.h
new file mode 100644
index 0000000000..c6a0a1874c
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/features-time64.h
@@ -0,0 +1,37 @@
+/* Features part to handle 64-bit time_t support.
+   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/>.  */
+
+/* We need to know the word size in order to check the time size.  */
+#include <bits/wordsize.h>
+#include <bits/timesize.h>
+
+#if defined _TIME_BITS
+# if _TIME_BITS == 64
+#  if ! defined (_FILE_OFFSET_BITS) || _FILE_OFFSET_BITS != 64
+#   error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64"
+#  elif __TIMESIZE == 32
+#   define __USE_TIME_BITS64	1
+#  endif
+# elif _TIME_BITS == 32
+#  if __TIMESIZE > 32
+#   error "_TIME_BITS=32 is not compatible with __TIMESIZE > 32"
+#  endif
+# else
+#  error Invalid _TIME_BITS value (can only be 32 or 64 bits)
+# endif
+#endif
diff --git a/sysdeps/unix/sysv/linux/hppa/libanl.abilist b/sysdeps/unix/sysv/linux/hppa/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/hppa/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index bd022276e8..9a5cf68e5b 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2221,16 +2221,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/hppa/time64-compat.h b/sysdeps/unix/sysv/linux/hppa/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/hppa/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/i386/libanl.abilist b/sysdeps/unix/sysv/linux/i386/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/i386/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 9e37e1cb38..b11715b63d 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2404,17 +2404,84 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __isnanf128 F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/i386/time64-compat.h b/sysdeps/unix/sysv/linux/i386/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/include/sys/msg.h b/sysdeps/unix/sysv/linux/include/sys/msg.h
index 522903f818..c460be0dc9 100644
--- a/sysdeps/unix/sysv/linux/include/sys/msg.h
+++ b/sysdeps/unix/sysv/linux/include/sys/msg.h
@@ -7,8 +7,6 @@ extern ssize_t __libc_msgrcv (int msqid, void *msgp, size_t msgsz,
 extern int __libc_msgsnd (int msqid, const void *msgp, size_t msgsz,
 			  int msgflg);
 
-# include <bits/types/struct_msqid64_ds.h>
-
 # if __TIMESIZE == 64
 #  define __msgctl64 __msgctl
 # else
diff --git a/sysdeps/unix/sysv/linux/include/sys/shm.h b/sysdeps/unix/sysv/linux/include/sys/shm.h
index 530a1cdfc9..85177a632d 100644
--- a/sysdeps/unix/sysv/linux/include/sys/shm.h
+++ b/sysdeps/unix/sysv/linux/include/sys/shm.h
@@ -3,8 +3,6 @@
 
 #ifndef _ISOMAC
 
-# include <bits/types/struct_shmid64_ds.h>
-
 # if __TIMESIZE == 64
 #  define __shmctl64 __shmctl
 # else
diff --git a/sysdeps/unix/sysv/linux/include/sys/timex.h b/sysdeps/unix/sysv/linux/include/sys/timex.h
index e136ed172e..c554248ed9 100644
--- a/sysdeps/unix/sysv/linux/include/sys/timex.h
+++ b/sysdeps/unix/sysv/linux/include/sys/timex.h
@@ -23,10 +23,12 @@
 
 # ifndef _ISOMAC
 
+extern int __adjtimex (struct timex *__ntx);
 libc_hidden_proto (__adjtimex)
 
 #  include <time.h>
 #  include <struct___timeval64.h>
+
 /* Local definition of 64 bit time supporting timex struct */
 #  if __TIMESIZE == 64
 #   define __timex64 timex
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 093854ad85..21c12260ee 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -191,16 +191,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 87554f1468..3804dba9a1 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2348,16 +2348,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/m68k/time64-compat.h b/sysdeps/unix/sysv/linux/m68k/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/m68k/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
index 67c7554803..c06e33a1cf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.18 gai_cancel F
 GLIBC_2.18 gai_error F
 GLIBC_2.18 gai_suspend F
 GLIBC_2.18 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index e9340671c5..b839762ad3 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2319,16 +2319,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index 889dfbc0ee..1b8fc10087 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timer_gettime F
 GLIBC_2.18 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
index 67c7554803..c06e33a1cf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.18 gai_cancel F
 GLIBC_2.18 gai_error F
 GLIBC_2.18 gai_suspend F
 GLIBC_2.18 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 6ddc0e90cf..983a3e9b41 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2316,16 +2316,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 889dfbc0ee..1b8fc10087 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timer_gettime F
 GLIBC_2.18 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/time64-compat.h b/sysdeps/unix/sysv/linux/microblaze/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/microblaze/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 8582c9c371..d7027d8dcb 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2313,16 +2313,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index 1539c1cef9..c4dd28e3b2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index b0849bec98..af20b0c702 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2311,16 +2311,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h b/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 386660a5a1..d6a4d8d98e 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2319,16 +2319,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index 1539c1cef9..c4dd28e3b2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h b/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/mtx_timedlock.c b/sysdeps/unix/sysv/linux/mtx_timedlock.c
index 7715ebb315..8983eb8556 100644
--- a/sysdeps/unix/sysv/linux/mtx_timedlock.c
+++ b/sysdeps/unix/sysv/linux/mtx_timedlock.c
@@ -21,8 +21,8 @@
 #include "thrd_priv.h"
 
 int
-___mtx_timedlock64 (mtx_t *restrict mutex,
-                    const struct __timespec64 *restrict time_point)
+__mtx_timedlock64 (mtx_t *restrict mutex,
+                   const struct __timespec64 *restrict time_point)
 {
   int err_code = __pthread_mutex_timedlock64 ((pthread_mutex_t *)mutex,
                                               time_point);
@@ -30,9 +30,9 @@ ___mtx_timedlock64 (mtx_t *restrict mutex,
 }
 
 #if __TIMESIZE == 64
-strong_alias (___mtx_timedlock64, ___mtx_timedlock)
+strong_alias (__mtx_timedlock64, ___mtx_timedlock)
 #else
-libc_hidden_ver (___mtx_timedlock64, __mtx_timedlock64)
+libc_hidden_def (__mtx_timedlock64)
 
 int
 ___mtx_timedlock (mtx_t *restrict mutex,
diff --git a/sysdeps/unix/sysv/linux/nios2/libanl.abilist b/sysdeps/unix/sysv/linux/nios2/libanl.abilist
index 6ff9c2d94e..6b080bd075 100644
--- a/sysdeps/unix/sysv/linux/nios2/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.21 gai_cancel F
 GLIBC_2.21 gai_error F
 GLIBC_2.21 gai_suspend F
 GLIBC_2.21 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index bd305f440f..714f88db1d 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2358,16 +2358,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index b4ae7a2dc2..2458614125 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.21 timer_delete F
 GLIBC_2.21 timer_getoverrun F
 GLIBC_2.21 timer_gettime F
 GLIBC_2.21 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/time64-compat.h b/sysdeps/unix/sysv/linux/nios2/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/nios2/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index c2665624aa..8df1f6f44d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2375,16 +2375,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 13ef6ef39e..c7fa299689 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2408,16 +2408,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index b699dedcc1..1767fa1f39 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2373,16 +2373,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h b/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/semctl.c b/sysdeps/unix/sysv/linux/semctl.c
index 1043b2b80d..bb2690d30f 100644
--- a/sysdeps/unix/sysv/linux/semctl.c
+++ b/sysdeps/unix/sysv/linux/semctl.c
@@ -21,7 +21,6 @@
 #include <ipc_priv.h>
 #include <sysdep.h>
 #include <shlib-compat.h>
-#include <bits/types/struct_semid64_ds.h>  /* For __semid64_ds.  */
 #include <linux/posix_types.h>             /* For __kernel_mode_t.  */
 
 /* The struct used to issue the syscall.  For architectures that assume
diff --git a/sysdeps/unix/sysv/linux/sh/be/libanl.abilist b/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 0fab90e1e3..ecba3c66a7 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2228,16 +2228,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libanl.abilist b/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 2f3a64b580..02308d1d1a 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2225,16 +2225,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sh/time64-compat.h b/sysdeps/unix/sysv/linux/sh/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sh/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index e6fe453f50..10e1a43441 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2366,16 +2366,83 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
 GLIBC_2.34 __pthread_cleanup_routine F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
 GLIBC_2.34 __pthread_key_create F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
 GLIBC_2.34 __pthread_mutex_lock F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
 GLIBC_2.34 __pthread_mutex_unlock F
 GLIBC_2.34 __pthread_register_cancel F
 GLIBC_2.34 __pthread_register_cancel_defer F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
 GLIBC_2.34 __pthread_unregister_cancel F
 GLIBC_2.34 __pthread_unregister_cancel_restore F
 GLIBC_2.34 __pthread_unwind_next F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __timespec_getres64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 call_once F
 GLIBC_2.34 cnd_broadcast F
 GLIBC_2.34 cnd_destroy F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index 38f0aad791..fb2769e87b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -34,6 +34,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h b/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/sys/timerfd.h b/sysdeps/unix/sysv/linux/sys/timerfd.h
index 4ad64c2259..790b9d5be6 100644
--- a/sysdeps/unix/sysv/linux/sys/timerfd.h
+++ b/sysdeps/unix/sysv/linux/sys/timerfd.h
@@ -47,9 +47,31 @@ extern int timerfd_settime (int __ufd, int __flags,
 			    const struct itimerspec *__utmr,
 			    struct itimerspec *__otmr) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timerfd_settime,
+                           (int __ufd, int __flags,
+                            const struct itimerspec *__restrict __value,
+                            struct itimerspec *__restrict __ovalue),
+                           __timerfd_settime64);
+# else
+# define timerfd_settime __timerfd_settime64
+# endif
+#endif
+
 /* Return the next expiration time of UFD.  */
 extern int timerfd_gettime (int __ufd, struct itimerspec *__otmr) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timerfd_gettime, (int __ufd,
+                                             struct itimerspec *__otmr),
+                           __timerfd_gettime64);
+# else
+# define timerfd_gettime __timerfd_gettime64
+# endif
+#endif
+
 __END_DECLS
 
 #endif /* sys/timerfd.h */
diff --git a/sysdeps/unix/sysv/linux/sys/timex.h b/sysdeps/unix/sysv/linux/sys/timex.h
index eb8d15a806..e17265c607 100644
--- a/sysdeps/unix/sysv/linux/sys/timex.h
+++ b/sysdeps/unix/sysv/linux/sys/timex.h
@@ -54,17 +54,34 @@ struct ntptimeval
 
 __BEGIN_DECLS
 
-extern int __adjtimex (struct timex *__ntx) __THROW;
+#ifndef __USE_TIME_BITS64
 extern int adjtimex (struct timex *__ntx) __THROW;
 extern int ntp_gettimex (struct ntptimeval *__ntv) __THROW;
 
-#ifdef __REDIRECT_NTH
+# ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv),
-			   ntp_gettimex);
+                           ntp_gettimex);
+# else
+#  define ntp_gettime ntp_gettimex
+# endif
+extern int ntp_adjtime (struct timex *__tntx) __THROW;
 #else
-# define ntp_gettime ntp_gettimex
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (adjtimex, (struct timex *__ntx),
+                           ___adjtimex64);
+extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv),
+                           __ntp_gettime64);
+extern int __REDIRECT_NTH (ntp_gettimex, (struct ntptimeval *__ntv),
+                           __ntp_gettimex64);
+extern int __REDIRECT_NTH (ntp_adjtime, (struct timex *__ntx),
+                           ___adjtimex64);
+# else
+#  define adjtimex ___adjtimex64
+#  define ntp_adjtime ___adjtimex64
+#  define ntp_gettime __ntp_gettime64
+#  define ntp_gettimex __ntp_gettimex64
+# endif
 #endif
-extern int ntp_adjtime (struct timex *__tntx) __THROW;
 
 __END_DECLS
 
diff --git a/sysvipc/sys/msg.h b/sysvipc/sys/msg.h
index 9ddedf5e15..f31a43757d 100644
--- a/sysvipc/sys/msg.h
+++ b/sysvipc/sys/msg.h
@@ -58,7 +58,17 @@ struct msgbuf
 __BEGIN_DECLS
 
 /* Message queue control operation.  */
+#ifndef __USE_TIME_BITS64
 extern int msgctl (int __msqid, int __cmd, struct msqid_ds *__buf) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (msgctl,
+                           (int __msqid, int __cmd, struct msqid_ds *__buf),
+                           __msgctl64);
+# else
+#  define msgctl __msgctl64
+# endif
+#endif
 
 /* Get messages queue.  */
 extern int msgget (key_t __key, int __msgflg) __THROW;
diff --git a/sysvipc/sys/sem.h b/sysvipc/sys/sem.h
index 03b65dff21..4eb4c51bbe 100644
--- a/sysvipc/sys/sem.h
+++ b/sysvipc/sys/sem.h
@@ -48,7 +48,17 @@ struct sembuf
 __BEGIN_DECLS
 
 /* Semaphore control operation.  */
+#ifndef __USE_TIME_BITS64
 extern int semctl (int __semid, int __semnum, int __cmd, ...) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (semctl,
+                           (int __semid, int __semnum, int __cmd, ...),
+                           __semctl64);
+# else
+#  define semctl __semctl64
+# endif
+#endif
 
 /* Get semaphore.  */
 extern int semget (key_t __key, int __nsems, int __semflg) __THROW;
@@ -58,8 +68,19 @@ extern int semop (int __semid, struct sembuf *__sops, size_t __nsops) __THROW;
 
 #ifdef __USE_GNU
 /* Operate on semaphore with timeout.  */
+# ifndef __USE_TIME_BITS64
 extern int semtimedop (int __semid, struct sembuf *__sops, size_t __nsops,
 		       const struct timespec *__timeout) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (semtimedop, (int __semid, struct sembuf *__sops,
+                                        size_t __nsops,
+                                        const struct timespec *__timeout),
+                           __semtimedop64);
+#  else
+#   define semtimedop __semtimedop64
+#  endif
+# endif
 #endif
 
 __END_DECLS
diff --git a/sysvipc/sys/shm.h b/sysvipc/sys/shm.h
index 7506ba67bf..b09e0497e6 100644
--- a/sysvipc/sys/shm.h
+++ b/sysvipc/sys/shm.h
@@ -46,7 +46,17 @@ __BEGIN_DECLS
    facility.  The definition is found in XPG4.2.  */
 
 /* Shared memory control operation.  */
+#ifndef __USE_TIME_BITS64
 extern int shmctl (int __shmid, int __cmd, struct shmid_ds *__buf) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (shmctl,
+                           (int __shmid, int __cmd, struct shmid_ds *__buf),
+                           __shmctl64);
+# else
+#  define shmctl __shmctl64
+# endif
+#endif
 
 /* Get shared memory segment.  */
 extern int shmget (key_t __key, size_t __size, int __shmflg) __THROW;
diff --git a/time/sys/time.h b/time/sys/time.h
index 42f91f186b..d21411c0b4 100644
--- a/time/sys/time.h
+++ b/time/sys/time.h
@@ -63,10 +63,21 @@ struct timezone
    use localtime etc. instead.
    This function itself is semi-obsolete;
    most callers should use time or clock_gettime instead. */
+#ifndef __USE_TIME_BITS64
 extern int gettimeofday (struct timeval *__restrict __tv,
 			 void *__restrict __tz) __THROW __nonnull ((1));
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (gettimeofday, (struct timeval *__restrict __tv,
+                                          void *__restrict __tz),
+                           __gettimeofday64) __nonnull ((1));
+# else
+#  define gettimeofday __gettimeofday64
+# endif
+#endif
 
 #ifdef __USE_MISC
+# ifndef __USE_TIME_BITS64
 /* Set the current time of day and timezone information.
    This call is restricted to the super-user.
    Setting the timezone in this way is obsolete, but we don't yet
@@ -82,6 +93,20 @@ extern int settimeofday (const struct timeval *__tv,
    This call is restricted to the super-user.  */
 extern int adjtime (const struct timeval *__delta,
 		    struct timeval *__olddelta) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (settimeofday, (const struct timeval *__tv,
+                                          const struct timezone *__tz),
+                           __settimeofday64);
+
+extern int __REDIRECT_NTH (adjtime, (const struct timeval *__delta,
+                                     struct timeval *__olddelta),
+                           __adjtime64);
+#  else
+#   define settimeofday __settimeofday64
+#   define adjtime __adjtime64
+#  endif
+# endif
 #endif
 
 
@@ -118,6 +143,7 @@ typedef enum __itimer_which __itimer_which_t;
 typedef int __itimer_which_t;
 #endif
 
+#ifndef __USE_TIME_BITS64
 /* Set *VALUE to the current setting of timer WHICH.
    Return 0 on success, -1 on errors.  */
 extern int getitimer (__itimer_which_t __which,
@@ -136,21 +162,66 @@ extern int setitimer (__itimer_which_t __which,
 extern int utimes (const char *__file, const struct timeval __tvp[2])
      __THROW __nonnull ((1));
 
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (getitimer, (__itimer_which_t __which,
+                                       struct itimerval *__value),
+                           __getitimer64);
+
+extern int __REDIRECT_NTH (setitimer, (__itimer_which_t __which,
+                                       const struct itimerval *__restrict __new,
+                                       struct itimerval *__restrict __old),
+                           __setitimer64);
+
+extern int __REDIRECT_NTH (utimes, (const char *__file,
+                                    const struct timeval __tvp[2]),
+                           __utimes64) __nonnull ((1));
+# else
+#  define getitimer __getitimer64
+#  define setitimer __setitimer64
+#  define utimes __utimes64
+# endif
+#endif
+
 #ifdef __USE_MISC
+# ifndef __USE_TIME_BITS64
 /* Same as `utimes', but does not follow symbolic links.  */
 extern int lutimes (const char *__file, const struct timeval __tvp[2])
      __THROW __nonnull ((1));
 
 /* Same as `utimes', but takes an open file descriptor instead of a name.  */
 extern int futimes (int __fd, const struct timeval __tvp[2]) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (lutimes, (const char *__file,
+                                     const struct timeval __tvp[2]),
+                           __lutimes64) __nonnull ((1));
+
+extern int __REDIRECT_NTH (futimes, (int __fd, const struct timeval __tvp[2]),
+                           __futimes64);
+#  else
+#   define lutimes __lutimes64
+#   define futimes __futimes64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
+# ifndef __USE_TIME_BITS64
 /* Change the access time of FILE relative to FD to TVP[0] and the
    modification time of FILE to TVP[1].  If TVP is a null pointer, use
    the current time instead.  Returns 0 on success, -1 on errors.  */
 extern int futimesat (int __fd, const char *__file,
 		      const struct timeval __tvp[2]) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (futimesat, (int __fd, const char *__file,
+                                       const struct timeval __tvp[2]),
+                           __futimesat64);
+#  else
+#   define futimesat __futimesat64
+#  endif
+# endif
 #endif
 
 
diff --git a/time/time.h b/time/time.h
index e255db9772..bde870c934 100644
--- a/time/time.h
+++ b/time/time.h
@@ -71,6 +71,7 @@ __BEGIN_DECLS
    The result / CLOCKS_PER_SEC is program time in seconds.  */
 extern clock_t clock (void) __THROW;
 
+#ifndef __USE_TIME_BITS64
 /* Return the current time and put it in *TIMER if TIMER is not NULL.  */
 extern time_t time (time_t *__timer) __THROW;
 
@@ -80,7 +81,18 @@ extern double difftime (time_t __time1, time_t __time0)
 
 /* Return the `time_t' representation of TP and normalize TP.  */
 extern time_t mktime (struct tm *__tp) __THROW;
-
+#else
+# ifdef __REDIRECT_NTH
+extern time_t __REDIRECT_NTH (time, (time_t *__timer), __time64);
+extern double __REDIRECT_NTH (difftime, (time_t __time1, time_t __time0),
+                              __difftime64) __attribute__ ((__const__));
+extern time_t __REDIRECT_NTH (mktime, (struct tm *__tp), __mktime64);
+# else
+#  define time __time64
+#  define difftime __difftime64
+#  define mktime __mktime64
+# endif
+#endif
 
 /* Format TP into S according to FORMAT.
    Write no more than MAXSIZE characters and return the number
@@ -114,6 +126,7 @@ extern char *strptime_l (const char *__restrict __s,
 #endif
 
 
+#ifndef __USE_TIME_BITS64
 /* Return the `struct tm' representation of *TIMER
    in Universal Coordinated Time (aka Greenwich Mean Time).  */
 extern struct tm *gmtime (const time_t *__timer) __THROW;
@@ -122,7 +135,20 @@ extern struct tm *gmtime (const time_t *__timer) __THROW;
    of *TIMER in the local timezone.  */
 extern struct tm *localtime (const time_t *__timer) __THROW;
 
+#else
+# ifdef __REDIRECT_NTH
+extern struct tm*__REDIRECT_NTH (gmtime, (const time_t *__timer), __gmtime64);
+extern struct tm *__REDIRECT_NTH (localtime, (const time_t *__timer),
+				  __localtime64);
+# else
+#  define gmtime __gmtime64
+#  define localtime __localtime64
+# endif
+#endif
+
+
 #if defined __USE_POSIX || __GLIBC_USE (ISOC2X)
+# ifndef __USE_TIME_BITS64
 /* Return the `struct tm' representation of *TIMER in UTC,
    using *TP to store the result.  */
 extern struct tm *gmtime_r (const time_t *__restrict __timer,
@@ -132,6 +158,20 @@ extern struct tm *gmtime_r (const time_t *__restrict __timer,
    using *TP to store the result.  */
 extern struct tm *localtime_r (const time_t *__restrict __timer,
 			       struct tm *__restrict __tp) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern struct tm*__REDIRECT_NTH (gmtime_r, (const time_t *__restrict __timer,
+                                            struct tm *__restrict __tp),
+                                 __gmtime64_r);
+
+extern struct tm*__REDIRECT_NTH (localtime_r, (const time_t *__restrict __t,
+                                               struct tm *__restrict __tp),
+                                 __localtime64_r);
+#  else
+#   define gmtime_r __gmtime64_r
+#   define localtime_r __localtime_r
+#  endif
+# endif
 #endif	/* POSIX || C2X */
 
 /* Return a string of the form "Day Mon dd hh:mm:ss yyyy\n"
@@ -139,7 +179,15 @@ extern struct tm *localtime_r (const time_t *__restrict __timer,
 extern char *asctime (const struct tm *__tp) __THROW;
 
 /* Equivalent to `asctime (localtime (timer))'.  */
+#ifndef __USE_TIME_BITS64
 extern char *ctime (const time_t *__timer) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern char *__REDIRECT_NTH (ctime, (const time_t *__timer), __ctime64);
+# else
+#  define ctime __ctime64
+# endif
+#endif
 
 #ifdef __USE_POSIX
 /* Reentrant versions of the above functions.  */
@@ -150,8 +198,18 @@ extern char *asctime_r (const struct tm *__restrict __tp,
 			char *__restrict __buf) __THROW;
 
 /* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'.  */
+#ifndef __USE_TIME_BITS64
 extern char *ctime_r (const time_t *__restrict __timer,
 		      char *__restrict __buf) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern char *__REDIRECT_NTH (ctime_r, (const time_t *__restrict __timer,
+                                       char *__restrict __buf), __ctime64_r);
+# else
+#  define ctime_r __ctime64_r
+# endif
+#endif
+
 #endif	/* POSIX */
 
 
@@ -186,11 +244,19 @@ extern long int timezone;
 /* Miscellaneous functions many Unices inherited from the public domain
    localtime package.  These are included only for compatibility.  */
 
+#ifndef __USE_TIME_BITS64
 /* Like `mktime', but for TP represents Universal Time, not local time.  */
 extern time_t timegm (struct tm *__tp) __THROW;
-
 /* Another name for `mktime'.  */
 extern time_t timelocal (struct tm *__tp) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern time_t __REDIRECT_NTH (timegm, (struct tm *__tp), __timegm64);
+extern time_t __REDIRECT_NTH (timelocal, (struct tm *__tp), __mktime64);
+# else
+#  define timegm __timegm64
+# endif
+#endif
 
 /* Return the number of days in YEAR.  */
 extern int dysize (int __year) __THROW  __attribute__ ((__const__));
@@ -198,6 +264,7 @@ extern int dysize (int __year) __THROW  __attribute__ ((__const__));
 
 
 #ifdef __USE_POSIX199309
+# ifndef __USE_TIME_BITS64
 /* Pause execution for a number of nanoseconds.
 
    This function is a cancellation point and therefore not marked with
@@ -205,7 +272,6 @@ extern int dysize (int __year) __THROW  __attribute__ ((__const__));
 extern int nanosleep (const struct timespec *__requested_time,
 		      struct timespec *__remaining);
 
-
 /* Get resolution of clock CLOCK_ID.  */
 extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __THROW;
 
@@ -215,15 +281,46 @@ extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW;
 /* Set clock CLOCK_ID to value TP.  */
 extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp)
      __THROW;
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (nanosleep, (const struct timespec *__requested_time,
+                                   struct timespec *__remaining),
+                       __nanosleep64);
+extern int __REDIRECT_NTH (clock_getres, (clockid_t __clock_id,
+                                          struct timespec *__res),
+                           __clock_getres64);
+extern int __REDIRECT_NTH (clock_gettime, (clockid_t __clock_id, struct
+                                           timespec *__tp), __clock_gettime64);
+extern int __REDIRECT_NTH (clock_settime, (clockid_t __clock_id, const struct
+                                           timespec *__tp), __clock_settime64);
+#  else
+#   define nanosleep __nanosleep64
+#   define clock_getres __clock_getres64
+#   define clock_gettime __clock_gettime64
+#   define clock_settime __clock_settime64
+#  endif
+# endif
+
 
 # ifdef __USE_XOPEN2K
 /* High-resolution sleep with the specified clock.
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+#  ifndef __USE_TIME_BITS64
 extern int clock_nanosleep (clockid_t __clock_id, int __flags,
 			    const struct timespec *__req,
 			    struct timespec *__rem);
+#  else
+#   ifdef __REDIRECT
+extern int __REDIRECT (clock_nanosleep, (clockid_t __clock_id, int __flags,
+                                         const struct timespec *__req,
+                                         struct timespec *__rem),
+                       __clock_nanosleep_time64);
+#   else
+#    define clock_nanosleep __clock_nanosleep_time64
+#   endif
+#  endif
 
 /* Return clock ID for CPU-time clock.  */
 extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __THROW;
@@ -239,6 +336,7 @@ extern int timer_create (clockid_t __clock_id,
 extern int timer_delete (timer_t __timerid) __THROW;
 
 /* Set timer TIMERID to VALUE, returning old value in OVALUE.  */
+# ifndef __USE_TIME_BITS64
 extern int timer_settime (timer_t __timerid, int __flags,
 			  const struct itimerspec *__restrict __value,
 			  struct itimerspec *__restrict __ovalue) __THROW;
@@ -246,6 +344,21 @@ extern int timer_settime (timer_t __timerid, int __flags,
 /* Get current value of timer TIMERID and store it in VALUE.  */
 extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
      __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (timer_settime, (timer_t __timerid, int __flags,
+     const struct itimerspec *__restrict __value,
+     struct itimerspec *__restrict __ovalue),
+                          __timer_settime64);
+
+extern int __REDIRECT_NTH (timer_gettime, (timer_t __timerid,
+                                           struct itimerspec *__value),
+                           __timer_gettime64);
+#  else
+#   define timer_settime __timer_settime64
+#   define timer_gettime __timer_gettime64
+#  endif
+# endif
 
 /* Get expiration overrun for timer TIMERID.  */
 extern int timer_getoverrun (timer_t __timerid) __THROW;
@@ -253,16 +366,35 @@ extern int timer_getoverrun (timer_t __timerid) __THROW;
 
 
 #ifdef __USE_ISOC11
+# ifndef __USE_TIME_BITS64
 /* Set TS to calendar time based in time base BASE.  */
 extern int timespec_get (struct timespec *__ts, int __base)
      __THROW __nonnull ((1));
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (timespec_get, (struct timespec *__ts, int __base),
+                           __timespec_get64) __nonnull ((1));
+#  else
+#   define timespec_get __timespec_get64
+#  endif
+# endif
 #endif
 
 
 #if __GLIBC_USE (ISOC2X)
+# ifndef __USE_TIME_BITS64
 /* Set TS to resolution of time base BASE.  */
 extern int timespec_getres (struct timespec *__ts, int __base)
      __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (timespec_getres, (struct timespec *__ts,
+                                             int __base),
+                           __timespec_getres64);
+#  else
+#   define timespec_getres __timespec_getres64
+#  endif
+# endif
 #endif


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [glibc/azanella/y2038] y2038: Add support for 64 bit time on legacy ABIs
@ 2021-03-05 19:21 Adhemerval Zanella
  0 siblings, 0 replies; 10+ messages in thread
From: Adhemerval Zanella @ 2021-03-05 19:21 UTC (permalink / raw)
  To: glibc-cvs

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=852ca956f8aca75304d75b6c0b0561349b927e75

commit 852ca956f8aca75304d75b6c0b0561349b927e75
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Wed Feb 17 13:35:19 2021 -0300

    y2038: Add support for 64 bit time on legacy ABIs
    
    A new build flag, _TIME_BITS, enables the usage of the newer 64 bit
    time symbols for legacy ABI (where 32 bit time_t is default).  The 64
    bit time support is only enabled if LFS (_FILE_OFFSET_BITS=64) is
    also used.
    
    Different than LFS support, the y2038 symbols are added only for the
    required ABIs (armhf, csky, hppa, i386, m68k, microblaze, mips32,
    mips64-n32, nios2, powerpc32, sparc32, s390-32, and sh).  The ABIs with
    64 bit time support are unchanged, both for symbol and types
    redirection.
    
    On Linux the full 64 bit time support requires a minimum of kernel
    version v5.1.  Otherwise, the 32 bit fallbacks are used and might
    results in error with overflow return code (EOVERFLOW).
    
    The i686-gnu does not yet support 64 bit time.
    
    This patch exports following rediretions to support 64 bit time:
    
      * libc:
        - adjtimex
        - adjtime
        - clock_adjtime
        - clock_getres
        - clock_gettime
        - clock_nanosleep
        - clock_settime
        - ctime
        - ctime_r
        - difftime
        - futimens
        - futimes
        - futimesat
        - getitimer
        - getrusage
        - gettimeofday
        - gmtime
        - gmtime_r
        - localtime
        - localtime_r
        - lutimes
        - mktime
        - msgctl
        - nanosleep
        - ntp_gettime
        - ntp_gettimex
        - ppoll
        - pselect
        - recvmmsg
        - sched_rr_get_interval
        - select
        - semctl
        - semtimedop
        - setitimer
        - settimeofday
        - shmctl
        - sigtimedwait
        - thrd_sleep
        - time
        - timegm
        - timelocal (alias to mktime)
        - timerfd_gettime
        - timerfd_settime
        - timespec_get
        - utime
        - utimensat
        - utimes
        - wait3
        - wait4
    
      * libpthread:
        - mtx_timedlock
        - pthread_clockjoin_np
        - pthread_cond_clockwait
        - pthread_cond_timedwait
        - pthread_mutex_clocklock
        - pthread_mutex_timedlock
        - pthread_rwlock_clockrdlock
        - pthread_rwlock_clockwrlock
        - pthread_rwlock_timedrdlock
        - pthread_rwlock_timedwrlock
        - pthread_timedjoin_np
        - sem_clockwait
        - sem_timedwait
    
      * librt:
        - aio_suspend
        - mq_timedreceive
        - mq_timedsend
        - timer_gettime
        - timer_settime
    
      * libanl:
        - gai_suspend

Diff:
---
 Makefile                                           |   2 +-
 NEWS                                               |   5 +
 include/features-time64.h                          |   1 +
 include/features.h                                 |   2 +
 io/sys/poll.h                                      |  11 ++
 io/sys/stat.h                                      | 113 ++++++++++++++++--
 io/utime.h                                         |  11 ++
 manual/creature.texi                               |  44 +++++++
 misc/sys/select.h                                  |  27 +++++
 posix/sched.h                                      |  11 +-
 posix/sys/wait.h                                   |  20 ++++
 resolv/netdb.h                                     |  11 ++
 resource/sys/resource.h                            |  10 ++
 rt/aio.h                                           |  15 ++-
 rt/mqueue.h                                        |  22 ++++
 signal/signal.h                                    |  13 +++
 socket/sys/socket.h                                |  11 ++
 sysdeps/generic/features-time64.h                  |  19 +++
 sysdeps/generic/time64-compat.h                    |   3 +
 sysdeps/nptl/pthread.h                             | 119 +++++++++++++++++++
 sysdeps/pthread/semaphore.h                        |  25 ++++
 sysdeps/pthread/threads.h                          |  33 ++++++
 sysdeps/unix/sysv/linux/Versions                   | 113 ++++++++++++++++++
 sysdeps/unix/sysv/linux/arm/be/libanl.abilist      |   1 +
 sysdeps/unix/sysv/linux/arm/be/libc.abilist        |  52 +++++++++
 sysdeps/unix/sysv/linux/arm/be/libpthread.abilist  |  14 +++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist       |   5 +
 sysdeps/unix/sysv/linux/arm/le/libanl.abilist      |   1 +
 sysdeps/unix/sysv/linux/arm/le/libc.abilist        |  52 +++++++++
 sysdeps/unix/sysv/linux/arm/le/libpthread.abilist  |  14 +++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist       |   5 +
 sysdeps/unix/sysv/linux/arm/time64-compat.h        |   2 +
 sysdeps/unix/sysv/linux/bits/msq.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/sem.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/shm.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/time.h                |  10 ++
 sysdeps/unix/sysv/linux/csky/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/csky/libc.abilist          |  52 +++++++++
 sysdeps/unix/sysv/linux/csky/libpthread.abilist    |  14 +++
 sysdeps/unix/sysv/linux/csky/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/csky/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/features-time64.h          |  37 ++++++
 sysdeps/unix/sysv/linux/hppa/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/hppa/libc.abilist          |  52 +++++++++
 sysdeps/unix/sysv/linux/hppa/libpthread.abilist    |  14 +++
 sysdeps/unix/sysv/linux/hppa/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/hppa/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/i386/Makefile              |   2 +
 sysdeps/unix/sysv/linux/i386/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/i386/libc.abilist          |  52 +++++++++
 sysdeps/unix/sysv/linux/i386/libpthread.abilist    |  14 +++
 sysdeps/unix/sysv/linux/i386/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/i386/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/include/sys/msg.h          |   2 -
 sysdeps/unix/sysv/linux/include/sys/shm.h          |   2 -
 sysdeps/unix/sysv/linux/include/sys/timex.h        |   2 +
 .../unix/sysv/linux/m68k/coldfire/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist |  52 +++++++++
 .../sysv/linux/m68k/coldfire/libpthread.abilist    |  14 +++
 .../unix/sysv/linux/m68k/coldfire/librt.abilist    |   5 +
 sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist |   1 +
 sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist   |  52 +++++++++
 .../unix/sysv/linux/m68k/m680x0/libpthread.abilist |  14 +++
 sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist  |   5 +
 sysdeps/unix/sysv/linux/m68k/time64-compat.h       |   2 +
 .../unix/sysv/linux/microblaze/be/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/microblaze/be/libc.abilist |  52 +++++++++
 .../sysv/linux/microblaze/be/libpthread.abilist    |  14 +++
 .../unix/sysv/linux/microblaze/be/librt.abilist    |   5 +
 .../unix/sysv/linux/microblaze/le/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/microblaze/le/libc.abilist |  52 +++++++++
 .../sysv/linux/microblaze/le/libpthread.abilist    |  14 +++
 .../unix/sysv/linux/microblaze/le/librt.abilist    |   5 +
 sysdeps/unix/sysv/linux/microblaze/time64-compat.h |   2 +
 .../unix/sysv/linux/mips/mips32/fpu/libc.abilist   |  52 +++++++++
 sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist |   1 +
 .../unix/sysv/linux/mips/mips32/libpthread.abilist |  14 +++
 sysdeps/unix/sysv/linux/mips/mips32/librt.abilist  |   5 +
 .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist |  52 +++++++++
 .../unix/sysv/linux/mips/mips32/time64-compat.h    |   2 +
 .../unix/sysv/linux/mips/mips64/n32/libanl.abilist |   1 +
 .../unix/sysv/linux/mips/mips64/n32/libc.abilist   |  52 +++++++++
 .../sysv/linux/mips/mips64/n32/libpthread.abilist  |  14 +++
 .../unix/sysv/linux/mips/mips64/n32/librt.abilist  |   5 +
 .../sysv/linux/mips/mips64/n32/time64-compat.h     |   2 +
 sysdeps/unix/sysv/linux/nios2/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/nios2/libc.abilist         |  52 +++++++++
 sysdeps/unix/sysv/linux/nios2/libpthread.abilist   |  14 +++
 sysdeps/unix/sysv/linux/nios2/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/nios2/time64-compat.h      |   2 +
 .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist  |  52 +++++++++
 .../sysv/linux/powerpc/powerpc32/libanl.abilist    |   1 +
 .../linux/powerpc/powerpc32/libpthread.abilist     |  14 +++
 .../sysv/linux/powerpc/powerpc32/librt.abilist     |   5 +
 .../linux/powerpc/powerpc32/nofpu/libc.abilist     |  52 +++++++++
 .../sysv/linux/powerpc/powerpc32/time64-compat.h   |   2 +
 .../unix/sysv/linux/s390/s390-32/libanl.abilist    |   1 +
 sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist  |  52 +++++++++
 .../sysv/linux/s390/s390-32/libpthread.abilist     |  14 +++
 sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist |   5 +
 .../unix/sysv/linux/s390/s390-32/time64-compat.h   |   2 +
 sysdeps/unix/sysv/linux/semctl.c                   |   1 -
 sysdeps/unix/sysv/linux/sh/be/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/sh/be/libc.abilist         |  52 +++++++++
 sysdeps/unix/sysv/linux/sh/be/libpthread.abilist   |  14 +++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/sh/le/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/sh/le/libc.abilist         |  52 +++++++++
 sysdeps/unix/sysv/linux/sh/le/libpthread.abilist   |  14 +++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/sh/time64-compat.h         |   2 +
 .../unix/sysv/linux/sparc/sparc32/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist |  52 +++++++++
 .../sysv/linux/sparc/sparc32/libpthread.abilist    |  14 +++
 .../unix/sysv/linux/sparc/sparc32/librt.abilist    |   5 +
 .../unix/sysv/linux/sparc/sparc32/time64-compat.h  |   2 +
 sysdeps/unix/sysv/linux/sys/timerfd.h              |  22 ++++
 sysdeps/unix/sysv/linux/sys/timex.h                |  28 ++++-
 sysvipc/sys/msg.h                                  |  10 ++
 sysvipc/sys/sem.h                                  |  21 ++++
 sysvipc/sys/shm.h                                  |  10 ++
 time/sys/time.h                                    |  71 ++++++++++++
 time/time.h                                        | 128 ++++++++++++++++++++-
 123 files changed, 2315 insertions(+), 29 deletions(-)

diff --git a/Makefile b/Makefile
index 71c7d8b5ec..2fd88294f5 100644
--- a/Makefile
+++ b/Makefile
@@ -68,7 +68,7 @@ endif # $(AUTOCONF) = no
 		   subdir_objs subdir_stubs subdir_testclean		\
 		   $(addprefix install-, no-libc.a bin lib data headers others)
 \f
-headers := limits.h values.h features.h gnu-versions.h \
+headers := limits.h values.h features.h features-time64.h gnu-versions.h \
 	   bits/xopen_lim.h gnu/libc-version.h stdc-predef.h \
 	   bits/libc-header-start.h
 
diff --git a/NEWS b/NEWS
index 73a1a0df97..7766db65a5 100644
--- a/NEWS
+++ b/NEWS
@@ -18,6 +18,11 @@ Major new features:
   a dump of information related to IFUNC resolver operation and
   glibc-hwcaps subdirectory selection.
 
+* Add support for 64 bit time_t for ABIs with defaults to 32 bit time_t.
+  This is enabled with the _TIME_BITS preprocessor set to 64 and only
+  supported when LFS (_FILE_OFFSET_BITS=64) is also enabled.  It is only
+  enabled for Linux and the full support requires a minimum version of 5.1.
+
 Deprecated and removed features, and other changes affecting compatibility:
 
   [Add deprecations, removals and changes affecting compatibility here]
diff --git a/include/features-time64.h b/include/features-time64.h
new file mode 100644
index 0000000000..06115b7c86
--- /dev/null
+++ b/include/features-time64.h
@@ -0,0 +1 @@
+#include_next <features-time64.h>
diff --git a/include/features.h b/include/features.h
index eb97470afa..9d39e11345 100644
--- a/include/features.h
+++ b/include/features.h
@@ -387,6 +387,8 @@
 # define __USE_FILE_OFFSET64	1
 #endif
 
+#include <features-time64.h>
+
 #if defined _DEFAULT_SOURCE
 # define __USE_MISC	1
 #endif
diff --git a/io/sys/poll.h b/io/sys/poll.h
index 2431dd1e14..4a0ce7eaad 100644
--- a/io/sys/poll.h
+++ b/io/sys/poll.h
@@ -63,6 +63,17 @@ extern int poll (struct pollfd *__fds, nfds_t __nfds, int __timeout);
 extern int ppoll (struct pollfd *__fds, nfds_t __nfds,
 		  const struct timespec *__timeout,
 		  const __sigset_t *__ss);
+
+# ifdef __USE_TIME_BITS64
+#  ifdef __REDIRECT
+extern int __REDIRECT (ppoll, (struct pollfd *__fds, nfds_t __nfds,
+                               const struct timespec *__timeout,
+                               const __sigset_t *__ss),
+                       __ppoll64);
+#  else
+#  define ppoll __ppoll64
+#  endif
+# endif
 #endif
 
 __END_DECLS
diff --git a/io/sys/stat.h b/io/sys/stat.h
index 549375c087..f7874ec5ba 100644
--- a/io/sys/stat.h
+++ b/io/sys/stat.h
@@ -209,21 +209,51 @@ extern int stat (const char *__restrict __file,
    that file descriptor FD is open on and put them in BUF.  */
 extern int fstat (int __fd, struct stat *__buf) __THROW __nonnull ((2));
 #else
-# ifdef __REDIRECT_NTH
+# ifdef __USE_TIME_BITS64
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
+				  struct stat *__restrict __buf),
+				  __stat64_time64)
+     __nonnull ((1, 2));
+extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf),
+				   __fstat64_time64)
+     __nonnull ((2));
+#  else
+#   define stat __stat64_time64
+#   define fstat __fstat64_time64
+#  endif
+# else
+#  ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
 				  struct stat *__restrict __buf), stat64)
      __nonnull ((1, 2));
 extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf), fstat64)
      __nonnull ((2));
-# else
-#  define stat stat64
-#  define fstat fstat64
+#  else
+#   define stat stat64
+#   define fstat fstat64
+#  endif
 # endif
 #endif
 #ifdef __USE_LARGEFILE64
+# ifndef __USE_TIME_BITS64
 extern int stat64 (const char *__restrict __file,
 		   struct stat64 *__restrict __buf) __THROW __nonnull ((1, 2));
 extern int fstat64 (int __fd, struct stat64 *__buf) __THROW __nonnull ((2));
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (stat64, (const char *__restrict __file,
+				    struct stat64 *__restrict __buf),
+			   __stat64_time64)
+     __nonnull ((1, 2));
+extern int __REDIRECT_NTH (fstat64, (int __fd, struct stat64 *__buf),
+			   __fstat64_time64)
+     __nonnull ((2));
+#  else
+#   define stat64 __stat64_time64
+#   define fstat64 __fstat64_time
+#  endif
+# endif
 #endif
 
 #ifdef __USE_ATFILE
@@ -235,20 +265,44 @@ extern int fstatat (int __fd, const char *__restrict __file,
 		    struct stat *__restrict __buf, int __flag)
      __THROW __nonnull ((2, 3));
 # else
-#  ifdef __REDIRECT_NTH
+#  ifdef __USE_TIME_BITS64
+#   ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
 				     struct stat *__restrict __buf,
 				     int __flag),
-			   fstatat64) __nonnull ((2, 3));
+			   __fstatat64_time64) __nonnull ((2, 3));
+#   else
+#    define fstatat __fstatat64_time64
+#   endif
 #  else
-#   define fstatat fstatat64
+#   ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
+				     struct stat *__restrict __buf,
+				     int __flag),
+			   fstatat64) __nonnull ((2, 3));
+#   else
+#    define fstatat fstatat64
+#   endif
 #  endif
 # endif
 
 # ifdef __USE_LARGEFILE64
+#  ifndef __USE_TIME_BITS64
 extern int fstatat64 (int __fd, const char *__restrict __file,
 		      struct stat64 *__restrict __buf, int __flag)
      __THROW __nonnull ((2, 3));
+#  else
+#   ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (fstatat64, (int __fd,
+				       const char *__restrict __file,
+				       struct stat64 *__restrict __buf,
+				       int __flag),
+			   __fstatat64_time64)
+     __nonnull ((2, 3));
+#   else
+#    define fstatat64 __fstatat64_time64
+#   endif
+#  endif
 # endif
 #endif
 
@@ -259,19 +313,37 @@ extern int fstatat64 (int __fd, const char *__restrict __file,
 extern int lstat (const char *__restrict __file,
 		  struct stat *__restrict __buf) __THROW __nonnull ((1, 2));
 # else
-#  ifdef __REDIRECT_NTH
+#  ifdef __USE_TIME_BITS64
+#   ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (lstat,
 			   (const char *__restrict __file,
-			    struct stat *__restrict __buf), lstat64)
+			    struct stat *__restrict __buf), __lstat64_time64)
      __nonnull ((1, 2));
+#   else
+#    define lstat __lstat64_time64
+#   endif
 #  else
-#   define lstat lstat64
+#   ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (lstat,
+			   (const char *__restrict __file,
+			    struct stat *__restrict __buf), lstat64)
+     __nonnull ((1, 2));
+#   else
+#    define lstat lstat64
+#   endif
 #  endif
 # endif
 # ifdef __USE_LARGEFILE64
+#  ifndef __USE_TIME_BITS64
 extern int lstat64 (const char *__restrict __file,
 		    struct stat64 *__restrict __buf)
      __THROW __nonnull ((1, 2));
+#  else
+extern int __REDIRECT_NTH (lstat64, (const char *__restrict __file,
+				     struct stat64 *__restrict __buf),
+			   __lstat64_time64)
+     __nonnull ((1, 2));
+#  endif
 # endif
 #endif
 
@@ -355,17 +427,38 @@ extern int mkfifoat (int __fd, const char *__path, __mode_t __mode)
 #endif
 \f
 #ifdef __USE_ATFILE
+# ifndef __USE_TIME_BITS64
 /* Set file access and modification times relative to directory file
    descriptor.  */
 extern int utimensat (int __fd, const char *__path,
 		      const struct timespec __times[2],
 		      int __flags)
      __THROW __nonnull ((2));
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (utimensat, (int fd, const char *__path,
+                                       const struct timespec __times[2],
+                                       int flags),
+                           __utimensat64) __nonnull ((2));
+#  else
+#   define utimensat __utimensat64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_XOPEN2K8
+# ifndef __USE_TIME_BITS64
 /* Set file access and modification times of the file associated with FD.  */
 extern int futimens (int __fd, const struct timespec __times[2]) __THROW;
+
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (futimens, (int fd, const struct timespec __times[2]),
+                           __futimens64);
+#  else
+#   define futimens __futimens64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
diff --git a/io/utime.h b/io/utime.h
index c7612d0838..1a645a3fff 100644
--- a/io/utime.h
+++ b/io/utime.h
@@ -46,10 +46,21 @@ struct utimbuf
 
 /* Set the access and modification times of FILE to those given in
    *FILE_TIMES.  If FILE_TIMES is NULL, set them to the current time.  */
+#ifndef __USE_TIME_BITS64
 extern int utime (const char *__file,
 		  const struct utimbuf *__file_times)
      __THROW __nonnull ((1));
 
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (utime, (const char *__file,
+                                   const struct utimbuf *__file_times),
+                           __utime64);
+# else
+#  define utime __utime64
+# endif
+#endif
+
 __END_DECLS
 
 #endif /* utime.h */
diff --git a/manual/creature.texi b/manual/creature.texi
index 5090735e4f..606b73d184 100644
--- a/manual/creature.texi
+++ b/manual/creature.texi
@@ -165,6 +165,50 @@ This macro was introduced as part of the Large File Support extension
 (LFS).
 @end defvr
 
+@defvr Macro _TIME_BITS
+This macro determines the bit size of @code{time_t} (and therefore the
+bit size of all @code{time_t} derived types and the prototypes of all
+related functions).  If @code{_TIME_BITS} is undefined, the bit size of
+@code{time_t} is architecture dependent.
+
+Possible values of @code{_TIME_BITS}:
+@enumerate
+@item
+@code{_TIME_BITS=64} and port from the outset uses 64-bit
+@code{time_t} and word size equals to @w{64 bits} (e.g. x86_64) - no
+action
+
+@item
+@code{_TIME_BITS=32} and port from the outset uses 32-bit
+@code{time_t} and word size equals to @w{64 bits} (e.g. ARM) - no
+action
+
+@item
+@code{_TIME_BITS=64} and port from the outset uses 64-bit
+@code{time_t} and word size equals to @w{32 bits} (e.g. ARC, RV32)
+- no action
+
+@item
+@code{_TIME_BITS=64} and port from the outset uses 32-bit
+@code{time_t} and word size equals to @w{32 bits} (e.g. ARM)
+- the @code{time_t} is modified to be able to hold 64-bit time.
+
+@item
+For any other use case the compile-time error is emitted.
+@end enumerate
+
+The @code{_TIME_BITS} can be only used when @code{_FILE_OFFSET_BITS=64}
+is also defined.
+
+For the point @b{4} above, calls to proper syscalls depend on the
+Linux kernel version on which the system is running. For Linux kernel
+version above @b{5.1} syscalls supporting 64-bit time are used. Otherwise,
+a fallback code is used with legacy (i.e. 32-bit) syscalls.
+
+By using this macro certain ports gain support for 64-bit time and as
+a result become immune to Y2038 problem.
+@end defvr
+
 @defvr Macro _ISOC99_SOURCE
 @standards{GNU, (none)}
 If this macro is defined, features from ISO C99 are included.  Since
diff --git a/misc/sys/select.h b/misc/sys/select.h
index 188a7fe607..e9c0e8fc20 100644
--- a/misc/sys/select.h
+++ b/misc/sys/select.h
@@ -98,10 +98,23 @@ __BEGIN_DECLS
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+#ifndef __USE_TIME_BITS64
 extern int select (int __nfds, fd_set *__restrict __readfds,
 		   fd_set *__restrict __writefds,
 		   fd_set *__restrict __exceptfds,
 		   struct timeval *__restrict __timeout);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (select,
+                       (int __nfds, fd_set *__restrict __readfds,
+                        fd_set *__restrict __writefds,
+                        fd_set *__restrict __exceptfds,
+                        struct timeval *__restrict __timeout),
+                       __select64);
+# else
+#  define select __select64
+# endif
+#endif
 
 #ifdef __USE_XOPEN2K
 /* Same as above only that the TIMEOUT value is given with higher
@@ -110,11 +123,25 @@ extern int select (int __nfds, fd_set *__restrict __readfds,
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int pselect (int __nfds, fd_set *__restrict __readfds,
 		    fd_set *__restrict __writefds,
 		    fd_set *__restrict __exceptfds,
 		    const struct timespec *__restrict __timeout,
 		    const __sigset_t *__restrict __sigmask);
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (pselect,
+                       (int __nfds, fd_set *__restrict __readfds,
+                        fd_set *__restrict __writefds,
+                        fd_set *__restrict __exceptfds,
+                        const struct timespec *__restrict __timeout,
+                        const __sigset_t *__restrict __sigmask),
+                       __pselect64);
+#  else
+#   define pselect __pselect64
+#  endif
+# endif
 #endif
 
 
diff --git a/posix/sched.h b/posix/sched.h
index d8ce08a3ea..7dd97a49b2 100644
--- a/posix/sched.h
+++ b/posix/sched.h
@@ -74,8 +74,17 @@ extern int sched_get_priority_max (int __algorithm) __THROW;
 extern int sched_get_priority_min (int __algorithm) __THROW;
 
 /* Get the SCHED_RR interval for the named process.  */
+#ifndef __USE_TIME_BITS64
 extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __THROW;
-
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (sched_rr_get_interval,
+                           (__pid_t __pid, struct timespec *__t),
+                           __sched_rr_get_interval64);
+# else
+#  define sched_rr_get_interval __sched_rr_get_interval64
+# endif
+#endif
 
 #ifdef __USE_GNU
 /* Access macros for `cpu_set'.  */
diff --git a/posix/sys/wait.h b/posix/sys/wait.h
index 9e7bb7f154..5325bfa4d2 100644
--- a/posix/sys/wait.h
+++ b/posix/sys/wait.h
@@ -144,14 +144,34 @@ struct rusage;
    nil, store information about the child's resource usage there.  If the
    WUNTRACED bit is set in OPTIONS, return status for stopped children;
    otherwise don't.  */
+# ifndef __USE_TIME_BITS64
 extern __pid_t wait3 (int *__stat_loc, int __options,
 		      struct rusage * __usage) __THROWNL;
+# else
+#  ifdef __REDIRECT_NTHNL
+extern __pid_t __REDIRECT_NTHNL (wait3, (int *__stat_loc, int __options,
+                                         struct rusage * __usage),
+                                 __wait3_time64);
+#  else
+#   define wait3 __wait3_time64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_MISC
+# ifndef __USE_TIME_BITS64
 /* PID is like waitpid.  Other args are like wait3.  */
 extern __pid_t wait4 (__pid_t __pid, int *__stat_loc, int __options,
 		      struct rusage *__usage) __THROWNL;
+# else
+#  ifdef __REDIRECT_NTHNL
+extern __pid_t __REDIRECT_NTHNL (wait4, (__pid_t __pid, int *__stat_loc,
+                                         int __options, struct rusage *__usage),
+                                 __wait4_time64);
+#  else
+#   define wait4 __wait4_time64
+#  endif
+# endif
 #endif /* Use misc.  */
 
 
diff --git a/resolv/netdb.h b/resolv/netdb.h
index 1f36f25d4a..9b242ce3d1 100644
--- a/resolv/netdb.h
+++ b/resolv/netdb.h
@@ -701,6 +701,17 @@ extern int getaddrinfo_a (int __mode, struct gaicb *__list[__restrict_arr],
 extern int gai_suspend (const struct gaicb *const __list[], int __ent,
 			const struct timespec *__timeout);
 
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (gai_suspend, (const struct gaicb *const __list[],
+                                     int __ent,
+                                     const struct timespec *__timeout),
+                       __gai_suspend_time64);
+#  else
+#   define gai_suspend __gai_suspend_time64
+#  endif
+# endif
+
 /* Get the error status of the request REQ.  */
 extern int gai_error (struct gaicb *__req) __THROW;
 
diff --git a/resource/sys/resource.h b/resource/sys/resource.h
index d30379d085..551d25e275 100644
--- a/resource/sys/resource.h
+++ b/resource/sys/resource.h
@@ -88,6 +88,16 @@ extern int setrlimit64 (__rlimit_resource_t __resource,
    and put it in *USAGE.  Returns 0 for success, -1 for failure.  */
 extern int getrusage (__rusage_who_t __who, struct rusage *__usage) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (getrusage, (__rusage_who_t __who,
+                                       struct rusage *__usage),
+                           __getrusage64);
+# else
+# define getrusage __getrusage64
+# endif
+#endif
+
 /* Return the highest priority of any process specified by WHICH and WHO
    (see above); if WHO is zero, the current process, process group, or user
    (as specified by WHO) is used.  A lower priority number means higher
diff --git a/rt/aio.h b/rt/aio.h
index 3a107b2783..72cf626690 100644
--- a/rt/aio.h
+++ b/rt/aio.h
@@ -193,12 +193,17 @@ extern __ssize_t __REDIRECT_NTH (aio_return, (struct aiocb *__aiocbp),
 extern int __REDIRECT_NTH (aio_cancel,
 			   (int __fildes, struct aiocb *__aiocbp),
 			   aio_cancel64);
-
+#  ifdef __USE_TIME_BITS64
+extern int __REDIRECT_NTH (aio_suspend,
+			   (const struct aiocb *const __list[], int __nent,
+			    const struct timespec *__restrict __timeout),
+			   __aio_suspend_time64) __nonnull ((1));
+#  else
 extern int __REDIRECT_NTH (aio_suspend,
 			   (const struct aiocb *const __list[], int __nent,
 			    const struct timespec *__restrict __timeout),
 			   aio_suspend64) __nonnull ((1));
-
+#  endif
 extern int __REDIRECT_NTH (aio_fsync,
 			   (int __operation, struct aiocb *__aiocbp),
 			   aio_fsync64) __nonnull ((2));
@@ -210,7 +215,11 @@ extern int __REDIRECT_NTH (aio_fsync,
 #  define aio_error aio_error64
 #  define aio_return aio_return64
 #  define aio_cancel aio_cancel64
-#  define aio_suspend aio_suspend64
+#  ifdef __USE_TIME_BITS64
+#   define aio_suspend __aio_suspend_time64
+#  else
+#   define aio_suspend aio_suspend64
+#  endif
 #  define aio_fsync aio_fsync64
 # endif
 #endif
diff --git a/rt/mqueue.h b/rt/mqueue.h
index 8a62d99f50..e8a85637e4 100644
--- a/rt/mqueue.h
+++ b/rt/mqueue.h
@@ -71,6 +71,7 @@ extern int mq_send (mqd_t __mqdes, const char *__msg_ptr, size_t __msg_len,
 		    unsigned int __msg_prio) __nonnull ((2));
 
 #ifdef __USE_XOPEN2K
+# ifndef __USE_TIME_BITS64
 /* Receive the oldest from highest priority messages in message queue
    MQDES, stop waiting if ABS_TIMEOUT expires.  */
 extern ssize_t mq_timedreceive (mqd_t __mqdes, char *__restrict __msg_ptr,
@@ -85,6 +86,27 @@ extern int mq_timedsend (mqd_t __mqdes, const char *__msg_ptr,
 			 size_t __msg_len, unsigned int __msg_prio,
 			 const struct timespec *__abs_timeout)
   __nonnull ((2, 5));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (mq_timedreceive, (mqd_t __mqdes,
+                               char *__restrict __msg_ptr,
+                               size_t __msg_len,
+                               unsigned int *__restrict __msg_prio,
+                               const struct timespec *__restrict __abs_timeout),
+                       __mq_timedreceive_time64)
+  __nonnull ((2, 5));
+
+extern int __REDIRECT (mq_timedsend, (mqd_t __mqdes,
+                       const char *__msg_ptr, size_t __msg_len,
+                       unsigned int __msg_prio,
+                       const struct timespec *__abs_timeout),
+		       __mq_timedsend_time64)
+  __nonnull ((2, 5));
+#  else
+#   define mq_timedreceive __mq_timedreceive_time64
+#   define mq_timedsend __mq_timedsend_time64
+#  endif
+# endif
 #endif
 
 /* Define some inlines helping to catch common problems.  */
diff --git a/signal/signal.h b/signal/signal.h
index b17203c99c..5fd93382fc 100644
--- a/signal/signal.h
+++ b/signal/signal.h
@@ -269,10 +269,23 @@ extern int sigwaitinfo (const sigset_t *__restrict __set,
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+#  ifndef __USE_TIME_BITS64
 extern int sigtimedwait (const sigset_t *__restrict __set,
 			 siginfo_t *__restrict __info,
 			 const struct timespec *__restrict __timeout)
      __nonnull ((1));
+#  else
+#   ifdef __REDIRECT
+extern int __REDIRECT (sigtimedwait,
+                       (const sigset_t *__restrict __set,
+                        siginfo_t *__restrict __info,
+                        const struct timespec *__restrict __timeout),
+                       __sigtimedwait64)
+     __nonnull ((1));
+#   else
+#    define sigtimedwait __sigtimedwait64
+#   endif
+#  endif
 
 /* Send signal SIG to the process PID.  Associate data in VAL with the
    signal.  */
diff --git a/socket/sys/socket.h b/socket/sys/socket.h
index 949851a6ce..5577e75b80 100644
--- a/socket/sys/socket.h
+++ b/socket/sys/socket.h
@@ -196,9 +196,20 @@ extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags);
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
 		     unsigned int __vlen, int __flags,
 		     struct timespec *__tmo);
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (recvmmsg, (int __fd, struct mmsghdr *__vmessages,
+                                  unsigned int __vlen, int __flags,
+                                  struct timespec *__tmo),
+                       __recvmmsg64);
+#  else
+#   define recvmmsg __recvmmsg64
+#  endif
+# endif
 #endif
 
 
diff --git a/sysdeps/generic/features-time64.h b/sysdeps/generic/features-time64.h
new file mode 100644
index 0000000000..a5a677f837
--- /dev/null
+++ b/sysdeps/generic/features-time64.h
@@ -0,0 +1,19 @@
+/* Features part to handle 64-bit time_t support.  Generic 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/>.  */
+
+/* The generic configuration only support _TIME_BITS=32.  */
diff --git a/sysdeps/generic/time64-compat.h b/sysdeps/generic/time64-compat.h
new file mode 100644
index 0000000000..e44b6b68e3
--- /dev/null
+++ b/sysdeps/generic/time64-compat.h
@@ -0,0 +1,3 @@
+/* Header included by Versions to generate the 64 bit time_t compat symbols.
+   Legacy ABIs with default 32 bit time support define TIME64_NON_DEFAULT to
+   generate the 64 bit symbols.  */
diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h
index a04a3a2754..8f3a41279f 100644
--- a/sysdeps/nptl/pthread.h
+++ b/sysdeps/nptl/pthread.h
@@ -221,6 +221,7 @@ extern int pthread_join (pthread_t __th, void **__thread_return);
    the thread in *THREAD_RETURN, if THREAD_RETURN is not NULL.  */
 extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __THROW;
 
+# ifndef __USE_TIME_BITS64
 /* Make calling thread wait for termination of the thread TH, but only
    until TIMEOUT.  The exit status of the thread is stored in
    *THREAD_RETURN, if THREAD_RETURN is not NULL.
@@ -240,6 +241,23 @@ extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
 extern int pthread_clockjoin_np (pthread_t __th, void **__thread_return,
                                  clockid_t __clockid,
 				 const struct timespec *__abstime);
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (pthread_timedjoin_np,
+                       (pthread_t __th, void **__thread_return,
+                        const struct timespec *__abstime),
+                       __pthread_timedjoin_np64);
+
+extern int __REDIRECT (pthread_clockjoin_np,
+                       (pthread_t __th, void **__thread_return,
+                        clockid_t __clockid,
+                        const struct timespec *__abstime),
+                       __pthread_clockjoin_np64);
+#  else
+#   define pthread_timedjoin_np __pthread_timedjoin_np64
+#   define pthread_clockjoin_np __pthread_clockjoin_np64
+#  endif
+# endif
 #endif
 
 /* Indicate that the thread TH is never to be joined with PTHREAD_JOIN.
@@ -773,16 +791,39 @@ extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
 
 #ifdef __USE_XOPEN2K
 /* Wait until lock becomes available, or specified time passes. */
+# ifndef __USE_TIME_BITS64
 extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
 				    const struct timespec *__restrict
 				    __abstime) __THROWNL __nonnull ((1, 2));
+# else
+#  ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_mutex_timedlock,
+                             (pthread_mutex_t *__restrict __mutex,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_mutex_timedlock64) __nonnull ((1, 2));
+#  else
+#   define pthread_mutex_timedlock __pthread_mutex_timedlock64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
+# ifndef __USE_TIME_BITS64
 extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex,
 				    clockid_t __clockid,
 				    const struct timespec *__restrict
 				    __abstime) __THROWNL __nonnull ((1, 3));
+# else
+#  ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_mutex_clocklock,
+                             (pthread_mutex_t *__restrict __mutex,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_mutex_clocklock64) __nonnull ((1, 3));
+#  else
+#   define pthread_mutex_clocklock __pthread_mutex_clocklock64
+#  endif
+# endif
 #endif
 
 /* Unlock a mutex.  */
@@ -919,16 +960,41 @@ extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
 
 # ifdef __USE_XOPEN2K
 /* Try to acquire read lock for RWLOCK or return after specfied time.  */
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 2));
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_timedrdlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_timedrdlock64)
+    __nonnull ((1, 2));
+#   else
+#    define pthread_rwlock_timedrdlock __pthread_rwlock_timedrdlock64
+#   endif
+#  endif
 # endif
 
 # ifdef __USE_GNU
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock,
 				       clockid_t __clockid,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 3));
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_clockrdlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_clockrdlock64)
+    __nonnull ((1, 3));
+#   else
+#    define pthread_rwlock_clockrdlock __pthread_rwlock_clockrdlock64
+#   endif
+#  endif
 # endif
 
 /* Acquire write lock for RWLOCK.  */
@@ -941,16 +1007,42 @@ extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
 
 # ifdef __USE_XOPEN2K
 /* Try to acquire write lock for RWLOCK or return after specfied time.  */
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 2));
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_timedwrlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_timedwrlock64)
+    __nonnull ((1, 2));
+#   else
+#    define pthread_rwlock_timedwrlock __pthread_rwlock_timedwrlock64
+#   endif
+#  endif
 # endif
 
 # ifdef __USE_GNU
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock,
 				       clockid_t __clockid,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 3));
+
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_clockwrlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_clockwrlock64)
+    __nonnull ((1, 3));
+#   else
+#    define pthread_rwlock_clockwrlock __pthread_rwlock_clockwrlock64
+#   endif
+#  endif
 # endif
 
 /* Unlock RWLOCK.  */
@@ -1027,10 +1119,23 @@ extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
 				   pthread_mutex_t *__restrict __mutex,
 				   const struct timespec *__restrict __abstime)
      __nonnull ((1, 2, 3));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (pthread_cond_timedwait,
+                       (pthread_cond_t *__restrict __cond,
+                        pthread_mutex_t *__restrict __mutex,
+                        const struct timespec *__restrict __abstime),
+                       __pthread_cond_timedwait64)
+     __nonnull ((1, 2, 3));
+#  else
+#   define pthread_cond_timedwait __pthread_cond_timedwait64
+#  endif
+# endif
 
 # ifdef __USE_GNU
 /* Wait for condition variable COND to be signaled or broadcast until
@@ -1040,11 +1145,25 @@ extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
 
    This function is a cancellation point and therefore not marked with
    __THROW. */
+#  ifndef __USE_TIME_BITS64
 extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond,
 				   pthread_mutex_t *__restrict __mutex,
 				   __clockid_t __clock_id,
 				   const struct timespec *__restrict __abstime)
      __nonnull ((1, 2, 4));
+#  else
+#   ifdef __REDIRECT
+extern int __REDIRECT (pthread_cond_clockwait,
+                       (pthread_cond_t *__restrict __cond,
+                        pthread_mutex_t *__restrict __mutex,
+                        __clockid_t __clock_id,
+                        const struct timespec *__restrict __abstime),
+                       __pthread_cond_clockwait64)
+     __nonnull ((1, 2, 4));
+#   else
+#    define pthread_cond_clockwait __pthread_cond_clockwait64
+#   endif
+#  endif
 # endif
 
 /* Functions for handling condition variable attributes.  */
diff --git a/sysdeps/pthread/semaphore.h b/sysdeps/pthread/semaphore.h
index 7fb0e5c103..35780e7c4e 100644
--- a/sysdeps/pthread/semaphore.h
+++ b/sysdeps/pthread/semaphore.h
@@ -59,16 +59,41 @@ extern int sem_wait (sem_t *__sem) __nonnull ((1));
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int sem_timedwait (sem_t *__restrict __sem,
 			  const struct timespec *__restrict __abstime)
   __nonnull ((1, 2));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (sem_timedwait,
+                       (sem_t *__restrict __sem,
+                        const struct timespec *__restrict __abstime),
+                        __sem_timedwait64)
+  __nonnull ((1, 2));
+#  else
+#   define sem_timedwait __sem_timedwait64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
+# ifndef __USE_TIME_BITS64
 extern int sem_clockwait (sem_t *__restrict __sem,
 			  clockid_t clock,
 			  const struct timespec *__restrict __abstime)
   __nonnull ((1, 3));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (sem_clockwait,
+                       (sem_t *__restrict __sem,
+                        clockid_t clock,
+                        const struct timespec *__restrict __abstime),
+                        __sem_clockwait64)
+  __nonnull ((1, 3));
+#  else
+#   define sem_clockwait __sem_clockwait64
+#  endif
+# endif
 #endif
 
 /* Test whether SEM is posted.  */
diff --git a/sysdeps/pthread/threads.h b/sysdeps/pthread/threads.h
index 46929a025e..bf251c9db4 100644
--- a/sysdeps/pthread/threads.h
+++ b/sysdeps/pthread/threads.h
@@ -88,8 +88,18 @@ extern thrd_t thrd_current (void);
    __TIME_POINT.  The current thread may resume if receives a signal.  In
    that case, if __REMAINING is not NULL, the remaining time is stored in
    the object pointed by it.  */
+#ifndef __USE_TIME_BITS64
 extern int thrd_sleep (const struct timespec *__time_point,
 		       struct timespec *__remaining);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (thrd_sleep, (const struct timespec *__time_point,
+                                    struct timespec *__remaining),
+                       __thrd_sleep64);
+# else
+#  define thrd_sleep __thrd_sleep64
+# endif
+#endif
 
 /* Terminate current thread execution, cleaning up any thread local
    storage and freeing resources.  Returns the value specified in __RES.  */
@@ -131,8 +141,19 @@ extern int mtx_lock (mtx_t *__mutex);
 /* Block the current thread until the mutex pointed by __MUTEX is unlocked
    or time pointed by __TIME_POINT is reached.  In case the mutex is unlock,
    the current thread will not be blocked.  */
+#ifndef __USE_TIME_BITS64
 extern int mtx_timedlock (mtx_t *__restrict __mutex,
 			  const struct timespec *__restrict __time_point);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (mtx_timedlock, (mtx_t *__restrict __mutex,
+                                       const struct timespec *__restrict
+                                       __time_point),
+                       __mtx_timedlock64);
+# else
+#  define mtx_timedlock __mtx_timedlock64
+# endif
+#endif
 
 /* Try to lock the mutex pointed by __MUTEX without blocking.  If the mutex
    is free the current threads takes control of it, otherwise it returns
@@ -171,9 +192,21 @@ extern int cnd_wait (cnd_t *__cond, mtx_t *__mutex);
 /* Block current thread on the condition variable until condition variable
    pointed by __COND is signaled or time pointed by __TIME_POINT is
    reached.  */
+#ifndef __USE_TIME_BITS64
 extern int cnd_timedwait (cnd_t *__restrict __cond,
 			  mtx_t *__restrict __mutex,
 			  const struct timespec *__restrict __time_point);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (cnd_timedwait, (cnd_t *__restrict __cond,
+                                       mtx_t *__restrict __mutex,
+                                       const struct timespec *__restrict
+                                       __time_point),
+                       __cnd_timedwait64);
+# else
+#  define cnd_timedwait __cnd_timedwait64
+# endif
+#endif
 
 /* Destroy condition variable pointed by __cond and free all of its
    resources.  */
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index 257ccbd3b4..45d31a46bc 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -1,3 +1,4 @@
+%include <time64-compat.h>
 libc {
   GLIBC_2.0 {
     # functions used in inline functions or macros
@@ -168,6 +169,75 @@ libc {
     getdents64; gettid; tgkill;
   }
   GLIBC_2.32 {
+  }
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    # io
+    __ppoll64;
+    __utime64;
+    __stat64_time64;
+    __lstat64_time64;
+    __fstat64_time64;
+    __fstatat64_time64;
+    # misc
+    __futimes64;
+    __futimesat64;
+    __lutimes64;
+    __select64;
+    __utimes64;
+    # posix
+    __nanosleep64;
+    __pselec64;
+    __wait3_time64;
+    __wait4_time64;
+    # nptl
+    __thrd_sleep64;
+    # resouces
+    __getrusage64;
+    # signal
+    __sigtimedwait64;
+    # sysvipc
+    __msgctl64;
+    __semctl64;
+    __semtimedop64;
+    __shmctl64;
+    # time
+    ___adjtimex64;
+    __adjtime64;
+    __clock_adjtime64;
+    __clock_getres64;
+    __clock_gettime64;
+    __clock_nanosleep_time64;
+    __clock_settime64;
+    __ctime64;
+    __ctime64_r;
+    __difftime64;
+    __futimens64;
+    __localtime64;
+    __localtime64_r;
+    __getitimer64;
+    __gettimeofday64;
+    __gmtime64;
+    __gmtime64_r;
+    __mktime64;
+    __nanosleep64;
+    __setitimer64;
+    __settimeofday64;
+    __time64;
+    __timegm64;
+    __timespec_get64;
+    __utimensat64;
+     __utimes64;
+    # misc
+    __ntp_gettime64;
+    __ntp_gettimex64;
+    __pselect64;
+    __recvmmsg64;
+    __sched_rr_get_interval64;
+    __timerfd_gettime64;
+    __timerfd_settime64;
+%endif
   }
   GLIBC_PRIVATE {
     # functions used in other libraries
@@ -182,3 +252,46 @@ libc {
     __netlink_assert_response;
   }
 }
+
+libpthread {
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    __cnd_timedwait64;
+    __mtx_timedlock64;
+    __pthread_clockjoin_np64;
+    __pthread_cond_timedwait64;
+    __pthread_cond_clockwait64;
+    __pthread_mutex_timedlock64;
+    __pthread_mutex_clocklock64;
+    __pthread_rwlock_clockrdlock64;
+    __pthread_rwlock_clockwrlock64;
+    __pthread_rwlock_timedrdlock64;
+    __pthread_rwlock_timedwrlock64;
+    __pthread_timedjoin_np64;
+    __sem_clockwait64;
+    __sem_timedwait64;
+%endif
+  }
+}
+
+librt {
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    __aio_suspend_time64;
+    __mq_timedsend_time64;
+    __mq_timedreceive_time64;
+    __timer_gettime64;
+    __timer_settime64;
+%endif
+  }
+}
+
+libanl {
+%ifdef TIME64_NON_DEFAULT
+  GLIBC_2.34 {
+    __gai_suspend_time64;
+  }
+%endif
+}
diff --git a/sysdeps/unix/sysv/linux/arm/be/libanl.abilist b/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 8111b49085..d63e0dee75 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -155,7 +155,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index b6c26c7a50..3fe358cc31 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -33,6 +33,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libanl.abilist b/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 4dba1f2f46..1a0f0d1312 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -152,7 +152,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index b6c26c7a50..3fe358cc31 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -33,6 +33,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/arm/time64-compat.h b/sysdeps/unix/sysv/linux/arm/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/arm/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/bits/msq.h b/sysdeps/unix/sysv/linux/bits/msq.h
index 3313b69d78..7c9c479551 100644
--- a/sysdeps/unix/sysv/linux/bits/msq.h
+++ b/sysdeps/unix/sysv/linux/bits/msq.h
@@ -26,6 +26,7 @@ typedef __syscall_ulong_t msgqnum_t;
 typedef __syscall_ulong_t msglen_t;
 
 #include <bits/types/struct_msqid_ds.h>
+#include <bits/types/struct_msqid64_ds.h>
 
 /* Define options for message queue functions.  */
 #define MSG_NOERROR	010000	/* no error if message is too big */
diff --git a/sysdeps/unix/sysv/linux/bits/sem.h b/sysdeps/unix/sysv/linux/bits/sem.h
index ad13287e66..776524b876 100644
--- a/sysdeps/unix/sysv/linux/bits/sem.h
+++ b/sysdeps/unix/sysv/linux/bits/sem.h
@@ -22,6 +22,7 @@
 #include <sys/types.h>
 #include <bits/timesize.h>
 #include <bits/types/struct_semid_ds.h>
+#include <bits/types/struct_semid64_ds.h>
 
 /* Flags for `semop'.  */
 #define SEM_UNDO	0x1000		/* undo the operation on exit */
diff --git a/sysdeps/unix/sysv/linux/bits/shm.h b/sysdeps/unix/sysv/linux/bits/shm.h
index a50c79d7be..454fc3f366 100644
--- a/sysdeps/unix/sysv/linux/bits/shm.h
+++ b/sysdeps/unix/sysv/linux/bits/shm.h
@@ -43,6 +43,7 @@ __BEGIN_DECLS
 typedef __syscall_ulong_t shmatt_t;
 
 #include <bits/types/struct_shmid_ds.h>
+#include <bits/types/struct_shmid64_ds.h>
 
 #ifdef __USE_MISC
 
diff --git a/sysdeps/unix/sysv/linux/bits/time.h b/sysdeps/unix/sysv/linux/bits/time.h
index ee5a8b3ef4..d0c98a7864 100644
--- a/sysdeps/unix/sysv/linux/bits/time.h
+++ b/sysdeps/unix/sysv/linux/bits/time.h
@@ -77,6 +77,16 @@ __BEGIN_DECLS
 /* Tune a POSIX clock.  */
 extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (clock_adjtime, (__clockid_t __clock_id,
+                                           struct timex *__utx),
+                           __clock_adjtime64);
+# else
+# define clock_adjtime __clock_adjtime64
+# endif
+#endif
+
 __END_DECLS
 #endif /* use GNU */
 
diff --git a/sysdeps/unix/sysv/linux/csky/libanl.abilist b/sysdeps/unix/sysv/linux/csky/libanl.abilist
index 416a6f8ddb..01f2e6cbf0 100644
--- a/sysdeps/unix/sysv/linux/csky/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.29 gai_cancel F
 GLIBC_2.29 gai_error F
 GLIBC_2.29 gai_suspend F
 GLIBC_2.29 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index a5ff3d90ca..120a3fc1ce 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -2115,7 +2115,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index 6ce59276a7..51d5822091 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -211,3 +211,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index c6690ef7c1..b60deca65a 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.29 timer_delete F
 GLIBC_2.29 timer_getoverrun F
 GLIBC_2.29 timer_gettime F
 GLIBC_2.29 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/csky/time64-compat.h b/sysdeps/unix/sysv/linux/csky/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/csky/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/features-time64.h b/sysdeps/unix/sysv/linux/features-time64.h
new file mode 100644
index 0000000000..c6a0a1874c
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/features-time64.h
@@ -0,0 +1,37 @@
+/* Features part to handle 64-bit time_t support.
+   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/>.  */
+
+/* We need to know the word size in order to check the time size.  */
+#include <bits/wordsize.h>
+#include <bits/timesize.h>
+
+#if defined _TIME_BITS
+# if _TIME_BITS == 64
+#  if ! defined (_FILE_OFFSET_BITS) || _FILE_OFFSET_BITS != 64
+#   error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64"
+#  elif __TIMESIZE == 32
+#   define __USE_TIME_BITS64	1
+#  endif
+# elif _TIME_BITS == 32
+#  if __TIMESIZE > 32
+#   error "_TIME_BITS=32 is not compatible with __TIMESIZE > 32"
+#  endif
+# else
+#  error Invalid _TIME_BITS value (can only be 32 or 64 bits)
+# endif
+#endif
diff --git a/sysdeps/unix/sysv/linux/hppa/libanl.abilist b/sysdeps/unix/sysv/linux/hppa/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/hppa/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 89a0f11166..77c7d2faf3 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2074,7 +2074,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index cabc5af858..0cdb30a3c1 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -218,6 +218,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/hppa/time64-compat.h b/sysdeps/unix/sysv/linux/hppa/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/hppa/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/i386/Makefile b/sysdeps/unix/sysv/linux/i386/Makefile
index da716e2c1b..8d5efb4f65 100644
--- a/sysdeps/unix/sysv/linux/i386/Makefile
+++ b/sysdeps/unix/sysv/linux/i386/Makefile
@@ -1,6 +1,8 @@
 # The default ABI is 32.
 default-abi := 32
 
+extra-version := Versions-y2038
+
 ifeq ($(subdir),misc)
 sysdep_routines += ioperm iopl vm86
 
diff --git a/sysdeps/unix/sysv/linux/i386/libanl.abilist b/sysdeps/unix/sysv/linux/i386/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/i386/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index a7c408d18c..7d1a9691e7 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2241,7 +2241,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index 18177307c8..b3a825d60e 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -226,6 +226,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/i386/time64-compat.h b/sysdeps/unix/sysv/linux/i386/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/include/sys/msg.h b/sysdeps/unix/sysv/linux/include/sys/msg.h
index 522903f818..c460be0dc9 100644
--- a/sysdeps/unix/sysv/linux/include/sys/msg.h
+++ b/sysdeps/unix/sysv/linux/include/sys/msg.h
@@ -7,8 +7,6 @@ extern ssize_t __libc_msgrcv (int msqid, void *msgp, size_t msgsz,
 extern int __libc_msgsnd (int msqid, const void *msgp, size_t msgsz,
 			  int msgflg);
 
-# include <bits/types/struct_msqid64_ds.h>
-
 # if __TIMESIZE == 64
 #  define __msgctl64 __msgctl
 # else
diff --git a/sysdeps/unix/sysv/linux/include/sys/shm.h b/sysdeps/unix/sysv/linux/include/sys/shm.h
index 530a1cdfc9..85177a632d 100644
--- a/sysdeps/unix/sysv/linux/include/sys/shm.h
+++ b/sysdeps/unix/sysv/linux/include/sys/shm.h
@@ -3,8 +3,6 @@
 
 #ifndef _ISOMAC
 
-# include <bits/types/struct_shmid64_ds.h>
-
 # if __TIMESIZE == 64
 #  define __shmctl64 __shmctl
 # else
diff --git a/sysdeps/unix/sysv/linux/include/sys/timex.h b/sysdeps/unix/sysv/linux/include/sys/timex.h
index e136ed172e..c554248ed9 100644
--- a/sysdeps/unix/sysv/linux/include/sys/timex.h
+++ b/sysdeps/unix/sysv/linux/include/sys/timex.h
@@ -23,10 +23,12 @@
 
 # ifndef _ISOMAC
 
+extern int __adjtimex (struct timex *__ntx);
 libc_hidden_proto (__adjtimex)
 
 #  include <time.h>
 #  include <struct___timeval64.h>
+
 /* Local definition of 64 bit time supporting timex struct */
 #  if __TIMESIZE == 64
 #   define __timex64 timex
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index e1171a34aa..da00a3d3c3 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -156,7 +156,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index b6c26c7a50..3fe358cc31 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -33,6 +33,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index a521506506..3e0f00210f 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2186,7 +2186,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index 18177307c8..b3a825d60e 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -226,6 +226,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/m68k/time64-compat.h b/sysdeps/unix/sysv/linux/m68k/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/m68k/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
index 67c7554803..c06e33a1cf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.18 gai_cancel F
 GLIBC_2.18 gai_error F
 GLIBC_2.18 gai_suspend F
 GLIBC_2.18 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index aba642460c..9bed39a8e8 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2166,7 +2166,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index 60397187b6..855c469c63 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -218,3 +218,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index 889dfbc0ee..1b8fc10087 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timer_gettime F
 GLIBC_2.18 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
index 67c7554803..c06e33a1cf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.18 gai_cancel F
 GLIBC_2.18 gai_error F
 GLIBC_2.18 gai_suspend F
 GLIBC_2.18 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index d3d653d144..872321bbab 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2163,7 +2163,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index 60397187b6..855c469c63 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -218,3 +218,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 889dfbc0ee..1b8fc10087 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timer_gettime F
 GLIBC_2.18 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/time64-compat.h b/sysdeps/unix/sysv/linux/microblaze/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/microblaze/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index a4ce56c34f..77dcc8ab7d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2157,7 +2157,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index b35d7f19ca..887a32a376 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -227,6 +227,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index 1539c1cef9..c4dd28e3b2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 51fbf0b1e1..c41f85ce01 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2155,7 +2155,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h b/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 5642781479..4208f9df82 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2163,7 +2163,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
index b35d7f19ca..887a32a376 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
@@ -227,6 +227,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index 1539c1cef9..c4dd28e3b2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h b/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/nios2/libanl.abilist b/sysdeps/unix/sysv/linux/nios2/libanl.abilist
index 6ff9c2d94e..6b080bd075 100644
--- a/sysdeps/unix/sysv/linux/nios2/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.21 gai_cancel F
 GLIBC_2.21 gai_error F
 GLIBC_2.21 gai_suspend F
 GLIBC_2.21 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 848cb2e599..ff0bb57cb6 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2204,7 +2204,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 924ad6e451..18407317e6 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -218,3 +218,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index b4ae7a2dc2..2458614125 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.21 timer_delete F
 GLIBC_2.21 timer_getoverrun F
 GLIBC_2.21 timer_gettime F
 GLIBC_2.21 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/time64-compat.h b/sysdeps/unix/sysv/linux/nios2/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/nios2/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 93e83fa602..57f1fe012a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2213,7 +2213,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 13b41dafb6..711812931d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -228,6 +228,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index ec0b6d69b1..6c9fa9c098 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2246,7 +2246,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 7bc5c8866b..d357619c55 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2211,7 +2211,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 lastlog_read F
 GLIBC_2.34 lastlog_write F
 GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 0a60f1cca2..28db1e4b6d 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -228,6 +228,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h b/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/semctl.c b/sysdeps/unix/sysv/linux/semctl.c
index 1043b2b80d..bb2690d30f 100644
--- a/sysdeps/unix/sysv/linux/semctl.c
+++ b/sysdeps/unix/sysv/linux/semctl.c
@@ -21,7 +21,6 @@
 #include <ipc_priv.h>
 #include <sysdep.h>
 #include <shlib-compat.h>
-#include <bits/types/struct_semid64_ds.h>  /* For __semid64_ds.  */
 #include <linux/posix_types.h>             /* For __kernel_mode_t.  */
 
 /* The struct used to issue the syscall.  For architectures that assume
diff --git a/sysdeps/unix/sysv/linux/sh/be/libanl.abilist b/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 06143b0283..725952a763 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2081,7 +2081,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index cabc5af858..0cdb30a3c1 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -218,6 +218,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libanl.abilist b/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index eab2af349b..7f07b96287 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2078,7 +2078,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index cabc5af858..0cdb30a3c1 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -218,6 +218,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sh/time64-compat.h b/sysdeps/unix/sysv/linux/sh/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sh/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 4783a8fa97..3b7af990d4 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2202,7 +2202,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index 390b6384d0..b5f763d9fd 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -228,6 +228,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index 38f0aad791..fb2769e87b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -34,6 +34,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h b/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/sys/timerfd.h b/sysdeps/unix/sysv/linux/sys/timerfd.h
index 4ad64c2259..790b9d5be6 100644
--- a/sysdeps/unix/sysv/linux/sys/timerfd.h
+++ b/sysdeps/unix/sysv/linux/sys/timerfd.h
@@ -47,9 +47,31 @@ extern int timerfd_settime (int __ufd, int __flags,
 			    const struct itimerspec *__utmr,
 			    struct itimerspec *__otmr) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timerfd_settime,
+                           (int __ufd, int __flags,
+                            const struct itimerspec *__restrict __value,
+                            struct itimerspec *__restrict __ovalue),
+                           __timerfd_settime64);
+# else
+# define timerfd_settime __timerfd_settime64
+# endif
+#endif
+
 /* Return the next expiration time of UFD.  */
 extern int timerfd_gettime (int __ufd, struct itimerspec *__otmr) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timerfd_gettime, (int __ufd,
+                                             struct itimerspec *__otmr),
+                           __timerfd_gettime64);
+# else
+# define timerfd_gettime __timerfd_gettime64
+# endif
+#endif
+
 __END_DECLS
 
 #endif /* sys/timerfd.h */
diff --git a/sysdeps/unix/sysv/linux/sys/timex.h b/sysdeps/unix/sysv/linux/sys/timex.h
index 37931ff496..298f0ca6e7 100644
--- a/sysdeps/unix/sysv/linux/sys/timex.h
+++ b/sysdeps/unix/sysv/linux/sys/timex.h
@@ -54,17 +54,33 @@ struct ntptimeval
 
 __BEGIN_DECLS
 
-extern int __adjtimex (struct timex *__ntx) __THROW;
+#ifndef __USE_TIME_BITS64
 extern int adjtimex (struct timex *__ntx) __THROW;
 
-#ifdef __REDIRECT_NTH
+# ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv),
-			   ntp_gettimex);
+                           __ntp_gettime64);
+# else
+#  define ntp_gettime ntp_gettimex
+# endif
+extern int ntp_adjtime (struct timex *__tntx) __THROW;
 #else
-extern int ntp_gettimex (struct ntptimeval *__ntv) __THROW;
-# define ntp_gettime ntp_gettimex
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (adjtimex, (struct timex *__ntx),
+                           ___adjtimex64);
+extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv),
+                           __ntp_gettime64);
+extern int __REDIRECT_NTH (ntp_gettimex, (struct ntptimeval *__ntv),
+                           __ntp_gettimex64);
+extern int __REDIRECT_NTH (ntp_adjtime, (struct timex *__ntx),
+                           ___adjtimex64);
+# else
+#  define adjtimex ___adjtimex64
+#  define ntp_adjtime ___adjtimex64
+#  define ntp_gettime __ntp_gettime64
+#  define ntp_gettimex __ntp_gettimex64
+# endif
 #endif
-extern int ntp_adjtime (struct timex *__tntx) __THROW;
 
 __END_DECLS
 
diff --git a/sysvipc/sys/msg.h b/sysvipc/sys/msg.h
index 9ddedf5e15..f31a43757d 100644
--- a/sysvipc/sys/msg.h
+++ b/sysvipc/sys/msg.h
@@ -58,7 +58,17 @@ struct msgbuf
 __BEGIN_DECLS
 
 /* Message queue control operation.  */
+#ifndef __USE_TIME_BITS64
 extern int msgctl (int __msqid, int __cmd, struct msqid_ds *__buf) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (msgctl,
+                           (int __msqid, int __cmd, struct msqid_ds *__buf),
+                           __msgctl64);
+# else
+#  define msgctl __msgctl64
+# endif
+#endif
 
 /* Get messages queue.  */
 extern int msgget (key_t __key, int __msgflg) __THROW;
diff --git a/sysvipc/sys/sem.h b/sysvipc/sys/sem.h
index 03b65dff21..4eb4c51bbe 100644
--- a/sysvipc/sys/sem.h
+++ b/sysvipc/sys/sem.h
@@ -48,7 +48,17 @@ struct sembuf
 __BEGIN_DECLS
 
 /* Semaphore control operation.  */
+#ifndef __USE_TIME_BITS64
 extern int semctl (int __semid, int __semnum, int __cmd, ...) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (semctl,
+                           (int __semid, int __semnum, int __cmd, ...),
+                           __semctl64);
+# else
+#  define semctl __semctl64
+# endif
+#endif
 
 /* Get semaphore.  */
 extern int semget (key_t __key, int __nsems, int __semflg) __THROW;
@@ -58,8 +68,19 @@ extern int semop (int __semid, struct sembuf *__sops, size_t __nsops) __THROW;
 
 #ifdef __USE_GNU
 /* Operate on semaphore with timeout.  */
+# ifndef __USE_TIME_BITS64
 extern int semtimedop (int __semid, struct sembuf *__sops, size_t __nsops,
 		       const struct timespec *__timeout) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (semtimedop, (int __semid, struct sembuf *__sops,
+                                        size_t __nsops,
+                                        const struct timespec *__timeout),
+                           __semtimedop64);
+#  else
+#   define semtimedop __semtimedop64
+#  endif
+# endif
 #endif
 
 __END_DECLS
diff --git a/sysvipc/sys/shm.h b/sysvipc/sys/shm.h
index 7506ba67bf..b09e0497e6 100644
--- a/sysvipc/sys/shm.h
+++ b/sysvipc/sys/shm.h
@@ -46,7 +46,17 @@ __BEGIN_DECLS
    facility.  The definition is found in XPG4.2.  */
 
 /* Shared memory control operation.  */
+#ifndef __USE_TIME_BITS64
 extern int shmctl (int __shmid, int __cmd, struct shmid_ds *__buf) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (shmctl,
+                           (int __shmid, int __cmd, struct shmid_ds *__buf),
+                           __shmctl64);
+# else
+#  define shmctl __shmctl64
+# endif
+#endif
 
 /* Get shared memory segment.  */
 extern int shmget (key_t __key, size_t __size, int __shmflg) __THROW;
diff --git a/time/sys/time.h b/time/sys/time.h
index 42f91f186b..d21411c0b4 100644
--- a/time/sys/time.h
+++ b/time/sys/time.h
@@ -63,10 +63,21 @@ struct timezone
    use localtime etc. instead.
    This function itself is semi-obsolete;
    most callers should use time or clock_gettime instead. */
+#ifndef __USE_TIME_BITS64
 extern int gettimeofday (struct timeval *__restrict __tv,
 			 void *__restrict __tz) __THROW __nonnull ((1));
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (gettimeofday, (struct timeval *__restrict __tv,
+                                          void *__restrict __tz),
+                           __gettimeofday64) __nonnull ((1));
+# else
+#  define gettimeofday __gettimeofday64
+# endif
+#endif
 
 #ifdef __USE_MISC
+# ifndef __USE_TIME_BITS64
 /* Set the current time of day and timezone information.
    This call is restricted to the super-user.
    Setting the timezone in this way is obsolete, but we don't yet
@@ -82,6 +93,20 @@ extern int settimeofday (const struct timeval *__tv,
    This call is restricted to the super-user.  */
 extern int adjtime (const struct timeval *__delta,
 		    struct timeval *__olddelta) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (settimeofday, (const struct timeval *__tv,
+                                          const struct timezone *__tz),
+                           __settimeofday64);
+
+extern int __REDIRECT_NTH (adjtime, (const struct timeval *__delta,
+                                     struct timeval *__olddelta),
+                           __adjtime64);
+#  else
+#   define settimeofday __settimeofday64
+#   define adjtime __adjtime64
+#  endif
+# endif
 #endif
 
 
@@ -118,6 +143,7 @@ typedef enum __itimer_which __itimer_which_t;
 typedef int __itimer_which_t;
 #endif
 
+#ifndef __USE_TIME_BITS64
 /* Set *VALUE to the current setting of timer WHICH.
    Return 0 on success, -1 on errors.  */
 extern int getitimer (__itimer_which_t __which,
@@ -136,21 +162,66 @@ extern int setitimer (__itimer_which_t __which,
 extern int utimes (const char *__file, const struct timeval __tvp[2])
      __THROW __nonnull ((1));
 
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (getitimer, (__itimer_which_t __which,
+                                       struct itimerval *__value),
+                           __getitimer64);
+
+extern int __REDIRECT_NTH (setitimer, (__itimer_which_t __which,
+                                       const struct itimerval *__restrict __new,
+                                       struct itimerval *__restrict __old),
+                           __setitimer64);
+
+extern int __REDIRECT_NTH (utimes, (const char *__file,
+                                    const struct timeval __tvp[2]),
+                           __utimes64) __nonnull ((1));
+# else
+#  define getitimer __getitimer64
+#  define setitimer __setitimer64
+#  define utimes __utimes64
+# endif
+#endif
+
 #ifdef __USE_MISC
+# ifndef __USE_TIME_BITS64
 /* Same as `utimes', but does not follow symbolic links.  */
 extern int lutimes (const char *__file, const struct timeval __tvp[2])
      __THROW __nonnull ((1));
 
 /* Same as `utimes', but takes an open file descriptor instead of a name.  */
 extern int futimes (int __fd, const struct timeval __tvp[2]) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (lutimes, (const char *__file,
+                                     const struct timeval __tvp[2]),
+                           __lutimes64) __nonnull ((1));
+
+extern int __REDIRECT_NTH (futimes, (int __fd, const struct timeval __tvp[2]),
+                           __futimes64);
+#  else
+#   define lutimes __lutimes64
+#   define futimes __futimes64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
+# ifndef __USE_TIME_BITS64
 /* Change the access time of FILE relative to FD to TVP[0] and the
    modification time of FILE to TVP[1].  If TVP is a null pointer, use
    the current time instead.  Returns 0 on success, -1 on errors.  */
 extern int futimesat (int __fd, const char *__file,
 		      const struct timeval __tvp[2]) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (futimesat, (int __fd, const char *__file,
+                                       const struct timeval __tvp[2]),
+                           __futimesat64);
+#  else
+#   define futimesat __futimesat64
+#  endif
+# endif
 #endif
 
 
diff --git a/time/time.h b/time/time.h
index 3bf206be0b..91b81cb1c6 100644
--- a/time/time.h
+++ b/time/time.h
@@ -71,6 +71,7 @@ __BEGIN_DECLS
    The result / CLOCKS_PER_SEC is program time in seconds.  */
 extern clock_t clock (void) __THROW;
 
+#ifndef __USE_TIME_BITS64
 /* Return the current time and put it in *TIMER if TIMER is not NULL.  */
 extern time_t time (time_t *__timer) __THROW;
 
@@ -80,7 +81,18 @@ extern double difftime (time_t __time1, time_t __time0)
 
 /* Return the `time_t' representation of TP and normalize TP.  */
 extern time_t mktime (struct tm *__tp) __THROW;
-
+#else
+# ifdef __REDIRECT_NTH
+extern time_t __REDIRECT_NTH (time, (time_t *__timer), __time64);
+extern double __REDIRECT_NTH (difftime, (time_t __time1, time_t __time0),
+                              __difftime64) __attribute__ ((__const__));
+extern time_t __REDIRECT_NTH (mktime, (struct tm *__tp), __mktime64);
+# else
+#  define time __time64
+#  define difftime __difftime64
+#  define mktime __mktime64
+# endif
+#endif
 
 /* Format TP into S according to FORMAT.
    Write no more than MAXSIZE characters and return the number
@@ -114,6 +126,7 @@ extern char *strptime_l (const char *__restrict __s,
 #endif
 
 
+#ifndef __USE_TIME_BITS64
 /* Return the `struct tm' representation of *TIMER
    in Universal Coordinated Time (aka Greenwich Mean Time).  */
 extern struct tm *gmtime (const time_t *__timer) __THROW;
@@ -122,7 +135,20 @@ extern struct tm *gmtime (const time_t *__timer) __THROW;
    of *TIMER in the local timezone.  */
 extern struct tm *localtime (const time_t *__timer) __THROW;
 
+#else
+# ifdef __REDIRECT_NTH
+extern struct tm*__REDIRECT_NTH (gmtime, (const time_t *__timer), __gmtime64);
+extern struct tm *__REDIRECT_NTH (localtime, (const time_t *__timer),
+				  __localtime64);
+# else
+#  define gmtime __gmtime64
+#  define localtime __localtime64
+# endif
+#endif
+
+
 #if defined __USE_POSIX || __GLIBC_USE (ISOC2X)
+# ifndef __USE_TIME_BITS64
 /* Return the `struct tm' representation of *TIMER in UTC,
    using *TP to store the result.  */
 extern struct tm *gmtime_r (const time_t *__restrict __timer,
@@ -132,6 +158,20 @@ extern struct tm *gmtime_r (const time_t *__restrict __timer,
    using *TP to store the result.  */
 extern struct tm *localtime_r (const time_t *__restrict __timer,
 			       struct tm *__restrict __tp) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern struct tm*__REDIRECT_NTH (gmtime_r, (const time_t *__restrict __timer,
+                                            struct tm *__restrict __tp),
+                                 __gmtime64_r);
+
+extern struct tm*__REDIRECT_NTH (localtime_r, (const time_t *__restrict __t,
+                                               struct tm *__restrict __tp),
+                                 __localtime64_r);
+#  else
+#   define gmtime_r __gmtime64_r
+#   define localtime_r __localtime_r
+#  endif
+# endif
 #endif	/* POSIX || C2X */
 
 /* Return a string of the form "Day Mon dd hh:mm:ss yyyy\n"
@@ -139,7 +179,15 @@ extern struct tm *localtime_r (const time_t *__restrict __timer,
 extern char *asctime (const struct tm *__tp) __THROW;
 
 /* Equivalent to `asctime (localtime (timer))'.  */
+#ifndef __USE_TIME_BITS64
 extern char *ctime (const time_t *__timer) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern char *__REDIRECT_NTH (ctime, (const time_t *__timer), __ctime64);
+# else
+#  define ctime __ctime64
+# endif
+#endif
 
 #if defined __USE_POSIX || __GLIBC_USE (ISOC2X)
 /* Reentrant versions of the above functions.  */
@@ -150,8 +198,18 @@ extern char *asctime_r (const struct tm *__restrict __tp,
 			char *__restrict __buf) __THROW;
 
 /* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'.  */
+#ifndef __USE_TIME_BITS64
 extern char *ctime_r (const time_t *__restrict __timer,
 		      char *__restrict __buf) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern char *__REDIRECT_NTH (ctime_r, (const time_t *__restrict __timer,
+                                       char *__restrict __buf), __ctime64_r);
+# else
+#  define ctime_r __ctime64_r
+# endif
+#endif
+
 #endif	/* POSIX || C2X */
 
 
@@ -186,11 +244,19 @@ extern long int timezone;
 /* Miscellaneous functions many Unices inherited from the public domain
    localtime package.  These are included only for compatibility.  */
 
+#ifndef __USE_TIME_BITS64
 /* Like `mktime', but for TP represents Universal Time, not local time.  */
 extern time_t timegm (struct tm *__tp) __THROW;
-
 /* Another name for `mktime'.  */
 extern time_t timelocal (struct tm *__tp) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern time_t __REDIRECT_NTH (timegm, (struct tm *__tp), __timegm64);
+extern time_t __REDIRECT_NTH (timelocal, (struct tm *__tp), __mktime64);
+# else
+#  define timegm __timegm64
+# endif
+#endif
 
 /* Return the number of days in YEAR.  */
 extern int dysize (int __year) __THROW  __attribute__ ((__const__));
@@ -198,6 +264,7 @@ extern int dysize (int __year) __THROW  __attribute__ ((__const__));
 
 
 #ifdef __USE_POSIX199309
+# ifndef __USE_TIME_BITS64
 /* Pause execution for a number of nanoseconds.
 
    This function is a cancellation point and therefore not marked with
@@ -205,7 +272,6 @@ extern int dysize (int __year) __THROW  __attribute__ ((__const__));
 extern int nanosleep (const struct timespec *__requested_time,
 		      struct timespec *__remaining);
 
-
 /* Get resolution of clock CLOCK_ID.  */
 extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __THROW;
 
@@ -215,15 +281,46 @@ extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW;
 /* Set clock CLOCK_ID to value TP.  */
 extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp)
      __THROW;
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (nanosleep, (const struct timespec *__requested_time,
+                                   struct timespec *__remaining),
+                       __nanosleep64);
+extern int __REDIRECT_NTH (clock_getres, (clockid_t __clock_id,
+                                          struct timespec *__res),
+                           __clock_getres64);
+extern int __REDIRECT_NTH (clock_gettime, (clockid_t __clock_id, struct
+                                           timespec *__tp), __clock_gettime64);
+extern int __REDIRECT_NTH (clock_settime, (clockid_t __clock_id, const struct
+                                           timespec *__tp), __clock_settime64);
+#  else
+#   define nanosleep __nanosleep64
+#   define clock_getres __clock_getres64
+#   define clock_gettime __clock_gettime64
+#   define clock_settime __clock_settime64
+#  endif
+# endif
+
 
 # ifdef __USE_XOPEN2K
 /* High-resolution sleep with the specified clock.
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+#  ifndef __USE_TIME_BITS64
 extern int clock_nanosleep (clockid_t __clock_id, int __flags,
 			    const struct timespec *__req,
 			    struct timespec *__rem);
+#  else
+#   ifdef __REDIRECT
+extern int __REDIRECT (clock_nanosleep, (clockid_t __clock_id, int __flags,
+                                         const struct timespec *__req,
+                                         struct timespec *__rem),
+                       __clock_nanosleep_time64);
+#   else
+#    define clock_nanosleep __clock_nanosleep_time64
+#   endif
+#  endif
 
 /* Return clock ID for CPU-time clock.  */
 extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __THROW;
@@ -239,6 +336,7 @@ extern int timer_create (clockid_t __clock_id,
 extern int timer_delete (timer_t __timerid) __THROW;
 
 /* Set timer TIMERID to VALUE, returning old value in OVALUE.  */
+# ifndef __USE_TIME_BITS64
 extern int timer_settime (timer_t __timerid, int __flags,
 			  const struct itimerspec *__restrict __value,
 			  struct itimerspec *__restrict __ovalue) __THROW;
@@ -246,6 +344,21 @@ extern int timer_settime (timer_t __timerid, int __flags,
 /* Get current value of timer TIMERID and store it in VALUE.  */
 extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
      __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (timer_settime, (timer_t __timerid, int __flags,
+     const struct itimerspec *__restrict __value,
+     struct itimerspec *__restrict __ovalue),
+                          __timer_settime64);
+
+extern int __REDIRECT_NTH (timer_gettime, (timer_t __timerid,
+                                           struct itimerspec *__value),
+                           __timer_gettime64);
+#  else
+#   define timer_settime __timer_settime64
+#   define timer_gettime __timer_gettime64
+#  endif
+# endif
 
 /* Get expiration overrun for timer TIMERID.  */
 extern int timer_getoverrun (timer_t __timerid) __THROW;
@@ -253,9 +366,18 @@ extern int timer_getoverrun (timer_t __timerid) __THROW;
 
 
 #ifdef __USE_ISOC11
+# ifndef __USE_TIME_BITS64
 /* Set TS to calendar time based in time base BASE.  */
 extern int timespec_get (struct timespec *__ts, int __base)
      __THROW __nonnull ((1));
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (timespec_get, (struct timespec *__ts, int __base),
+                           __timespec_get64) __nonnull ((1));
+#  else
+#   define timespec_get __timespec_get64
+#  endif
+# endif
 #endif


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [glibc/azanella/y2038] y2038: Add support for 64 bit time on legacy ABIs
@ 2021-03-04 17:39 Adhemerval Zanella
  0 siblings, 0 replies; 10+ messages in thread
From: Adhemerval Zanella @ 2021-03-04 17:39 UTC (permalink / raw)
  To: glibc-cvs

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=4fb73f8e86c131e85c3a9234f90575560e252330

commit 4fb73f8e86c131e85c3a9234f90575560e252330
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Wed Feb 17 13:35:19 2021 -0300

    y2038: Add support for 64 bit time on legacy ABIs
    
    A new build flag, _TIME_BITS, enables the usage of the newer 64 bit
    time symbols for legacy ABI (where 32 bit time_t is default).  The 64
    bit time support is only enabled if LFS (_FILE_OFFSET_BITS=64) is
    also used.
    
    Different than LFS support, the y2038 symbols are added only for the
    required ABIs (armhf, csky, hppa, i386, m68k, microblaze, mips32,
    mips64-n32, nios2, powerpc32, sparc32, s390-32, and sh).  The ABIs with
    64 bit time support are unchanged, both for symbol and types
    redirection.
    
    On Linux apropoer 64 bit time support requires a minimum of kernel
    version v5.1.  Otherwise, the 32 bit fallbacks are used and might
    results in error with overflow return code (EOVERFLOW).
    
    The i686-gnu does not yet support 64 bit time, and trying to build
    it using -D_TIME_BITS=64 results in an error.
    
    This patch also converts following implemetations to support 64 bit
    time:
    
      * libc:
        - adjtimex
        - adjtime
        - clock_adjtime
        - clock_getres
        - clock_gettime
        - clock_nanosleep
        - clock_settime
        - ctime
        - ctime_r
        - difftime
        - futimens
        - futimes
        - futimesat
        - getitimer
        - getrusage
        - gettimeofday
        - gmtime
        - gmtime_r
        - localtime
        - localtime_r
        - lutimes
        - mktime
        - msgctl
        - nanosleep
        - ntp_gettime
        - ntp_gettimex
        - ppoll
        - pselect
        - recvmmsg
        - sched_rr_get_interval
        - select
        - semctl
        - semtimedop
        - setitimer
        - settimeofday
        - shmctl
        - sigtimedwait
        - thrd_sleep
        - time
        - timegm
        - timelocal (alias to mktime)
        - timerfd_gettime
        - timerfd_settime
        - timespec_get
        - utime
        - utimensat
        - utimes
        - wait3
        - wait4
    
      * libpthread:
        - mtx_timedlock
        - pthread_clockjoin_np
        - pthread_cond_clockwait
        - pthread_cond_timedwait
        - pthread_mutex_clocklock
        - pthread_mutex_timedlock
        - pthread_rwlock_clockrdlock
        - pthread_rwlock_clockwrlock
        - pthread_rwlock_timedrdlock
        - pthread_rwlock_timedwrlock
        - pthread_timedjoin_np
        - sem_clockwait
        - sem_timedwait
    
      * librt:
        - aio_suspend
        - mq_timedreceive
        - mq_timedsend
        - timer_gettime
        - timer_settime
    
      * libanl:
        - gai_suspend

Diff:
---
 Makefile                                           |   2 +-
 NEWS                                               |   4 +
 include/features-time64.h                          |   1 +
 include/features.h                                 |   2 +
 io/sys/poll.h                                      |  11 ++
 io/sys/stat.h                                      | 113 ++++++++++++++++--
 io/utime.h                                         |  11 ++
 manual/creature.texi                               |  44 +++++++
 misc/sys/select.h                                  |  27 +++++
 posix/sched.h                                      |  11 +-
 posix/sys/wait.h                                   |  20 ++++
 resolv/netdb.h                                     |  11 ++
 resource/sys/resource.h                            |  10 ++
 rt/aio.h                                           |  15 ++-
 rt/mqueue.h                                        |  22 ++++
 signal/signal.h                                    |  13 +++
 socket/sys/socket.h                                |  11 ++
 sysdeps/generic/features-time64.h                  |  19 +++
 sysdeps/nptl/pthread.h                             | 119 +++++++++++++++++++
 sysdeps/pthread/semaphore.h                        |  25 ++++
 sysdeps/pthread/threads.h                          |  33 ++++++
 sysdeps/unix/sysv/linux/Versions                   | 113 ++++++++++++++++++
 sysdeps/unix/sysv/linux/arm/be/libanl.abilist      |   1 +
 sysdeps/unix/sysv/linux/arm/be/libc.abilist        |  52 +++++++++
 sysdeps/unix/sysv/linux/arm/be/libpthread.abilist  |  14 +++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist       |   5 +
 sysdeps/unix/sysv/linux/arm/le/libanl.abilist      |   1 +
 sysdeps/unix/sysv/linux/arm/le/libc.abilist        |  52 +++++++++
 sysdeps/unix/sysv/linux/arm/le/libpthread.abilist  |  14 +++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist       |   5 +
 sysdeps/unix/sysv/linux/arm/time64-compat.h        |   2 +
 sysdeps/unix/sysv/linux/bits/msq.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/sem.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/shm.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/time.h                |  10 ++
 sysdeps/unix/sysv/linux/csky/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/csky/libc.abilist          |  52 +++++++++
 sysdeps/unix/sysv/linux/csky/libpthread.abilist    |  14 +++
 sysdeps/unix/sysv/linux/csky/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/csky/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/features-time64.h          |  37 ++++++
 sysdeps/unix/sysv/linux/hppa/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/hppa/libc.abilist          |  52 +++++++++
 sysdeps/unix/sysv/linux/hppa/libpthread.abilist    |  14 +++
 sysdeps/unix/sysv/linux/hppa/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/hppa/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/i386/Makefile              |   2 +
 sysdeps/unix/sysv/linux/i386/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/i386/libc.abilist          |  52 +++++++++
 sysdeps/unix/sysv/linux/i386/libpthread.abilist    |  14 +++
 sysdeps/unix/sysv/linux/i386/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/i386/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/include/sys/msg.h          |   2 -
 sysdeps/unix/sysv/linux/include/sys/shm.h          |   2 -
 sysdeps/unix/sysv/linux/include/sys/timex.h        |   2 +
 .../unix/sysv/linux/m68k/coldfire/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist |  52 +++++++++
 .../sysv/linux/m68k/coldfire/libpthread.abilist    |  14 +++
 .../unix/sysv/linux/m68k/coldfire/librt.abilist    |   5 +
 sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist |   1 +
 sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist   |  52 +++++++++
 .../unix/sysv/linux/m68k/m680x0/libpthread.abilist |  14 +++
 sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist  |   5 +
 sysdeps/unix/sysv/linux/m68k/time64-compat.h       |   2 +
 .../unix/sysv/linux/microblaze/be/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/microblaze/be/libc.abilist |  52 +++++++++
 .../sysv/linux/microblaze/be/libpthread.abilist    |  14 +++
 .../unix/sysv/linux/microblaze/be/librt.abilist    |   5 +
 .../unix/sysv/linux/microblaze/le/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/microblaze/le/libc.abilist |  52 +++++++++
 .../sysv/linux/microblaze/le/libpthread.abilist    |  14 +++
 .../unix/sysv/linux/microblaze/le/librt.abilist    |   5 +
 sysdeps/unix/sysv/linux/microblaze/time64-compat.h |   2 +
 .../unix/sysv/linux/mips/mips32/fpu/libc.abilist   |  52 +++++++++
 sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist |   1 +
 .../unix/sysv/linux/mips/mips32/libpthread.abilist |  14 +++
 sysdeps/unix/sysv/linux/mips/mips32/librt.abilist  |   5 +
 .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist |  52 +++++++++
 .../unix/sysv/linux/mips/mips32/time64-compat.h    |   2 +
 .../unix/sysv/linux/mips/mips64/n32/libanl.abilist |   1 +
 .../unix/sysv/linux/mips/mips64/n32/libc.abilist   |  52 +++++++++
 .../sysv/linux/mips/mips64/n32/libpthread.abilist  |  14 +++
 .../unix/sysv/linux/mips/mips64/n32/librt.abilist  |   5 +
 .../sysv/linux/mips/mips64/n32/time64-compat.h     |   2 +
 sysdeps/unix/sysv/linux/nios2/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/nios2/libc.abilist         |  52 +++++++++
 sysdeps/unix/sysv/linux/nios2/libpthread.abilist   |  14 +++
 sysdeps/unix/sysv/linux/nios2/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/nios2/time64-compat.h      |   2 +
 .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist  |  52 +++++++++
 .../sysv/linux/powerpc/powerpc32/libanl.abilist    |   1 +
 .../linux/powerpc/powerpc32/libpthread.abilist     |  14 +++
 .../sysv/linux/powerpc/powerpc32/librt.abilist     |   5 +
 .../linux/powerpc/powerpc32/nofpu/libc.abilist     |  52 +++++++++
 .../sysv/linux/powerpc/powerpc32/time64-compat.h   |   2 +
 .../unix/sysv/linux/s390/s390-32/libanl.abilist    |   1 +
 sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist  |  52 +++++++++
 .../sysv/linux/s390/s390-32/libpthread.abilist     |  14 +++
 sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist |   5 +
 .../unix/sysv/linux/s390/s390-32/time64-compat.h   |   2 +
 sysdeps/unix/sysv/linux/semctl.c                   |   1 -
 sysdeps/unix/sysv/linux/sh/be/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/sh/be/libc.abilist         |  52 +++++++++
 sysdeps/unix/sysv/linux/sh/be/libpthread.abilist   |  14 +++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/sh/le/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/sh/le/libc.abilist         |  52 +++++++++
 sysdeps/unix/sysv/linux/sh/le/libpthread.abilist   |  14 +++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/sh/time64-compat.h         |   2 +
 .../unix/sysv/linux/sparc/sparc32/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist |  52 +++++++++
 .../sysv/linux/sparc/sparc32/libpthread.abilist    |  14 +++
 .../unix/sysv/linux/sparc/sparc32/librt.abilist    |   5 +
 .../unix/sysv/linux/sparc/sparc32/time64-compat.h  |   2 +
 sysdeps/unix/sysv/linux/sys/timerfd.h              |  22 ++++
 sysdeps/unix/sysv/linux/sys/timex.h                |  28 ++++-
 sysdeps/unix/sysv/linux/time64-compat.h            |   3 +
 sysvipc/sys/msg.h                                  |  10 ++
 sysvipc/sys/sem.h                                  |  21 ++++
 sysvipc/sys/shm.h                                  |  10 ++
 time/sys/time.h                                    |  71 ++++++++++++
 time/time.h                                        | 128 ++++++++++++++++++++-
 123 files changed, 2314 insertions(+), 29 deletions(-)

diff --git a/Makefile b/Makefile
index 71c7d8b5ec..2fd88294f5 100644
--- a/Makefile
+++ b/Makefile
@@ -68,7 +68,7 @@ endif # $(AUTOCONF) = no
 		   subdir_objs subdir_stubs subdir_testclean		\
 		   $(addprefix install-, no-libc.a bin lib data headers others)
 \f
-headers := limits.h values.h features.h gnu-versions.h \
+headers := limits.h values.h features.h features-time64.h gnu-versions.h \
 	   bits/xopen_lim.h gnu/libc-version.h stdc-predef.h \
 	   bits/libc-header-start.h
 
diff --git a/NEWS b/NEWS
index 73a1a0df97..a5d2f54959 100644
--- a/NEWS
+++ b/NEWS
@@ -18,6 +18,10 @@ Major new features:
   a dump of information related to IFUNC resolver operation and
   glibc-hwcaps subdirectory selection.
 
+* Add support for 64 bit time_t support for ABIs with defaults to 32 bit
+  time_t.  This is enabled with the _TIME_BITS flag set to 64 and it
+  is support on Linux with a minimum version of 5.1.
+
 Deprecated and removed features, and other changes affecting compatibility:
 
   [Add deprecations, removals and changes affecting compatibility here]
diff --git a/include/features-time64.h b/include/features-time64.h
new file mode 100644
index 0000000000..06115b7c86
--- /dev/null
+++ b/include/features-time64.h
@@ -0,0 +1 @@
+#include_next <features-time64.h>
diff --git a/include/features.h b/include/features.h
index eb97470afa..9d39e11345 100644
--- a/include/features.h
+++ b/include/features.h
@@ -387,6 +387,8 @@
 # define __USE_FILE_OFFSET64	1
 #endif
 
+#include <features-time64.h>
+
 #if defined _DEFAULT_SOURCE
 # define __USE_MISC	1
 #endif
diff --git a/io/sys/poll.h b/io/sys/poll.h
index 2431dd1e14..4a0ce7eaad 100644
--- a/io/sys/poll.h
+++ b/io/sys/poll.h
@@ -63,6 +63,17 @@ extern int poll (struct pollfd *__fds, nfds_t __nfds, int __timeout);
 extern int ppoll (struct pollfd *__fds, nfds_t __nfds,
 		  const struct timespec *__timeout,
 		  const __sigset_t *__ss);
+
+# ifdef __USE_TIME_BITS64
+#  ifdef __REDIRECT
+extern int __REDIRECT (ppoll, (struct pollfd *__fds, nfds_t __nfds,
+                               const struct timespec *__timeout,
+                               const __sigset_t *__ss),
+                       __ppoll64);
+#  else
+#  define ppoll __ppoll64
+#  endif
+# endif
 #endif
 
 __END_DECLS
diff --git a/io/sys/stat.h b/io/sys/stat.h
index 549375c087..f7874ec5ba 100644
--- a/io/sys/stat.h
+++ b/io/sys/stat.h
@@ -209,21 +209,51 @@ extern int stat (const char *__restrict __file,
    that file descriptor FD is open on and put them in BUF.  */
 extern int fstat (int __fd, struct stat *__buf) __THROW __nonnull ((2));
 #else
-# ifdef __REDIRECT_NTH
+# ifdef __USE_TIME_BITS64
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
+				  struct stat *__restrict __buf),
+				  __stat64_time64)
+     __nonnull ((1, 2));
+extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf),
+				   __fstat64_time64)
+     __nonnull ((2));
+#  else
+#   define stat __stat64_time64
+#   define fstat __fstat64_time64
+#  endif
+# else
+#  ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
 				  struct stat *__restrict __buf), stat64)
      __nonnull ((1, 2));
 extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf), fstat64)
      __nonnull ((2));
-# else
-#  define stat stat64
-#  define fstat fstat64
+#  else
+#   define stat stat64
+#   define fstat fstat64
+#  endif
 # endif
 #endif
 #ifdef __USE_LARGEFILE64
+# ifndef __USE_TIME_BITS64
 extern int stat64 (const char *__restrict __file,
 		   struct stat64 *__restrict __buf) __THROW __nonnull ((1, 2));
 extern int fstat64 (int __fd, struct stat64 *__buf) __THROW __nonnull ((2));
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (stat64, (const char *__restrict __file,
+				    struct stat64 *__restrict __buf),
+			   __stat64_time64)
+     __nonnull ((1, 2));
+extern int __REDIRECT_NTH (fstat64, (int __fd, struct stat64 *__buf),
+			   __fstat64_time64)
+     __nonnull ((2));
+#  else
+#   define stat64 __stat64_time64
+#   define fstat64 __fstat64_time
+#  endif
+# endif
 #endif
 
 #ifdef __USE_ATFILE
@@ -235,20 +265,44 @@ extern int fstatat (int __fd, const char *__restrict __file,
 		    struct stat *__restrict __buf, int __flag)
      __THROW __nonnull ((2, 3));
 # else
-#  ifdef __REDIRECT_NTH
+#  ifdef __USE_TIME_BITS64
+#   ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
 				     struct stat *__restrict __buf,
 				     int __flag),
-			   fstatat64) __nonnull ((2, 3));
+			   __fstatat64_time64) __nonnull ((2, 3));
+#   else
+#    define fstatat __fstatat64_time64
+#   endif
 #  else
-#   define fstatat fstatat64
+#   ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
+				     struct stat *__restrict __buf,
+				     int __flag),
+			   fstatat64) __nonnull ((2, 3));
+#   else
+#    define fstatat fstatat64
+#   endif
 #  endif
 # endif
 
 # ifdef __USE_LARGEFILE64
+#  ifndef __USE_TIME_BITS64
 extern int fstatat64 (int __fd, const char *__restrict __file,
 		      struct stat64 *__restrict __buf, int __flag)
      __THROW __nonnull ((2, 3));
+#  else
+#   ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (fstatat64, (int __fd,
+				       const char *__restrict __file,
+				       struct stat64 *__restrict __buf,
+				       int __flag),
+			   __fstatat64_time64)
+     __nonnull ((2, 3));
+#   else
+#    define fstatat64 __fstatat64_time64
+#   endif
+#  endif
 # endif
 #endif
 
@@ -259,19 +313,37 @@ extern int fstatat64 (int __fd, const char *__restrict __file,
 extern int lstat (const char *__restrict __file,
 		  struct stat *__restrict __buf) __THROW __nonnull ((1, 2));
 # else
-#  ifdef __REDIRECT_NTH
+#  ifdef __USE_TIME_BITS64
+#   ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (lstat,
 			   (const char *__restrict __file,
-			    struct stat *__restrict __buf), lstat64)
+			    struct stat *__restrict __buf), __lstat64_time64)
      __nonnull ((1, 2));
+#   else
+#    define lstat __lstat64_time64
+#   endif
 #  else
-#   define lstat lstat64
+#   ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (lstat,
+			   (const char *__restrict __file,
+			    struct stat *__restrict __buf), lstat64)
+     __nonnull ((1, 2));
+#   else
+#    define lstat lstat64
+#   endif
 #  endif
 # endif
 # ifdef __USE_LARGEFILE64
+#  ifndef __USE_TIME_BITS64
 extern int lstat64 (const char *__restrict __file,
 		    struct stat64 *__restrict __buf)
      __THROW __nonnull ((1, 2));
+#  else
+extern int __REDIRECT_NTH (lstat64, (const char *__restrict __file,
+				     struct stat64 *__restrict __buf),
+			   __lstat64_time64)
+     __nonnull ((1, 2));
+#  endif
 # endif
 #endif
 
@@ -355,17 +427,38 @@ extern int mkfifoat (int __fd, const char *__path, __mode_t __mode)
 #endif
 \f
 #ifdef __USE_ATFILE
+# ifndef __USE_TIME_BITS64
 /* Set file access and modification times relative to directory file
    descriptor.  */
 extern int utimensat (int __fd, const char *__path,
 		      const struct timespec __times[2],
 		      int __flags)
      __THROW __nonnull ((2));
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (utimensat, (int fd, const char *__path,
+                                       const struct timespec __times[2],
+                                       int flags),
+                           __utimensat64) __nonnull ((2));
+#  else
+#   define utimensat __utimensat64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_XOPEN2K8
+# ifndef __USE_TIME_BITS64
 /* Set file access and modification times of the file associated with FD.  */
 extern int futimens (int __fd, const struct timespec __times[2]) __THROW;
+
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (futimens, (int fd, const struct timespec __times[2]),
+                           __futimens64);
+#  else
+#   define futimens __futimens64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
diff --git a/io/utime.h b/io/utime.h
index c7612d0838..1a645a3fff 100644
--- a/io/utime.h
+++ b/io/utime.h
@@ -46,10 +46,21 @@ struct utimbuf
 
 /* Set the access and modification times of FILE to those given in
    *FILE_TIMES.  If FILE_TIMES is NULL, set them to the current time.  */
+#ifndef __USE_TIME_BITS64
 extern int utime (const char *__file,
 		  const struct utimbuf *__file_times)
      __THROW __nonnull ((1));
 
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (utime, (const char *__file,
+                                   const struct utimbuf *__file_times),
+                           __utime64);
+# else
+#  define utime __utime64
+# endif
+#endif
+
 __END_DECLS
 
 #endif /* utime.h */
diff --git a/manual/creature.texi b/manual/creature.texi
index 5090735e4f..606b73d184 100644
--- a/manual/creature.texi
+++ b/manual/creature.texi
@@ -165,6 +165,50 @@ This macro was introduced as part of the Large File Support extension
 (LFS).
 @end defvr
 
+@defvr Macro _TIME_BITS
+This macro determines the bit size of @code{time_t} (and therefore the
+bit size of all @code{time_t} derived types and the prototypes of all
+related functions).  If @code{_TIME_BITS} is undefined, the bit size of
+@code{time_t} is architecture dependent.
+
+Possible values of @code{_TIME_BITS}:
+@enumerate
+@item
+@code{_TIME_BITS=64} and port from the outset uses 64-bit
+@code{time_t} and word size equals to @w{64 bits} (e.g. x86_64) - no
+action
+
+@item
+@code{_TIME_BITS=32} and port from the outset uses 32-bit
+@code{time_t} and word size equals to @w{64 bits} (e.g. ARM) - no
+action
+
+@item
+@code{_TIME_BITS=64} and port from the outset uses 64-bit
+@code{time_t} and word size equals to @w{32 bits} (e.g. ARC, RV32)
+- no action
+
+@item
+@code{_TIME_BITS=64} and port from the outset uses 32-bit
+@code{time_t} and word size equals to @w{32 bits} (e.g. ARM)
+- the @code{time_t} is modified to be able to hold 64-bit time.
+
+@item
+For any other use case the compile-time error is emitted.
+@end enumerate
+
+The @code{_TIME_BITS} can be only used when @code{_FILE_OFFSET_BITS=64}
+is also defined.
+
+For the point @b{4} above, calls to proper syscalls depend on the
+Linux kernel version on which the system is running. For Linux kernel
+version above @b{5.1} syscalls supporting 64-bit time are used. Otherwise,
+a fallback code is used with legacy (i.e. 32-bit) syscalls.
+
+By using this macro certain ports gain support for 64-bit time and as
+a result become immune to Y2038 problem.
+@end defvr
+
 @defvr Macro _ISOC99_SOURCE
 @standards{GNU, (none)}
 If this macro is defined, features from ISO C99 are included.  Since
diff --git a/misc/sys/select.h b/misc/sys/select.h
index 188a7fe607..e9c0e8fc20 100644
--- a/misc/sys/select.h
+++ b/misc/sys/select.h
@@ -98,10 +98,23 @@ __BEGIN_DECLS
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+#ifndef __USE_TIME_BITS64
 extern int select (int __nfds, fd_set *__restrict __readfds,
 		   fd_set *__restrict __writefds,
 		   fd_set *__restrict __exceptfds,
 		   struct timeval *__restrict __timeout);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (select,
+                       (int __nfds, fd_set *__restrict __readfds,
+                        fd_set *__restrict __writefds,
+                        fd_set *__restrict __exceptfds,
+                        struct timeval *__restrict __timeout),
+                       __select64);
+# else
+#  define select __select64
+# endif
+#endif
 
 #ifdef __USE_XOPEN2K
 /* Same as above only that the TIMEOUT value is given with higher
@@ -110,11 +123,25 @@ extern int select (int __nfds, fd_set *__restrict __readfds,
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int pselect (int __nfds, fd_set *__restrict __readfds,
 		    fd_set *__restrict __writefds,
 		    fd_set *__restrict __exceptfds,
 		    const struct timespec *__restrict __timeout,
 		    const __sigset_t *__restrict __sigmask);
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (pselect,
+                       (int __nfds, fd_set *__restrict __readfds,
+                        fd_set *__restrict __writefds,
+                        fd_set *__restrict __exceptfds,
+                        const struct timespec *__restrict __timeout,
+                        const __sigset_t *__restrict __sigmask),
+                       __pselect64);
+#  else
+#   define pselect __pselect64
+#  endif
+# endif
 #endif
 
 
diff --git a/posix/sched.h b/posix/sched.h
index d8ce08a3ea..7dd97a49b2 100644
--- a/posix/sched.h
+++ b/posix/sched.h
@@ -74,8 +74,17 @@ extern int sched_get_priority_max (int __algorithm) __THROW;
 extern int sched_get_priority_min (int __algorithm) __THROW;
 
 /* Get the SCHED_RR interval for the named process.  */
+#ifndef __USE_TIME_BITS64
 extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __THROW;
-
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (sched_rr_get_interval,
+                           (__pid_t __pid, struct timespec *__t),
+                           __sched_rr_get_interval64);
+# else
+#  define sched_rr_get_interval __sched_rr_get_interval64
+# endif
+#endif
 
 #ifdef __USE_GNU
 /* Access macros for `cpu_set'.  */
diff --git a/posix/sys/wait.h b/posix/sys/wait.h
index 9e7bb7f154..5325bfa4d2 100644
--- a/posix/sys/wait.h
+++ b/posix/sys/wait.h
@@ -144,14 +144,34 @@ struct rusage;
    nil, store information about the child's resource usage there.  If the
    WUNTRACED bit is set in OPTIONS, return status for stopped children;
    otherwise don't.  */
+# ifndef __USE_TIME_BITS64
 extern __pid_t wait3 (int *__stat_loc, int __options,
 		      struct rusage * __usage) __THROWNL;
+# else
+#  ifdef __REDIRECT_NTHNL
+extern __pid_t __REDIRECT_NTHNL (wait3, (int *__stat_loc, int __options,
+                                         struct rusage * __usage),
+                                 __wait3_time64);
+#  else
+#   define wait3 __wait3_time64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_MISC
+# ifndef __USE_TIME_BITS64
 /* PID is like waitpid.  Other args are like wait3.  */
 extern __pid_t wait4 (__pid_t __pid, int *__stat_loc, int __options,
 		      struct rusage *__usage) __THROWNL;
+# else
+#  ifdef __REDIRECT_NTHNL
+extern __pid_t __REDIRECT_NTHNL (wait4, (__pid_t __pid, int *__stat_loc,
+                                         int __options, struct rusage *__usage),
+                                 __wait4_time64);
+#  else
+#   define wait4 __wait4_time64
+#  endif
+# endif
 #endif /* Use misc.  */
 
 
diff --git a/resolv/netdb.h b/resolv/netdb.h
index 1f36f25d4a..9b242ce3d1 100644
--- a/resolv/netdb.h
+++ b/resolv/netdb.h
@@ -701,6 +701,17 @@ extern int getaddrinfo_a (int __mode, struct gaicb *__list[__restrict_arr],
 extern int gai_suspend (const struct gaicb *const __list[], int __ent,
 			const struct timespec *__timeout);
 
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (gai_suspend, (const struct gaicb *const __list[],
+                                     int __ent,
+                                     const struct timespec *__timeout),
+                       __gai_suspend_time64);
+#  else
+#   define gai_suspend __gai_suspend_time64
+#  endif
+# endif
+
 /* Get the error status of the request REQ.  */
 extern int gai_error (struct gaicb *__req) __THROW;
 
diff --git a/resource/sys/resource.h b/resource/sys/resource.h
index d30379d085..551d25e275 100644
--- a/resource/sys/resource.h
+++ b/resource/sys/resource.h
@@ -88,6 +88,16 @@ extern int setrlimit64 (__rlimit_resource_t __resource,
    and put it in *USAGE.  Returns 0 for success, -1 for failure.  */
 extern int getrusage (__rusage_who_t __who, struct rusage *__usage) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (getrusage, (__rusage_who_t __who,
+                                       struct rusage *__usage),
+                           __getrusage64);
+# else
+# define getrusage __getrusage64
+# endif
+#endif
+
 /* Return the highest priority of any process specified by WHICH and WHO
    (see above); if WHO is zero, the current process, process group, or user
    (as specified by WHO) is used.  A lower priority number means higher
diff --git a/rt/aio.h b/rt/aio.h
index 3a107b2783..72cf626690 100644
--- a/rt/aio.h
+++ b/rt/aio.h
@@ -193,12 +193,17 @@ extern __ssize_t __REDIRECT_NTH (aio_return, (struct aiocb *__aiocbp),
 extern int __REDIRECT_NTH (aio_cancel,
 			   (int __fildes, struct aiocb *__aiocbp),
 			   aio_cancel64);
-
+#  ifdef __USE_TIME_BITS64
+extern int __REDIRECT_NTH (aio_suspend,
+			   (const struct aiocb *const __list[], int __nent,
+			    const struct timespec *__restrict __timeout),
+			   __aio_suspend_time64) __nonnull ((1));
+#  else
 extern int __REDIRECT_NTH (aio_suspend,
 			   (const struct aiocb *const __list[], int __nent,
 			    const struct timespec *__restrict __timeout),
 			   aio_suspend64) __nonnull ((1));
-
+#  endif
 extern int __REDIRECT_NTH (aio_fsync,
 			   (int __operation, struct aiocb *__aiocbp),
 			   aio_fsync64) __nonnull ((2));
@@ -210,7 +215,11 @@ extern int __REDIRECT_NTH (aio_fsync,
 #  define aio_error aio_error64
 #  define aio_return aio_return64
 #  define aio_cancel aio_cancel64
-#  define aio_suspend aio_suspend64
+#  ifdef __USE_TIME_BITS64
+#   define aio_suspend __aio_suspend_time64
+#  else
+#   define aio_suspend aio_suspend64
+#  endif
 #  define aio_fsync aio_fsync64
 # endif
 #endif
diff --git a/rt/mqueue.h b/rt/mqueue.h
index 8a62d99f50..e8a85637e4 100644
--- a/rt/mqueue.h
+++ b/rt/mqueue.h
@@ -71,6 +71,7 @@ extern int mq_send (mqd_t __mqdes, const char *__msg_ptr, size_t __msg_len,
 		    unsigned int __msg_prio) __nonnull ((2));
 
 #ifdef __USE_XOPEN2K
+# ifndef __USE_TIME_BITS64
 /* Receive the oldest from highest priority messages in message queue
    MQDES, stop waiting if ABS_TIMEOUT expires.  */
 extern ssize_t mq_timedreceive (mqd_t __mqdes, char *__restrict __msg_ptr,
@@ -85,6 +86,27 @@ extern int mq_timedsend (mqd_t __mqdes, const char *__msg_ptr,
 			 size_t __msg_len, unsigned int __msg_prio,
 			 const struct timespec *__abs_timeout)
   __nonnull ((2, 5));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (mq_timedreceive, (mqd_t __mqdes,
+                               char *__restrict __msg_ptr,
+                               size_t __msg_len,
+                               unsigned int *__restrict __msg_prio,
+                               const struct timespec *__restrict __abs_timeout),
+                       __mq_timedreceive_time64)
+  __nonnull ((2, 5));
+
+extern int __REDIRECT (mq_timedsend, (mqd_t __mqdes,
+                       const char *__msg_ptr, size_t __msg_len,
+                       unsigned int __msg_prio,
+                       const struct timespec *__abs_timeout),
+		       __mq_timedsend_time64)
+  __nonnull ((2, 5));
+#  else
+#   define mq_timedreceive __mq_timedreceive_time64
+#   define mq_timedsend __mq_timedsend_time64
+#  endif
+# endif
 #endif
 
 /* Define some inlines helping to catch common problems.  */
diff --git a/signal/signal.h b/signal/signal.h
index b17203c99c..5fd93382fc 100644
--- a/signal/signal.h
+++ b/signal/signal.h
@@ -269,10 +269,23 @@ extern int sigwaitinfo (const sigset_t *__restrict __set,
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+#  ifndef __USE_TIME_BITS64
 extern int sigtimedwait (const sigset_t *__restrict __set,
 			 siginfo_t *__restrict __info,
 			 const struct timespec *__restrict __timeout)
      __nonnull ((1));
+#  else
+#   ifdef __REDIRECT
+extern int __REDIRECT (sigtimedwait,
+                       (const sigset_t *__restrict __set,
+                        siginfo_t *__restrict __info,
+                        const struct timespec *__restrict __timeout),
+                       __sigtimedwait64)
+     __nonnull ((1));
+#   else
+#    define sigtimedwait __sigtimedwait64
+#   endif
+#  endif
 
 /* Send signal SIG to the process PID.  Associate data in VAL with the
    signal.  */
diff --git a/socket/sys/socket.h b/socket/sys/socket.h
index 949851a6ce..5577e75b80 100644
--- a/socket/sys/socket.h
+++ b/socket/sys/socket.h
@@ -196,9 +196,20 @@ extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags);
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
 		     unsigned int __vlen, int __flags,
 		     struct timespec *__tmo);
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (recvmmsg, (int __fd, struct mmsghdr *__vmessages,
+                                  unsigned int __vlen, int __flags,
+                                  struct timespec *__tmo),
+                       __recvmmsg64);
+#  else
+#   define recvmmsg __recvmmsg64
+#  endif
+# endif
 #endif
 
 
diff --git a/sysdeps/generic/features-time64.h b/sysdeps/generic/features-time64.h
new file mode 100644
index 0000000000..a5a677f837
--- /dev/null
+++ b/sysdeps/generic/features-time64.h
@@ -0,0 +1,19 @@
+/* Features part to handle 64-bit time_t support.  Generic 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/>.  */
+
+/* The generic configuration only support _TIME_BITS=32.  */
diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h
index a04a3a2754..8f3a41279f 100644
--- a/sysdeps/nptl/pthread.h
+++ b/sysdeps/nptl/pthread.h
@@ -221,6 +221,7 @@ extern int pthread_join (pthread_t __th, void **__thread_return);
    the thread in *THREAD_RETURN, if THREAD_RETURN is not NULL.  */
 extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __THROW;
 
+# ifndef __USE_TIME_BITS64
 /* Make calling thread wait for termination of the thread TH, but only
    until TIMEOUT.  The exit status of the thread is stored in
    *THREAD_RETURN, if THREAD_RETURN is not NULL.
@@ -240,6 +241,23 @@ extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
 extern int pthread_clockjoin_np (pthread_t __th, void **__thread_return,
                                  clockid_t __clockid,
 				 const struct timespec *__abstime);
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (pthread_timedjoin_np,
+                       (pthread_t __th, void **__thread_return,
+                        const struct timespec *__abstime),
+                       __pthread_timedjoin_np64);
+
+extern int __REDIRECT (pthread_clockjoin_np,
+                       (pthread_t __th, void **__thread_return,
+                        clockid_t __clockid,
+                        const struct timespec *__abstime),
+                       __pthread_clockjoin_np64);
+#  else
+#   define pthread_timedjoin_np __pthread_timedjoin_np64
+#   define pthread_clockjoin_np __pthread_clockjoin_np64
+#  endif
+# endif
 #endif
 
 /* Indicate that the thread TH is never to be joined with PTHREAD_JOIN.
@@ -773,16 +791,39 @@ extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
 
 #ifdef __USE_XOPEN2K
 /* Wait until lock becomes available, or specified time passes. */
+# ifndef __USE_TIME_BITS64
 extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
 				    const struct timespec *__restrict
 				    __abstime) __THROWNL __nonnull ((1, 2));
+# else
+#  ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_mutex_timedlock,
+                             (pthread_mutex_t *__restrict __mutex,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_mutex_timedlock64) __nonnull ((1, 2));
+#  else
+#   define pthread_mutex_timedlock __pthread_mutex_timedlock64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
+# ifndef __USE_TIME_BITS64
 extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex,
 				    clockid_t __clockid,
 				    const struct timespec *__restrict
 				    __abstime) __THROWNL __nonnull ((1, 3));
+# else
+#  ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_mutex_clocklock,
+                             (pthread_mutex_t *__restrict __mutex,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_mutex_clocklock64) __nonnull ((1, 3));
+#  else
+#   define pthread_mutex_clocklock __pthread_mutex_clocklock64
+#  endif
+# endif
 #endif
 
 /* Unlock a mutex.  */
@@ -919,16 +960,41 @@ extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
 
 # ifdef __USE_XOPEN2K
 /* Try to acquire read lock for RWLOCK or return after specfied time.  */
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 2));
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_timedrdlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_timedrdlock64)
+    __nonnull ((1, 2));
+#   else
+#    define pthread_rwlock_timedrdlock __pthread_rwlock_timedrdlock64
+#   endif
+#  endif
 # endif
 
 # ifdef __USE_GNU
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock,
 				       clockid_t __clockid,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 3));
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_clockrdlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_clockrdlock64)
+    __nonnull ((1, 3));
+#   else
+#    define pthread_rwlock_clockrdlock __pthread_rwlock_clockrdlock64
+#   endif
+#  endif
 # endif
 
 /* Acquire write lock for RWLOCK.  */
@@ -941,16 +1007,42 @@ extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
 
 # ifdef __USE_XOPEN2K
 /* Try to acquire write lock for RWLOCK or return after specfied time.  */
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 2));
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_timedwrlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_timedwrlock64)
+    __nonnull ((1, 2));
+#   else
+#    define pthread_rwlock_timedwrlock __pthread_rwlock_timedwrlock64
+#   endif
+#  endif
 # endif
 
 # ifdef __USE_GNU
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock,
 				       clockid_t __clockid,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 3));
+
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_clockwrlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_clockwrlock64)
+    __nonnull ((1, 3));
+#   else
+#    define pthread_rwlock_clockwrlock __pthread_rwlock_clockwrlock64
+#   endif
+#  endif
 # endif
 
 /* Unlock RWLOCK.  */
@@ -1027,10 +1119,23 @@ extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
 				   pthread_mutex_t *__restrict __mutex,
 				   const struct timespec *__restrict __abstime)
      __nonnull ((1, 2, 3));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (pthread_cond_timedwait,
+                       (pthread_cond_t *__restrict __cond,
+                        pthread_mutex_t *__restrict __mutex,
+                        const struct timespec *__restrict __abstime),
+                       __pthread_cond_timedwait64)
+     __nonnull ((1, 2, 3));
+#  else
+#   define pthread_cond_timedwait __pthread_cond_timedwait64
+#  endif
+# endif
 
 # ifdef __USE_GNU
 /* Wait for condition variable COND to be signaled or broadcast until
@@ -1040,11 +1145,25 @@ extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
 
    This function is a cancellation point and therefore not marked with
    __THROW. */
+#  ifndef __USE_TIME_BITS64
 extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond,
 				   pthread_mutex_t *__restrict __mutex,
 				   __clockid_t __clock_id,
 				   const struct timespec *__restrict __abstime)
      __nonnull ((1, 2, 4));
+#  else
+#   ifdef __REDIRECT
+extern int __REDIRECT (pthread_cond_clockwait,
+                       (pthread_cond_t *__restrict __cond,
+                        pthread_mutex_t *__restrict __mutex,
+                        __clockid_t __clock_id,
+                        const struct timespec *__restrict __abstime),
+                       __pthread_cond_clockwait64)
+     __nonnull ((1, 2, 4));
+#   else
+#    define pthread_cond_clockwait __pthread_cond_clockwait64
+#   endif
+#  endif
 # endif
 
 /* Functions for handling condition variable attributes.  */
diff --git a/sysdeps/pthread/semaphore.h b/sysdeps/pthread/semaphore.h
index 7fb0e5c103..35780e7c4e 100644
--- a/sysdeps/pthread/semaphore.h
+++ b/sysdeps/pthread/semaphore.h
@@ -59,16 +59,41 @@ extern int sem_wait (sem_t *__sem) __nonnull ((1));
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int sem_timedwait (sem_t *__restrict __sem,
 			  const struct timespec *__restrict __abstime)
   __nonnull ((1, 2));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (sem_timedwait,
+                       (sem_t *__restrict __sem,
+                        const struct timespec *__restrict __abstime),
+                        __sem_timedwait64)
+  __nonnull ((1, 2));
+#  else
+#   define sem_timedwait __sem_timedwait64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
+# ifndef __USE_TIME_BITS64
 extern int sem_clockwait (sem_t *__restrict __sem,
 			  clockid_t clock,
 			  const struct timespec *__restrict __abstime)
   __nonnull ((1, 3));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (sem_clockwait,
+                       (sem_t *__restrict __sem,
+                        clockid_t clock,
+                        const struct timespec *__restrict __abstime),
+                        __sem_clockwait64)
+  __nonnull ((1, 3));
+#  else
+#   define sem_clockwait __sem_clockwait64
+#  endif
+# endif
 #endif
 
 /* Test whether SEM is posted.  */
diff --git a/sysdeps/pthread/threads.h b/sysdeps/pthread/threads.h
index 46929a025e..bf251c9db4 100644
--- a/sysdeps/pthread/threads.h
+++ b/sysdeps/pthread/threads.h
@@ -88,8 +88,18 @@ extern thrd_t thrd_current (void);
    __TIME_POINT.  The current thread may resume if receives a signal.  In
    that case, if __REMAINING is not NULL, the remaining time is stored in
    the object pointed by it.  */
+#ifndef __USE_TIME_BITS64
 extern int thrd_sleep (const struct timespec *__time_point,
 		       struct timespec *__remaining);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (thrd_sleep, (const struct timespec *__time_point,
+                                    struct timespec *__remaining),
+                       __thrd_sleep64);
+# else
+#  define thrd_sleep __thrd_sleep64
+# endif
+#endif
 
 /* Terminate current thread execution, cleaning up any thread local
    storage and freeing resources.  Returns the value specified in __RES.  */
@@ -131,8 +141,19 @@ extern int mtx_lock (mtx_t *__mutex);
 /* Block the current thread until the mutex pointed by __MUTEX is unlocked
    or time pointed by __TIME_POINT is reached.  In case the mutex is unlock,
    the current thread will not be blocked.  */
+#ifndef __USE_TIME_BITS64
 extern int mtx_timedlock (mtx_t *__restrict __mutex,
 			  const struct timespec *__restrict __time_point);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (mtx_timedlock, (mtx_t *__restrict __mutex,
+                                       const struct timespec *__restrict
+                                       __time_point),
+                       __mtx_timedlock64);
+# else
+#  define mtx_timedlock __mtx_timedlock64
+# endif
+#endif
 
 /* Try to lock the mutex pointed by __MUTEX without blocking.  If the mutex
    is free the current threads takes control of it, otherwise it returns
@@ -171,9 +192,21 @@ extern int cnd_wait (cnd_t *__cond, mtx_t *__mutex);
 /* Block current thread on the condition variable until condition variable
    pointed by __COND is signaled or time pointed by __TIME_POINT is
    reached.  */
+#ifndef __USE_TIME_BITS64
 extern int cnd_timedwait (cnd_t *__restrict __cond,
 			  mtx_t *__restrict __mutex,
 			  const struct timespec *__restrict __time_point);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (cnd_timedwait, (cnd_t *__restrict __cond,
+                                       mtx_t *__restrict __mutex,
+                                       const struct timespec *__restrict
+                                       __time_point),
+                       __cnd_timedwait64);
+# else
+#  define cnd_timedwait __cnd_timedwait64
+# endif
+#endif
 
 /* Destroy condition variable pointed by __cond and free all of its
    resources.  */
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index 257ccbd3b4..45d31a46bc 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -1,3 +1,4 @@
+%include <time64-compat.h>
 libc {
   GLIBC_2.0 {
     # functions used in inline functions or macros
@@ -168,6 +169,75 @@ libc {
     getdents64; gettid; tgkill;
   }
   GLIBC_2.32 {
+  }
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    # io
+    __ppoll64;
+    __utime64;
+    __stat64_time64;
+    __lstat64_time64;
+    __fstat64_time64;
+    __fstatat64_time64;
+    # misc
+    __futimes64;
+    __futimesat64;
+    __lutimes64;
+    __select64;
+    __utimes64;
+    # posix
+    __nanosleep64;
+    __pselec64;
+    __wait3_time64;
+    __wait4_time64;
+    # nptl
+    __thrd_sleep64;
+    # resouces
+    __getrusage64;
+    # signal
+    __sigtimedwait64;
+    # sysvipc
+    __msgctl64;
+    __semctl64;
+    __semtimedop64;
+    __shmctl64;
+    # time
+    ___adjtimex64;
+    __adjtime64;
+    __clock_adjtime64;
+    __clock_getres64;
+    __clock_gettime64;
+    __clock_nanosleep_time64;
+    __clock_settime64;
+    __ctime64;
+    __ctime64_r;
+    __difftime64;
+    __futimens64;
+    __localtime64;
+    __localtime64_r;
+    __getitimer64;
+    __gettimeofday64;
+    __gmtime64;
+    __gmtime64_r;
+    __mktime64;
+    __nanosleep64;
+    __setitimer64;
+    __settimeofday64;
+    __time64;
+    __timegm64;
+    __timespec_get64;
+    __utimensat64;
+     __utimes64;
+    # misc
+    __ntp_gettime64;
+    __ntp_gettimex64;
+    __pselect64;
+    __recvmmsg64;
+    __sched_rr_get_interval64;
+    __timerfd_gettime64;
+    __timerfd_settime64;
+%endif
   }
   GLIBC_PRIVATE {
     # functions used in other libraries
@@ -182,3 +252,46 @@ libc {
     __netlink_assert_response;
   }
 }
+
+libpthread {
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    __cnd_timedwait64;
+    __mtx_timedlock64;
+    __pthread_clockjoin_np64;
+    __pthread_cond_timedwait64;
+    __pthread_cond_clockwait64;
+    __pthread_mutex_timedlock64;
+    __pthread_mutex_clocklock64;
+    __pthread_rwlock_clockrdlock64;
+    __pthread_rwlock_clockwrlock64;
+    __pthread_rwlock_timedrdlock64;
+    __pthread_rwlock_timedwrlock64;
+    __pthread_timedjoin_np64;
+    __sem_clockwait64;
+    __sem_timedwait64;
+%endif
+  }
+}
+
+librt {
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    __aio_suspend_time64;
+    __mq_timedsend_time64;
+    __mq_timedreceive_time64;
+    __timer_gettime64;
+    __timer_settime64;
+%endif
+  }
+}
+
+libanl {
+%ifdef TIME64_NON_DEFAULT
+  GLIBC_2.34 {
+    __gai_suspend_time64;
+  }
+%endif
+}
diff --git a/sysdeps/unix/sysv/linux/arm/be/libanl.abilist b/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 8111b49085..d63e0dee75 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -155,7 +155,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index b6c26c7a50..3fe358cc31 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -33,6 +33,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libanl.abilist b/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 4dba1f2f46..1a0f0d1312 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -152,7 +152,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index b6c26c7a50..3fe358cc31 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -33,6 +33,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/arm/time64-compat.h b/sysdeps/unix/sysv/linux/arm/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/arm/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/bits/msq.h b/sysdeps/unix/sysv/linux/bits/msq.h
index 3313b69d78..7c9c479551 100644
--- a/sysdeps/unix/sysv/linux/bits/msq.h
+++ b/sysdeps/unix/sysv/linux/bits/msq.h
@@ -26,6 +26,7 @@ typedef __syscall_ulong_t msgqnum_t;
 typedef __syscall_ulong_t msglen_t;
 
 #include <bits/types/struct_msqid_ds.h>
+#include <bits/types/struct_msqid64_ds.h>
 
 /* Define options for message queue functions.  */
 #define MSG_NOERROR	010000	/* no error if message is too big */
diff --git a/sysdeps/unix/sysv/linux/bits/sem.h b/sysdeps/unix/sysv/linux/bits/sem.h
index ad13287e66..776524b876 100644
--- a/sysdeps/unix/sysv/linux/bits/sem.h
+++ b/sysdeps/unix/sysv/linux/bits/sem.h
@@ -22,6 +22,7 @@
 #include <sys/types.h>
 #include <bits/timesize.h>
 #include <bits/types/struct_semid_ds.h>
+#include <bits/types/struct_semid64_ds.h>
 
 /* Flags for `semop'.  */
 #define SEM_UNDO	0x1000		/* undo the operation on exit */
diff --git a/sysdeps/unix/sysv/linux/bits/shm.h b/sysdeps/unix/sysv/linux/bits/shm.h
index a50c79d7be..454fc3f366 100644
--- a/sysdeps/unix/sysv/linux/bits/shm.h
+++ b/sysdeps/unix/sysv/linux/bits/shm.h
@@ -43,6 +43,7 @@ __BEGIN_DECLS
 typedef __syscall_ulong_t shmatt_t;
 
 #include <bits/types/struct_shmid_ds.h>
+#include <bits/types/struct_shmid64_ds.h>
 
 #ifdef __USE_MISC
 
diff --git a/sysdeps/unix/sysv/linux/bits/time.h b/sysdeps/unix/sysv/linux/bits/time.h
index ee5a8b3ef4..d0c98a7864 100644
--- a/sysdeps/unix/sysv/linux/bits/time.h
+++ b/sysdeps/unix/sysv/linux/bits/time.h
@@ -77,6 +77,16 @@ __BEGIN_DECLS
 /* Tune a POSIX clock.  */
 extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (clock_adjtime, (__clockid_t __clock_id,
+                                           struct timex *__utx),
+                           __clock_adjtime64);
+# else
+# define clock_adjtime __clock_adjtime64
+# endif
+#endif
+
 __END_DECLS
 #endif /* use GNU */
 
diff --git a/sysdeps/unix/sysv/linux/csky/libanl.abilist b/sysdeps/unix/sysv/linux/csky/libanl.abilist
index 416a6f8ddb..01f2e6cbf0 100644
--- a/sysdeps/unix/sysv/linux/csky/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.29 gai_cancel F
 GLIBC_2.29 gai_error F
 GLIBC_2.29 gai_suspend F
 GLIBC_2.29 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index a5ff3d90ca..120a3fc1ce 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -2115,7 +2115,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index 6ce59276a7..51d5822091 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -211,3 +211,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index c6690ef7c1..b60deca65a 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.29 timer_delete F
 GLIBC_2.29 timer_getoverrun F
 GLIBC_2.29 timer_gettime F
 GLIBC_2.29 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/csky/time64-compat.h b/sysdeps/unix/sysv/linux/csky/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/csky/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/features-time64.h b/sysdeps/unix/sysv/linux/features-time64.h
new file mode 100644
index 0000000000..c6a0a1874c
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/features-time64.h
@@ -0,0 +1,37 @@
+/* Features part to handle 64-bit time_t support.
+   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/>.  */
+
+/* We need to know the word size in order to check the time size.  */
+#include <bits/wordsize.h>
+#include <bits/timesize.h>
+
+#if defined _TIME_BITS
+# if _TIME_BITS == 64
+#  if ! defined (_FILE_OFFSET_BITS) || _FILE_OFFSET_BITS != 64
+#   error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64"
+#  elif __TIMESIZE == 32
+#   define __USE_TIME_BITS64	1
+#  endif
+# elif _TIME_BITS == 32
+#  if __TIMESIZE > 32
+#   error "_TIME_BITS=32 is not compatible with __TIMESIZE > 32"
+#  endif
+# else
+#  error Invalid _TIME_BITS value (can only be 32 or 64 bits)
+# endif
+#endif
diff --git a/sysdeps/unix/sysv/linux/hppa/libanl.abilist b/sysdeps/unix/sysv/linux/hppa/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/hppa/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 89a0f11166..77c7d2faf3 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2074,7 +2074,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index cabc5af858..0cdb30a3c1 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -218,6 +218,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/hppa/time64-compat.h b/sysdeps/unix/sysv/linux/hppa/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/hppa/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/i386/Makefile b/sysdeps/unix/sysv/linux/i386/Makefile
index da716e2c1b..8d5efb4f65 100644
--- a/sysdeps/unix/sysv/linux/i386/Makefile
+++ b/sysdeps/unix/sysv/linux/i386/Makefile
@@ -1,6 +1,8 @@
 # The default ABI is 32.
 default-abi := 32
 
+extra-version := Versions-y2038
+
 ifeq ($(subdir),misc)
 sysdep_routines += ioperm iopl vm86
 
diff --git a/sysdeps/unix/sysv/linux/i386/libanl.abilist b/sysdeps/unix/sysv/linux/i386/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/i386/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index a7c408d18c..7d1a9691e7 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2241,7 +2241,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index 18177307c8..b3a825d60e 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -226,6 +226,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/i386/time64-compat.h b/sysdeps/unix/sysv/linux/i386/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/include/sys/msg.h b/sysdeps/unix/sysv/linux/include/sys/msg.h
index 522903f818..c460be0dc9 100644
--- a/sysdeps/unix/sysv/linux/include/sys/msg.h
+++ b/sysdeps/unix/sysv/linux/include/sys/msg.h
@@ -7,8 +7,6 @@ extern ssize_t __libc_msgrcv (int msqid, void *msgp, size_t msgsz,
 extern int __libc_msgsnd (int msqid, const void *msgp, size_t msgsz,
 			  int msgflg);
 
-# include <bits/types/struct_msqid64_ds.h>
-
 # if __TIMESIZE == 64
 #  define __msgctl64 __msgctl
 # else
diff --git a/sysdeps/unix/sysv/linux/include/sys/shm.h b/sysdeps/unix/sysv/linux/include/sys/shm.h
index 530a1cdfc9..85177a632d 100644
--- a/sysdeps/unix/sysv/linux/include/sys/shm.h
+++ b/sysdeps/unix/sysv/linux/include/sys/shm.h
@@ -3,8 +3,6 @@
 
 #ifndef _ISOMAC
 
-# include <bits/types/struct_shmid64_ds.h>
-
 # if __TIMESIZE == 64
 #  define __shmctl64 __shmctl
 # else
diff --git a/sysdeps/unix/sysv/linux/include/sys/timex.h b/sysdeps/unix/sysv/linux/include/sys/timex.h
index e136ed172e..c554248ed9 100644
--- a/sysdeps/unix/sysv/linux/include/sys/timex.h
+++ b/sysdeps/unix/sysv/linux/include/sys/timex.h
@@ -23,10 +23,12 @@
 
 # ifndef _ISOMAC
 
+extern int __adjtimex (struct timex *__ntx);
 libc_hidden_proto (__adjtimex)
 
 #  include <time.h>
 #  include <struct___timeval64.h>
+
 /* Local definition of 64 bit time supporting timex struct */
 #  if __TIMESIZE == 64
 #   define __timex64 timex
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index e1171a34aa..da00a3d3c3 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -156,7 +156,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index b6c26c7a50..3fe358cc31 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -33,6 +33,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index a521506506..3e0f00210f 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2186,7 +2186,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index 18177307c8..b3a825d60e 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -226,6 +226,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/m68k/time64-compat.h b/sysdeps/unix/sysv/linux/m68k/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/m68k/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
index 67c7554803..c06e33a1cf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.18 gai_cancel F
 GLIBC_2.18 gai_error F
 GLIBC_2.18 gai_suspend F
 GLIBC_2.18 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index aba642460c..9bed39a8e8 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2166,7 +2166,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index 60397187b6..855c469c63 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -218,3 +218,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index 889dfbc0ee..1b8fc10087 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timer_gettime F
 GLIBC_2.18 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
index 67c7554803..c06e33a1cf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.18 gai_cancel F
 GLIBC_2.18 gai_error F
 GLIBC_2.18 gai_suspend F
 GLIBC_2.18 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index d3d653d144..872321bbab 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2163,7 +2163,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index 60397187b6..855c469c63 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -218,3 +218,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 889dfbc0ee..1b8fc10087 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timer_gettime F
 GLIBC_2.18 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/time64-compat.h b/sysdeps/unix/sysv/linux/microblaze/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/microblaze/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index a4ce56c34f..77dcc8ab7d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2157,7 +2157,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index b35d7f19ca..887a32a376 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -227,6 +227,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index 1539c1cef9..c4dd28e3b2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 51fbf0b1e1..c41f85ce01 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2155,7 +2155,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h b/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 5642781479..4208f9df82 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2163,7 +2163,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
index b35d7f19ca..887a32a376 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
@@ -227,6 +227,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index 1539c1cef9..c4dd28e3b2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h b/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/nios2/libanl.abilist b/sysdeps/unix/sysv/linux/nios2/libanl.abilist
index 6ff9c2d94e..6b080bd075 100644
--- a/sysdeps/unix/sysv/linux/nios2/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.21 gai_cancel F
 GLIBC_2.21 gai_error F
 GLIBC_2.21 gai_suspend F
 GLIBC_2.21 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 848cb2e599..ff0bb57cb6 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2204,7 +2204,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 924ad6e451..18407317e6 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -218,3 +218,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index b4ae7a2dc2..2458614125 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.21 timer_delete F
 GLIBC_2.21 timer_getoverrun F
 GLIBC_2.21 timer_gettime F
 GLIBC_2.21 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/time64-compat.h b/sysdeps/unix/sysv/linux/nios2/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/nios2/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 93e83fa602..57f1fe012a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2213,7 +2213,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 13b41dafb6..711812931d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -228,6 +228,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index ec0b6d69b1..6c9fa9c098 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2246,7 +2246,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 7bc5c8866b..d357619c55 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2211,7 +2211,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 lastlog_read F
 GLIBC_2.34 lastlog_write F
 GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 0a60f1cca2..28db1e4b6d 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -228,6 +228,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h b/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/semctl.c b/sysdeps/unix/sysv/linux/semctl.c
index 1043b2b80d..bb2690d30f 100644
--- a/sysdeps/unix/sysv/linux/semctl.c
+++ b/sysdeps/unix/sysv/linux/semctl.c
@@ -21,7 +21,6 @@
 #include <ipc_priv.h>
 #include <sysdep.h>
 #include <shlib-compat.h>
-#include <bits/types/struct_semid64_ds.h>  /* For __semid64_ds.  */
 #include <linux/posix_types.h>             /* For __kernel_mode_t.  */
 
 /* The struct used to issue the syscall.  For architectures that assume
diff --git a/sysdeps/unix/sysv/linux/sh/be/libanl.abilist b/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 06143b0283..725952a763 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2081,7 +2081,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index cabc5af858..0cdb30a3c1 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -218,6 +218,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libanl.abilist b/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index eab2af349b..7f07b96287 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2078,7 +2078,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index cabc5af858..0cdb30a3c1 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -218,6 +218,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sh/time64-compat.h b/sysdeps/unix/sysv/linux/sh/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sh/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 4783a8fa97..3b7af990d4 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2202,7 +2202,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index 390b6384d0..b5f763d9fd 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -228,6 +228,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index 38f0aad791..fb2769e87b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -34,6 +34,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h b/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/sys/timerfd.h b/sysdeps/unix/sysv/linux/sys/timerfd.h
index 4ad64c2259..790b9d5be6 100644
--- a/sysdeps/unix/sysv/linux/sys/timerfd.h
+++ b/sysdeps/unix/sysv/linux/sys/timerfd.h
@@ -47,9 +47,31 @@ extern int timerfd_settime (int __ufd, int __flags,
 			    const struct itimerspec *__utmr,
 			    struct itimerspec *__otmr) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timerfd_settime,
+                           (int __ufd, int __flags,
+                            const struct itimerspec *__restrict __value,
+                            struct itimerspec *__restrict __ovalue),
+                           __timerfd_settime64);
+# else
+# define timerfd_settime __timerfd_settime64
+# endif
+#endif
+
 /* Return the next expiration time of UFD.  */
 extern int timerfd_gettime (int __ufd, struct itimerspec *__otmr) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timerfd_gettime, (int __ufd,
+                                             struct itimerspec *__otmr),
+                           __timerfd_gettime64);
+# else
+# define timerfd_gettime __timerfd_gettime64
+# endif
+#endif
+
 __END_DECLS
 
 #endif /* sys/timerfd.h */
diff --git a/sysdeps/unix/sysv/linux/sys/timex.h b/sysdeps/unix/sysv/linux/sys/timex.h
index 37931ff496..298f0ca6e7 100644
--- a/sysdeps/unix/sysv/linux/sys/timex.h
+++ b/sysdeps/unix/sysv/linux/sys/timex.h
@@ -54,17 +54,33 @@ struct ntptimeval
 
 __BEGIN_DECLS
 
-extern int __adjtimex (struct timex *__ntx) __THROW;
+#ifndef __USE_TIME_BITS64
 extern int adjtimex (struct timex *__ntx) __THROW;
 
-#ifdef __REDIRECT_NTH
+# ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv),
-			   ntp_gettimex);
+                           __ntp_gettime64);
+# else
+#  define ntp_gettime ntp_gettimex
+# endif
+extern int ntp_adjtime (struct timex *__tntx) __THROW;
 #else
-extern int ntp_gettimex (struct ntptimeval *__ntv) __THROW;
-# define ntp_gettime ntp_gettimex
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (adjtimex, (struct timex *__ntx),
+                           ___adjtimex64);
+extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv),
+                           __ntp_gettime64);
+extern int __REDIRECT_NTH (ntp_gettimex, (struct ntptimeval *__ntv),
+                           __ntp_gettimex64);
+extern int __REDIRECT_NTH (ntp_adjtime, (struct timex *__ntx),
+                           ___adjtimex64);
+# else
+#  define adjtimex ___adjtimex64
+#  define ntp_adjtime ___adjtimex64
+#  define ntp_gettime __ntp_gettime64
+#  define ntp_gettimex __ntp_gettimex64
+# endif
 #endif
-extern int ntp_adjtime (struct timex *__tntx) __THROW;
 
 __END_DECLS
 
diff --git a/sysdeps/unix/sysv/linux/time64-compat.h b/sysdeps/unix/sysv/linux/time64-compat.h
new file mode 100644
index 0000000000..e44b6b68e3
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/time64-compat.h
@@ -0,0 +1,3 @@
+/* Header included by Versions to generate the 64 bit time_t compat symbols.
+   Legacy ABIs with default 32 bit time support define TIME64_NON_DEFAULT to
+   generate the 64 bit symbols.  */
diff --git a/sysvipc/sys/msg.h b/sysvipc/sys/msg.h
index 9ddedf5e15..f31a43757d 100644
--- a/sysvipc/sys/msg.h
+++ b/sysvipc/sys/msg.h
@@ -58,7 +58,17 @@ struct msgbuf
 __BEGIN_DECLS
 
 /* Message queue control operation.  */
+#ifndef __USE_TIME_BITS64
 extern int msgctl (int __msqid, int __cmd, struct msqid_ds *__buf) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (msgctl,
+                           (int __msqid, int __cmd, struct msqid_ds *__buf),
+                           __msgctl64);
+# else
+#  define msgctl __msgctl64
+# endif
+#endif
 
 /* Get messages queue.  */
 extern int msgget (key_t __key, int __msgflg) __THROW;
diff --git a/sysvipc/sys/sem.h b/sysvipc/sys/sem.h
index 03b65dff21..4eb4c51bbe 100644
--- a/sysvipc/sys/sem.h
+++ b/sysvipc/sys/sem.h
@@ -48,7 +48,17 @@ struct sembuf
 __BEGIN_DECLS
 
 /* Semaphore control operation.  */
+#ifndef __USE_TIME_BITS64
 extern int semctl (int __semid, int __semnum, int __cmd, ...) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (semctl,
+                           (int __semid, int __semnum, int __cmd, ...),
+                           __semctl64);
+# else
+#  define semctl __semctl64
+# endif
+#endif
 
 /* Get semaphore.  */
 extern int semget (key_t __key, int __nsems, int __semflg) __THROW;
@@ -58,8 +68,19 @@ extern int semop (int __semid, struct sembuf *__sops, size_t __nsops) __THROW;
 
 #ifdef __USE_GNU
 /* Operate on semaphore with timeout.  */
+# ifndef __USE_TIME_BITS64
 extern int semtimedop (int __semid, struct sembuf *__sops, size_t __nsops,
 		       const struct timespec *__timeout) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (semtimedop, (int __semid, struct sembuf *__sops,
+                                        size_t __nsops,
+                                        const struct timespec *__timeout),
+                           __semtimedop64);
+#  else
+#   define semtimedop __semtimedop64
+#  endif
+# endif
 #endif
 
 __END_DECLS
diff --git a/sysvipc/sys/shm.h b/sysvipc/sys/shm.h
index 7506ba67bf..b09e0497e6 100644
--- a/sysvipc/sys/shm.h
+++ b/sysvipc/sys/shm.h
@@ -46,7 +46,17 @@ __BEGIN_DECLS
    facility.  The definition is found in XPG4.2.  */
 
 /* Shared memory control operation.  */
+#ifndef __USE_TIME_BITS64
 extern int shmctl (int __shmid, int __cmd, struct shmid_ds *__buf) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (shmctl,
+                           (int __shmid, int __cmd, struct shmid_ds *__buf),
+                           __shmctl64);
+# else
+#  define shmctl __shmctl64
+# endif
+#endif
 
 /* Get shared memory segment.  */
 extern int shmget (key_t __key, size_t __size, int __shmflg) __THROW;
diff --git a/time/sys/time.h b/time/sys/time.h
index 42f91f186b..d21411c0b4 100644
--- a/time/sys/time.h
+++ b/time/sys/time.h
@@ -63,10 +63,21 @@ struct timezone
    use localtime etc. instead.
    This function itself is semi-obsolete;
    most callers should use time or clock_gettime instead. */
+#ifndef __USE_TIME_BITS64
 extern int gettimeofday (struct timeval *__restrict __tv,
 			 void *__restrict __tz) __THROW __nonnull ((1));
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (gettimeofday, (struct timeval *__restrict __tv,
+                                          void *__restrict __tz),
+                           __gettimeofday64) __nonnull ((1));
+# else
+#  define gettimeofday __gettimeofday64
+# endif
+#endif
 
 #ifdef __USE_MISC
+# ifndef __USE_TIME_BITS64
 /* Set the current time of day and timezone information.
    This call is restricted to the super-user.
    Setting the timezone in this way is obsolete, but we don't yet
@@ -82,6 +93,20 @@ extern int settimeofday (const struct timeval *__tv,
    This call is restricted to the super-user.  */
 extern int adjtime (const struct timeval *__delta,
 		    struct timeval *__olddelta) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (settimeofday, (const struct timeval *__tv,
+                                          const struct timezone *__tz),
+                           __settimeofday64);
+
+extern int __REDIRECT_NTH (adjtime, (const struct timeval *__delta,
+                                     struct timeval *__olddelta),
+                           __adjtime64);
+#  else
+#   define settimeofday __settimeofday64
+#   define adjtime __adjtime64
+#  endif
+# endif
 #endif
 
 
@@ -118,6 +143,7 @@ typedef enum __itimer_which __itimer_which_t;
 typedef int __itimer_which_t;
 #endif
 
+#ifndef __USE_TIME_BITS64
 /* Set *VALUE to the current setting of timer WHICH.
    Return 0 on success, -1 on errors.  */
 extern int getitimer (__itimer_which_t __which,
@@ -136,21 +162,66 @@ extern int setitimer (__itimer_which_t __which,
 extern int utimes (const char *__file, const struct timeval __tvp[2])
      __THROW __nonnull ((1));
 
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (getitimer, (__itimer_which_t __which,
+                                       struct itimerval *__value),
+                           __getitimer64);
+
+extern int __REDIRECT_NTH (setitimer, (__itimer_which_t __which,
+                                       const struct itimerval *__restrict __new,
+                                       struct itimerval *__restrict __old),
+                           __setitimer64);
+
+extern int __REDIRECT_NTH (utimes, (const char *__file,
+                                    const struct timeval __tvp[2]),
+                           __utimes64) __nonnull ((1));
+# else
+#  define getitimer __getitimer64
+#  define setitimer __setitimer64
+#  define utimes __utimes64
+# endif
+#endif
+
 #ifdef __USE_MISC
+# ifndef __USE_TIME_BITS64
 /* Same as `utimes', but does not follow symbolic links.  */
 extern int lutimes (const char *__file, const struct timeval __tvp[2])
      __THROW __nonnull ((1));
 
 /* Same as `utimes', but takes an open file descriptor instead of a name.  */
 extern int futimes (int __fd, const struct timeval __tvp[2]) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (lutimes, (const char *__file,
+                                     const struct timeval __tvp[2]),
+                           __lutimes64) __nonnull ((1));
+
+extern int __REDIRECT_NTH (futimes, (int __fd, const struct timeval __tvp[2]),
+                           __futimes64);
+#  else
+#   define lutimes __lutimes64
+#   define futimes __futimes64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
+# ifndef __USE_TIME_BITS64
 /* Change the access time of FILE relative to FD to TVP[0] and the
    modification time of FILE to TVP[1].  If TVP is a null pointer, use
    the current time instead.  Returns 0 on success, -1 on errors.  */
 extern int futimesat (int __fd, const char *__file,
 		      const struct timeval __tvp[2]) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (futimesat, (int __fd, const char *__file,
+                                       const struct timeval __tvp[2]),
+                           __futimesat64);
+#  else
+#   define futimesat __futimesat64
+#  endif
+# endif
 #endif
 
 
diff --git a/time/time.h b/time/time.h
index 3bf206be0b..91b81cb1c6 100644
--- a/time/time.h
+++ b/time/time.h
@@ -71,6 +71,7 @@ __BEGIN_DECLS
    The result / CLOCKS_PER_SEC is program time in seconds.  */
 extern clock_t clock (void) __THROW;
 
+#ifndef __USE_TIME_BITS64
 /* Return the current time and put it in *TIMER if TIMER is not NULL.  */
 extern time_t time (time_t *__timer) __THROW;
 
@@ -80,7 +81,18 @@ extern double difftime (time_t __time1, time_t __time0)
 
 /* Return the `time_t' representation of TP and normalize TP.  */
 extern time_t mktime (struct tm *__tp) __THROW;
-
+#else
+# ifdef __REDIRECT_NTH
+extern time_t __REDIRECT_NTH (time, (time_t *__timer), __time64);
+extern double __REDIRECT_NTH (difftime, (time_t __time1, time_t __time0),
+                              __difftime64) __attribute__ ((__const__));
+extern time_t __REDIRECT_NTH (mktime, (struct tm *__tp), __mktime64);
+# else
+#  define time __time64
+#  define difftime __difftime64
+#  define mktime __mktime64
+# endif
+#endif
 
 /* Format TP into S according to FORMAT.
    Write no more than MAXSIZE characters and return the number
@@ -114,6 +126,7 @@ extern char *strptime_l (const char *__restrict __s,
 #endif
 
 
+#ifndef __USE_TIME_BITS64
 /* Return the `struct tm' representation of *TIMER
    in Universal Coordinated Time (aka Greenwich Mean Time).  */
 extern struct tm *gmtime (const time_t *__timer) __THROW;
@@ -122,7 +135,20 @@ extern struct tm *gmtime (const time_t *__timer) __THROW;
    of *TIMER in the local timezone.  */
 extern struct tm *localtime (const time_t *__timer) __THROW;
 
+#else
+# ifdef __REDIRECT_NTH
+extern struct tm*__REDIRECT_NTH (gmtime, (const time_t *__timer), __gmtime64);
+extern struct tm *__REDIRECT_NTH (localtime, (const time_t *__timer),
+				  __localtime64);
+# else
+#  define gmtime __gmtime64
+#  define localtime __localtime64
+# endif
+#endif
+
+
 #if defined __USE_POSIX || __GLIBC_USE (ISOC2X)
+# ifndef __USE_TIME_BITS64
 /* Return the `struct tm' representation of *TIMER in UTC,
    using *TP to store the result.  */
 extern struct tm *gmtime_r (const time_t *__restrict __timer,
@@ -132,6 +158,20 @@ extern struct tm *gmtime_r (const time_t *__restrict __timer,
    using *TP to store the result.  */
 extern struct tm *localtime_r (const time_t *__restrict __timer,
 			       struct tm *__restrict __tp) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern struct tm*__REDIRECT_NTH (gmtime_r, (const time_t *__restrict __timer,
+                                            struct tm *__restrict __tp),
+                                 __gmtime64_r);
+
+extern struct tm*__REDIRECT_NTH (localtime_r, (const time_t *__restrict __t,
+                                               struct tm *__restrict __tp),
+                                 __localtime64_r);
+#  else
+#   define gmtime_r __gmtime64_r
+#   define localtime_r __localtime_r
+#  endif
+# endif
 #endif	/* POSIX || C2X */
 
 /* Return a string of the form "Day Mon dd hh:mm:ss yyyy\n"
@@ -139,7 +179,15 @@ extern struct tm *localtime_r (const time_t *__restrict __timer,
 extern char *asctime (const struct tm *__tp) __THROW;
 
 /* Equivalent to `asctime (localtime (timer))'.  */
+#ifndef __USE_TIME_BITS64
 extern char *ctime (const time_t *__timer) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern char *__REDIRECT_NTH (ctime, (const time_t *__timer), __ctime64);
+# else
+#  define ctime __ctime64
+# endif
+#endif
 
 #if defined __USE_POSIX || __GLIBC_USE (ISOC2X)
 /* Reentrant versions of the above functions.  */
@@ -150,8 +198,18 @@ extern char *asctime_r (const struct tm *__restrict __tp,
 			char *__restrict __buf) __THROW;
 
 /* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'.  */
+#ifndef __USE_TIME_BITS64
 extern char *ctime_r (const time_t *__restrict __timer,
 		      char *__restrict __buf) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern char *__REDIRECT_NTH (ctime_r, (const time_t *__restrict __timer,
+                                       char *__restrict __buf), __ctime64_r);
+# else
+#  define ctime_r __ctime64_r
+# endif
+#endif
+
 #endif	/* POSIX || C2X */
 
 
@@ -186,11 +244,19 @@ extern long int timezone;
 /* Miscellaneous functions many Unices inherited from the public domain
    localtime package.  These are included only for compatibility.  */
 
+#ifndef __USE_TIME_BITS64
 /* Like `mktime', but for TP represents Universal Time, not local time.  */
 extern time_t timegm (struct tm *__tp) __THROW;
-
 /* Another name for `mktime'.  */
 extern time_t timelocal (struct tm *__tp) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern time_t __REDIRECT_NTH (timegm, (struct tm *__tp), __timegm64);
+extern time_t __REDIRECT_NTH (timelocal, (struct tm *__tp), __mktime64);
+# else
+#  define timegm __timegm64
+# endif
+#endif
 
 /* Return the number of days in YEAR.  */
 extern int dysize (int __year) __THROW  __attribute__ ((__const__));
@@ -198,6 +264,7 @@ extern int dysize (int __year) __THROW  __attribute__ ((__const__));
 
 
 #ifdef __USE_POSIX199309
+# ifndef __USE_TIME_BITS64
 /* Pause execution for a number of nanoseconds.
 
    This function is a cancellation point and therefore not marked with
@@ -205,7 +272,6 @@ extern int dysize (int __year) __THROW  __attribute__ ((__const__));
 extern int nanosleep (const struct timespec *__requested_time,
 		      struct timespec *__remaining);
 
-
 /* Get resolution of clock CLOCK_ID.  */
 extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __THROW;
 
@@ -215,15 +281,46 @@ extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW;
 /* Set clock CLOCK_ID to value TP.  */
 extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp)
      __THROW;
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (nanosleep, (const struct timespec *__requested_time,
+                                   struct timespec *__remaining),
+                       __nanosleep64);
+extern int __REDIRECT_NTH (clock_getres, (clockid_t __clock_id,
+                                          struct timespec *__res),
+                           __clock_getres64);
+extern int __REDIRECT_NTH (clock_gettime, (clockid_t __clock_id, struct
+                                           timespec *__tp), __clock_gettime64);
+extern int __REDIRECT_NTH (clock_settime, (clockid_t __clock_id, const struct
+                                           timespec *__tp), __clock_settime64);
+#  else
+#   define nanosleep __nanosleep64
+#   define clock_getres __clock_getres64
+#   define clock_gettime __clock_gettime64
+#   define clock_settime __clock_settime64
+#  endif
+# endif
+
 
 # ifdef __USE_XOPEN2K
 /* High-resolution sleep with the specified clock.
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+#  ifndef __USE_TIME_BITS64
 extern int clock_nanosleep (clockid_t __clock_id, int __flags,
 			    const struct timespec *__req,
 			    struct timespec *__rem);
+#  else
+#   ifdef __REDIRECT
+extern int __REDIRECT (clock_nanosleep, (clockid_t __clock_id, int __flags,
+                                         const struct timespec *__req,
+                                         struct timespec *__rem),
+                       __clock_nanosleep_time64);
+#   else
+#    define clock_nanosleep __clock_nanosleep_time64
+#   endif
+#  endif
 
 /* Return clock ID for CPU-time clock.  */
 extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __THROW;
@@ -239,6 +336,7 @@ extern int timer_create (clockid_t __clock_id,
 extern int timer_delete (timer_t __timerid) __THROW;
 
 /* Set timer TIMERID to VALUE, returning old value in OVALUE.  */
+# ifndef __USE_TIME_BITS64
 extern int timer_settime (timer_t __timerid, int __flags,
 			  const struct itimerspec *__restrict __value,
 			  struct itimerspec *__restrict __ovalue) __THROW;
@@ -246,6 +344,21 @@ extern int timer_settime (timer_t __timerid, int __flags,
 /* Get current value of timer TIMERID and store it in VALUE.  */
 extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
      __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (timer_settime, (timer_t __timerid, int __flags,
+     const struct itimerspec *__restrict __value,
+     struct itimerspec *__restrict __ovalue),
+                          __timer_settime64);
+
+extern int __REDIRECT_NTH (timer_gettime, (timer_t __timerid,
+                                           struct itimerspec *__value),
+                           __timer_gettime64);
+#  else
+#   define timer_settime __timer_settime64
+#   define timer_gettime __timer_gettime64
+#  endif
+# endif
 
 /* Get expiration overrun for timer TIMERID.  */
 extern int timer_getoverrun (timer_t __timerid) __THROW;
@@ -253,9 +366,18 @@ extern int timer_getoverrun (timer_t __timerid) __THROW;
 
 
 #ifdef __USE_ISOC11
+# ifndef __USE_TIME_BITS64
 /* Set TS to calendar time based in time base BASE.  */
 extern int timespec_get (struct timespec *__ts, int __base)
      __THROW __nonnull ((1));
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (timespec_get, (struct timespec *__ts, int __base),
+                           __timespec_get64) __nonnull ((1));
+#  else
+#   define timespec_get __timespec_get64
+#  endif
+# endif
 #endif


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [glibc/azanella/y2038] y2038: Add support for 64 bit time on legacy ABIs
@ 2021-03-04 11:32 Adhemerval Zanella
  0 siblings, 0 replies; 10+ messages in thread
From: Adhemerval Zanella @ 2021-03-04 11:32 UTC (permalink / raw)
  To: glibc-cvs

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=3222a8ca6c4df7568c46587554c5d0712b127097

commit 3222a8ca6c4df7568c46587554c5d0712b127097
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Wed Feb 17 13:35:19 2021 -0300

    y2038: Add support for 64 bit time on legacy ABIs
    
    A new build flag, _TIME_BITS, enables the usage of the newer 64 bit
    time symbols for legacy ABI (where 32 bit time_t is default).  The 64
    bit time support is only enabled if LFS (_FILE_OFFSET_BITS=64) is
    also used.
    
    Different than LFS support, the y2038 symbols are added only for the
    required ABIs (armhf, csky, hppa, i386, m68k, microblaze, mips32,
    mips64-n32, nios2, powerpc32, sparc32, s390-32, and sh).  The ABIs with
    64 bit time support are unchanged, both for symbol and types
    redirection.
    
    On Linux apropoer 64 bit time support requires a minimum of kernel
    version v5.1.  Otherwise, the 32 bit fallbacks are used and might
    results in error with overflow return code (EOVERFLOW).
    
    The i686-gnu does not yet support 64 bit time, and trying to build
    it using -D_TIME_BITS=64 results in an error.
    
    This patch also converts following implemetations to support 64 bit
    time:
    
      * libc:
        - adjtimex
        - adjtime
        - clock_adjtime
        - clock_getres
        - clock_gettime
        - clock_nanosleep
        - clock_settime
        - ctime
        - ctime_r
        - difftime
        - futimens
        - futimes
        - futimesat
        - getitimer
        - getrusage
        - gettimeofday
        - gmtime
        - gmtime_r
        - localtime
        - localtime_r
        - lutimes
        - mktime
        - msgctl
        - nanosleep
        - ntp_gettime
        - ntp_gettimex
        - ppoll
        - pselect
        - recvmmsg
        - sched_rr_get_interval
        - select
        - semctl
        - semtimedop
        - setitimer
        - settimeofday
        - shmctl
        - sigtimedwait
        - thrd_sleep
        - time
        - timegm
        - timelocal (alias to mktime)
        - timerfd_gettime
        - timerfd_settime
        - timespec_get
        - utime
        - utimensat
        - utimes
        - wait3
        - wait4
    
      * libpthread:
        - mtx_timedlock
        - pthread_clockjoin_np
        - pthread_cond_clockwait
        - pthread_cond_timedwait
        - pthread_mutex_clocklock
        - pthread_mutex_timedlock
        - pthread_rwlock_clockrdlock
        - pthread_rwlock_clockwrlock
        - pthread_rwlock_timedrdlock
        - pthread_rwlock_timedwrlock
        - pthread_timedjoin_np
        - sem_clockwait
        - sem_timedwait
    
      * librt:
        - aio_suspend
        - mq_timedreceive
        - mq_timedsend
        - timer_gettime
        - timer_settime
    
      * libanl:
        - gai_suspend

Diff:
---
 Makefile                                           |   2 +-
 NEWS                                               |   4 +
 include/features-time64.h                          |   1 +
 include/features.h                                 |   2 +
 io/sys/poll.h                                      |  11 ++
 io/sys/stat.h                                      | 113 ++++++++++++++++--
 io/utime.h                                         |  11 ++
 manual/creature.texi                               |  44 +++++++
 misc/sys/select.h                                  |  27 +++++
 posix/sched.h                                      |  11 +-
 posix/sys/wait.h                                   |  20 ++++
 resolv/netdb.h                                     |  11 ++
 resource/sys/resource.h                            |  10 ++
 rt/aio.h                                           |  15 ++-
 rt/mqueue.h                                        |  22 ++++
 signal/signal.h                                    |  13 +++
 socket/sys/socket.h                                |  11 ++
 sysdeps/generic/features-time64.h                  |  19 +++
 sysdeps/nptl/pthread.h                             | 119 +++++++++++++++++++
 sysdeps/pthread/semaphore.h                        |  25 ++++
 sysdeps/pthread/threads.h                          |  33 ++++++
 sysdeps/unix/sysv/linux/Versions                   | 113 ++++++++++++++++++
 sysdeps/unix/sysv/linux/arm/be/libanl.abilist      |   1 +
 sysdeps/unix/sysv/linux/arm/be/libc.abilist        |  52 +++++++++
 sysdeps/unix/sysv/linux/arm/be/libpthread.abilist  |  14 +++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist       |   5 +
 sysdeps/unix/sysv/linux/arm/le/libanl.abilist      |   1 +
 sysdeps/unix/sysv/linux/arm/le/libc.abilist        |  52 +++++++++
 sysdeps/unix/sysv/linux/arm/le/libpthread.abilist  |  14 +++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist       |   5 +
 sysdeps/unix/sysv/linux/arm/time64-compat.h        |   2 +
 sysdeps/unix/sysv/linux/bits/msq.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/sem.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/shm.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/time.h                |  10 ++
 sysdeps/unix/sysv/linux/csky/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/csky/libc.abilist          |  52 +++++++++
 sysdeps/unix/sysv/linux/csky/libpthread.abilist    |  14 +++
 sysdeps/unix/sysv/linux/csky/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/csky/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/features-time64.h          |  37 ++++++
 sysdeps/unix/sysv/linux/hppa/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/hppa/libc.abilist          |  52 +++++++++
 sysdeps/unix/sysv/linux/hppa/libpthread.abilist    |  14 +++
 sysdeps/unix/sysv/linux/hppa/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/hppa/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/i386/Makefile              |   2 +
 sysdeps/unix/sysv/linux/i386/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/i386/libc.abilist          |  52 +++++++++
 sysdeps/unix/sysv/linux/i386/libpthread.abilist    |  14 +++
 sysdeps/unix/sysv/linux/i386/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/i386/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/include/sys/msg.h          |   2 -
 sysdeps/unix/sysv/linux/include/sys/shm.h          |   2 -
 sysdeps/unix/sysv/linux/include/sys/timex.h        |   2 +
 .../unix/sysv/linux/m68k/coldfire/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist |  52 +++++++++
 .../sysv/linux/m68k/coldfire/libpthread.abilist    |  14 +++
 .../unix/sysv/linux/m68k/coldfire/librt.abilist    |   5 +
 sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist |   1 +
 sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist   |  52 +++++++++
 .../unix/sysv/linux/m68k/m680x0/libpthread.abilist |  14 +++
 sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist  |   5 +
 sysdeps/unix/sysv/linux/m68k/time64-compat.h       |   2 +
 .../unix/sysv/linux/microblaze/be/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/microblaze/be/libc.abilist |  52 +++++++++
 .../sysv/linux/microblaze/be/libpthread.abilist    |  14 +++
 .../unix/sysv/linux/microblaze/be/librt.abilist    |   5 +
 .../unix/sysv/linux/microblaze/le/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/microblaze/le/libc.abilist |  52 +++++++++
 .../sysv/linux/microblaze/le/libpthread.abilist    |  14 +++
 .../unix/sysv/linux/microblaze/le/librt.abilist    |   5 +
 sysdeps/unix/sysv/linux/microblaze/time64-compat.h |   2 +
 .../unix/sysv/linux/mips/mips32/fpu/libc.abilist   |  52 +++++++++
 sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist |   1 +
 .../unix/sysv/linux/mips/mips32/libpthread.abilist |  14 +++
 sysdeps/unix/sysv/linux/mips/mips32/librt.abilist  |   5 +
 .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist |  52 +++++++++
 .../unix/sysv/linux/mips/mips32/time64-compat.h    |   2 +
 .../unix/sysv/linux/mips/mips64/n32/libanl.abilist |   1 +
 .../unix/sysv/linux/mips/mips64/n32/libc.abilist   |  52 +++++++++
 .../sysv/linux/mips/mips64/n32/libpthread.abilist  |  14 +++
 .../unix/sysv/linux/mips/mips64/n32/librt.abilist  |   5 +
 .../sysv/linux/mips/mips64/n32/time64-compat.h     |   2 +
 sysdeps/unix/sysv/linux/nios2/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/nios2/libc.abilist         |  52 +++++++++
 sysdeps/unix/sysv/linux/nios2/libpthread.abilist   |  14 +++
 sysdeps/unix/sysv/linux/nios2/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/nios2/time64-compat.h      |   2 +
 .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist  |  52 +++++++++
 .../sysv/linux/powerpc/powerpc32/libanl.abilist    |   1 +
 .../linux/powerpc/powerpc32/libpthread.abilist     |  14 +++
 .../sysv/linux/powerpc/powerpc32/librt.abilist     |   5 +
 .../linux/powerpc/powerpc32/nofpu/libc.abilist     |  52 +++++++++
 .../sysv/linux/powerpc/powerpc32/time64-compat.h   |   2 +
 .../unix/sysv/linux/s390/s390-32/libanl.abilist    |   1 +
 sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist  |  52 +++++++++
 .../sysv/linux/s390/s390-32/libpthread.abilist     |  14 +++
 sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist |   5 +
 .../unix/sysv/linux/s390/s390-32/time64-compat.h   |   2 +
 sysdeps/unix/sysv/linux/semctl.c                   |   1 -
 sysdeps/unix/sysv/linux/sh/be/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/sh/be/libc.abilist         |  52 +++++++++
 sysdeps/unix/sysv/linux/sh/be/libpthread.abilist   |  14 +++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/sh/le/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/sh/le/libc.abilist         |  52 +++++++++
 sysdeps/unix/sysv/linux/sh/le/libpthread.abilist   |  14 +++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/sh/time64-compat.h         |   2 +
 .../unix/sysv/linux/sparc/sparc32/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist |  52 +++++++++
 .../sysv/linux/sparc/sparc32/libpthread.abilist    |  14 +++
 .../unix/sysv/linux/sparc/sparc32/librt.abilist    |   5 +
 .../unix/sysv/linux/sparc/sparc32/time64-compat.h  |   2 +
 sysdeps/unix/sysv/linux/sys/timerfd.h              |  22 ++++
 sysdeps/unix/sysv/linux/sys/timex.h                |  28 ++++-
 sysdeps/unix/sysv/linux/time64-compat.h            |   3 +
 sysvipc/sys/msg.h                                  |  10 ++
 sysvipc/sys/sem.h                                  |  21 ++++
 sysvipc/sys/shm.h                                  |  10 ++
 time/sys/time.h                                    |  71 ++++++++++++
 time/time.h                                        | 128 ++++++++++++++++++++-
 123 files changed, 2314 insertions(+), 29 deletions(-)

diff --git a/Makefile b/Makefile
index 71c7d8b5ec..2fd88294f5 100644
--- a/Makefile
+++ b/Makefile
@@ -68,7 +68,7 @@ endif # $(AUTOCONF) = no
 		   subdir_objs subdir_stubs subdir_testclean		\
 		   $(addprefix install-, no-libc.a bin lib data headers others)
 \f
-headers := limits.h values.h features.h gnu-versions.h \
+headers := limits.h values.h features.h features-time64.h gnu-versions.h \
 	   bits/xopen_lim.h gnu/libc-version.h stdc-predef.h \
 	   bits/libc-header-start.h
 
diff --git a/NEWS b/NEWS
index 73a1a0df97..a5d2f54959 100644
--- a/NEWS
+++ b/NEWS
@@ -18,6 +18,10 @@ Major new features:
   a dump of information related to IFUNC resolver operation and
   glibc-hwcaps subdirectory selection.
 
+* Add support for 64 bit time_t support for ABIs with defaults to 32 bit
+  time_t.  This is enabled with the _TIME_BITS flag set to 64 and it
+  is support on Linux with a minimum version of 5.1.
+
 Deprecated and removed features, and other changes affecting compatibility:
 
   [Add deprecations, removals and changes affecting compatibility here]
diff --git a/include/features-time64.h b/include/features-time64.h
new file mode 100644
index 0000000000..06115b7c86
--- /dev/null
+++ b/include/features-time64.h
@@ -0,0 +1 @@
+#include_next <features-time64.h>
diff --git a/include/features.h b/include/features.h
index eb97470afa..9d39e11345 100644
--- a/include/features.h
+++ b/include/features.h
@@ -387,6 +387,8 @@
 # define __USE_FILE_OFFSET64	1
 #endif
 
+#include <features-time64.h>
+
 #if defined _DEFAULT_SOURCE
 # define __USE_MISC	1
 #endif
diff --git a/io/sys/poll.h b/io/sys/poll.h
index 2431dd1e14..4a0ce7eaad 100644
--- a/io/sys/poll.h
+++ b/io/sys/poll.h
@@ -63,6 +63,17 @@ extern int poll (struct pollfd *__fds, nfds_t __nfds, int __timeout);
 extern int ppoll (struct pollfd *__fds, nfds_t __nfds,
 		  const struct timespec *__timeout,
 		  const __sigset_t *__ss);
+
+# ifdef __USE_TIME_BITS64
+#  ifdef __REDIRECT
+extern int __REDIRECT (ppoll, (struct pollfd *__fds, nfds_t __nfds,
+                               const struct timespec *__timeout,
+                               const __sigset_t *__ss),
+                       __ppoll64);
+#  else
+#  define ppoll __ppoll64
+#  endif
+# endif
 #endif
 
 __END_DECLS
diff --git a/io/sys/stat.h b/io/sys/stat.h
index 549375c087..9a1c8321dd 100644
--- a/io/sys/stat.h
+++ b/io/sys/stat.h
@@ -209,21 +209,51 @@ extern int stat (const char *__restrict __file,
    that file descriptor FD is open on and put them in BUF.  */
 extern int fstat (int __fd, struct stat *__buf) __THROW __nonnull ((2));
 #else
-# ifdef __REDIRECT_NTH
+# ifdef __USE_TIME_BITS64
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
+				  struct stat *__restrict __buf),
+				  __stat64_time64)
+     __nonnull ((1, 2));
+extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf),
+				   __fstat64_time64)
+     __nonnull ((2));
+#  else
+#   define stat __stat64_time64
+#   define fstat __fstat64_time64
+#  endif
+# else
+#  ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
 				  struct stat *__restrict __buf), stat64)
      __nonnull ((1, 2));
 extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf), fstat64)
      __nonnull ((2));
-# else
-#  define stat stat64
-#  define fstat fstat64
+#  else
+#   define stat stat64
+#   define fstat fstat64
+#  endif
 # endif
 #endif
 #ifdef __USE_LARGEFILE64
+# ifndef __USE_TIME_BITS64
 extern int stat64 (const char *__restrict __file,
 		   struct stat64 *__restrict __buf) __THROW __nonnull ((1, 2));
 extern int fstat64 (int __fd, struct stat64 *__buf) __THROW __nonnull ((2));
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (stat64, (const char *__restrict __file,
+				    struct stat64 *__restrict __buf),
+			   __stat64_time64)
+     __nonnull ((1, 2));
+extern int __REDIRECT_NTH (fstat64, (int __fd, struct stat *__buf),
+			   __fstat64_time64)
+     __nonnull ((2));
+#  else
+#   define stat64 __stat64_time64
+#   define fstat64 __fstat64_time
+#  endif
+# endif
 #endif
 
 #ifdef __USE_ATFILE
@@ -235,20 +265,44 @@ extern int fstatat (int __fd, const char *__restrict __file,
 		    struct stat *__restrict __buf, int __flag)
      __THROW __nonnull ((2, 3));
 # else
-#  ifdef __REDIRECT_NTH
+#  ifdef __USE_TIME_BITS64
+#   ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
 				     struct stat *__restrict __buf,
 				     int __flag),
-			   fstatat64) __nonnull ((2, 3));
+			   __fstatat64_time64) __nonnull ((2, 3));
+#   else
+#    define fstatat __fstatat64_time64
+#   endif
 #  else
-#   define fstatat fstatat64
+#   ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
+				     struct stat *__restrict __buf,
+				     int __flag),
+			   fstatat64) __nonnull ((2, 3));
+#   else
+#    define fstatat fstatat64
+#   endif
 #  endif
 # endif
 
 # ifdef __USE_LARGEFILE64
+#  ifndef __USE_TIME_BITS64
 extern int fstatat64 (int __fd, const char *__restrict __file,
 		      struct stat64 *__restrict __buf, int __flag)
      __THROW __nonnull ((2, 3));
+#  else
+#   ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (fstatat64, (int __fd,
+				       const char *__restrict __file,
+				       struct stat64 *__restrict __buf,
+				       int __flag),
+			   __fstatat64_time64)
+     __nonnull ((2, 3));
+#   else
+#    define fstatat64 __fstatat64_time64
+#   endif
+#  endif
 # endif
 #endif
 
@@ -259,19 +313,37 @@ extern int fstatat64 (int __fd, const char *__restrict __file,
 extern int lstat (const char *__restrict __file,
 		  struct stat *__restrict __buf) __THROW __nonnull ((1, 2));
 # else
-#  ifdef __REDIRECT_NTH
+#  ifdef __USE_TIME_BITS64
+#   ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (lstat,
 			   (const char *__restrict __file,
-			    struct stat *__restrict __buf), lstat64)
+			    struct stat *__restrict __buf), __lstat64_time64)
      __nonnull ((1, 2));
+#   else
+#    define lstat __lstat64_time64
+#   endif
 #  else
-#   define lstat lstat64
+#   ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (lstat,
+			   (const char *__restrict __file,
+			    struct stat *__restrict __buf), lstat64)
+     __nonnull ((1, 2));
+#   else
+#    define lstat lstat64
+#   endif
 #  endif
 # endif
 # ifdef __USE_LARGEFILE64
+#  ifndef __USE_TIME_BITS64
 extern int lstat64 (const char *__restrict __file,
 		    struct stat64 *__restrict __buf)
      __THROW __nonnull ((1, 2));
+#  else
+extern int __REDIRECT_NTH (lstat64, (const char *__restrict __file,
+				     struct stat64 *__restrict __buf),
+			   __lstat64_time64)
+     __nonnull ((1, 2));
+#  endif
 # endif
 #endif
 
@@ -355,17 +427,38 @@ extern int mkfifoat (int __fd, const char *__path, __mode_t __mode)
 #endif
 \f
 #ifdef __USE_ATFILE
+# ifndef __USE_TIME_BITS64
 /* Set file access and modification times relative to directory file
    descriptor.  */
 extern int utimensat (int __fd, const char *__path,
 		      const struct timespec __times[2],
 		      int __flags)
      __THROW __nonnull ((2));
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (utimensat, (int fd, const char *__path,
+                                       const struct timespec __times[2],
+                                       int flags),
+                           __utimensat64) __nonnull ((2));
+#  else
+#   define utimensat __utimensat64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_XOPEN2K8
+# ifndef __USE_TIME_BITS64
 /* Set file access and modification times of the file associated with FD.  */
 extern int futimens (int __fd, const struct timespec __times[2]) __THROW;
+
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (futimens, (int fd, const struct timespec __times[2]),
+                           __futimens64);
+#  else
+#   define futimens __futimens64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
diff --git a/io/utime.h b/io/utime.h
index c7612d0838..1a645a3fff 100644
--- a/io/utime.h
+++ b/io/utime.h
@@ -46,10 +46,21 @@ struct utimbuf
 
 /* Set the access and modification times of FILE to those given in
    *FILE_TIMES.  If FILE_TIMES is NULL, set them to the current time.  */
+#ifndef __USE_TIME_BITS64
 extern int utime (const char *__file,
 		  const struct utimbuf *__file_times)
      __THROW __nonnull ((1));
 
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (utime, (const char *__file,
+                                   const struct utimbuf *__file_times),
+                           __utime64);
+# else
+#  define utime __utime64
+# endif
+#endif
+
 __END_DECLS
 
 #endif /* utime.h */
diff --git a/manual/creature.texi b/manual/creature.texi
index 5090735e4f..606b73d184 100644
--- a/manual/creature.texi
+++ b/manual/creature.texi
@@ -165,6 +165,50 @@ This macro was introduced as part of the Large File Support extension
 (LFS).
 @end defvr
 
+@defvr Macro _TIME_BITS
+This macro determines the bit size of @code{time_t} (and therefore the
+bit size of all @code{time_t} derived types and the prototypes of all
+related functions).  If @code{_TIME_BITS} is undefined, the bit size of
+@code{time_t} is architecture dependent.
+
+Possible values of @code{_TIME_BITS}:
+@enumerate
+@item
+@code{_TIME_BITS=64} and port from the outset uses 64-bit
+@code{time_t} and word size equals to @w{64 bits} (e.g. x86_64) - no
+action
+
+@item
+@code{_TIME_BITS=32} and port from the outset uses 32-bit
+@code{time_t} and word size equals to @w{64 bits} (e.g. ARM) - no
+action
+
+@item
+@code{_TIME_BITS=64} and port from the outset uses 64-bit
+@code{time_t} and word size equals to @w{32 bits} (e.g. ARC, RV32)
+- no action
+
+@item
+@code{_TIME_BITS=64} and port from the outset uses 32-bit
+@code{time_t} and word size equals to @w{32 bits} (e.g. ARM)
+- the @code{time_t} is modified to be able to hold 64-bit time.
+
+@item
+For any other use case the compile-time error is emitted.
+@end enumerate
+
+The @code{_TIME_BITS} can be only used when @code{_FILE_OFFSET_BITS=64}
+is also defined.
+
+For the point @b{4} above, calls to proper syscalls depend on the
+Linux kernel version on which the system is running. For Linux kernel
+version above @b{5.1} syscalls supporting 64-bit time are used. Otherwise,
+a fallback code is used with legacy (i.e. 32-bit) syscalls.
+
+By using this macro certain ports gain support for 64-bit time and as
+a result become immune to Y2038 problem.
+@end defvr
+
 @defvr Macro _ISOC99_SOURCE
 @standards{GNU, (none)}
 If this macro is defined, features from ISO C99 are included.  Since
diff --git a/misc/sys/select.h b/misc/sys/select.h
index 188a7fe607..e9c0e8fc20 100644
--- a/misc/sys/select.h
+++ b/misc/sys/select.h
@@ -98,10 +98,23 @@ __BEGIN_DECLS
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+#ifndef __USE_TIME_BITS64
 extern int select (int __nfds, fd_set *__restrict __readfds,
 		   fd_set *__restrict __writefds,
 		   fd_set *__restrict __exceptfds,
 		   struct timeval *__restrict __timeout);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (select,
+                       (int __nfds, fd_set *__restrict __readfds,
+                        fd_set *__restrict __writefds,
+                        fd_set *__restrict __exceptfds,
+                        struct timeval *__restrict __timeout),
+                       __select64);
+# else
+#  define select __select64
+# endif
+#endif
 
 #ifdef __USE_XOPEN2K
 /* Same as above only that the TIMEOUT value is given with higher
@@ -110,11 +123,25 @@ extern int select (int __nfds, fd_set *__restrict __readfds,
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int pselect (int __nfds, fd_set *__restrict __readfds,
 		    fd_set *__restrict __writefds,
 		    fd_set *__restrict __exceptfds,
 		    const struct timespec *__restrict __timeout,
 		    const __sigset_t *__restrict __sigmask);
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (pselect,
+                       (int __nfds, fd_set *__restrict __readfds,
+                        fd_set *__restrict __writefds,
+                        fd_set *__restrict __exceptfds,
+                        const struct timespec *__restrict __timeout,
+                        const __sigset_t *__restrict __sigmask),
+                       __pselect64);
+#  else
+#   define pselect __pselect64
+#  endif
+# endif
 #endif
 
 
diff --git a/posix/sched.h b/posix/sched.h
index d8ce08a3ea..7dd97a49b2 100644
--- a/posix/sched.h
+++ b/posix/sched.h
@@ -74,8 +74,17 @@ extern int sched_get_priority_max (int __algorithm) __THROW;
 extern int sched_get_priority_min (int __algorithm) __THROW;
 
 /* Get the SCHED_RR interval for the named process.  */
+#ifndef __USE_TIME_BITS64
 extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __THROW;
-
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (sched_rr_get_interval,
+                           (__pid_t __pid, struct timespec *__t),
+                           __sched_rr_get_interval64);
+# else
+#  define sched_rr_get_interval __sched_rr_get_interval64
+# endif
+#endif
 
 #ifdef __USE_GNU
 /* Access macros for `cpu_set'.  */
diff --git a/posix/sys/wait.h b/posix/sys/wait.h
index 9e7bb7f154..5325bfa4d2 100644
--- a/posix/sys/wait.h
+++ b/posix/sys/wait.h
@@ -144,14 +144,34 @@ struct rusage;
    nil, store information about the child's resource usage there.  If the
    WUNTRACED bit is set in OPTIONS, return status for stopped children;
    otherwise don't.  */
+# ifndef __USE_TIME_BITS64
 extern __pid_t wait3 (int *__stat_loc, int __options,
 		      struct rusage * __usage) __THROWNL;
+# else
+#  ifdef __REDIRECT_NTHNL
+extern __pid_t __REDIRECT_NTHNL (wait3, (int *__stat_loc, int __options,
+                                         struct rusage * __usage),
+                                 __wait3_time64);
+#  else
+#   define wait3 __wait3_time64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_MISC
+# ifndef __USE_TIME_BITS64
 /* PID is like waitpid.  Other args are like wait3.  */
 extern __pid_t wait4 (__pid_t __pid, int *__stat_loc, int __options,
 		      struct rusage *__usage) __THROWNL;
+# else
+#  ifdef __REDIRECT_NTHNL
+extern __pid_t __REDIRECT_NTHNL (wait4, (__pid_t __pid, int *__stat_loc,
+                                         int __options, struct rusage *__usage),
+                                 __wait4_time64);
+#  else
+#   define wait4 __wait4_time64
+#  endif
+# endif
 #endif /* Use misc.  */
 
 
diff --git a/resolv/netdb.h b/resolv/netdb.h
index 1f36f25d4a..9b242ce3d1 100644
--- a/resolv/netdb.h
+++ b/resolv/netdb.h
@@ -701,6 +701,17 @@ extern int getaddrinfo_a (int __mode, struct gaicb *__list[__restrict_arr],
 extern int gai_suspend (const struct gaicb *const __list[], int __ent,
 			const struct timespec *__timeout);
 
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (gai_suspend, (const struct gaicb *const __list[],
+                                     int __ent,
+                                     const struct timespec *__timeout),
+                       __gai_suspend_time64);
+#  else
+#   define gai_suspend __gai_suspend_time64
+#  endif
+# endif
+
 /* Get the error status of the request REQ.  */
 extern int gai_error (struct gaicb *__req) __THROW;
 
diff --git a/resource/sys/resource.h b/resource/sys/resource.h
index d30379d085..551d25e275 100644
--- a/resource/sys/resource.h
+++ b/resource/sys/resource.h
@@ -88,6 +88,16 @@ extern int setrlimit64 (__rlimit_resource_t __resource,
    and put it in *USAGE.  Returns 0 for success, -1 for failure.  */
 extern int getrusage (__rusage_who_t __who, struct rusage *__usage) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (getrusage, (__rusage_who_t __who,
+                                       struct rusage *__usage),
+                           __getrusage64);
+# else
+# define getrusage __getrusage64
+# endif
+#endif
+
 /* Return the highest priority of any process specified by WHICH and WHO
    (see above); if WHO is zero, the current process, process group, or user
    (as specified by WHO) is used.  A lower priority number means higher
diff --git a/rt/aio.h b/rt/aio.h
index 3a107b2783..72cf626690 100644
--- a/rt/aio.h
+++ b/rt/aio.h
@@ -193,12 +193,17 @@ extern __ssize_t __REDIRECT_NTH (aio_return, (struct aiocb *__aiocbp),
 extern int __REDIRECT_NTH (aio_cancel,
 			   (int __fildes, struct aiocb *__aiocbp),
 			   aio_cancel64);
-
+#  ifdef __USE_TIME_BITS64
+extern int __REDIRECT_NTH (aio_suspend,
+			   (const struct aiocb *const __list[], int __nent,
+			    const struct timespec *__restrict __timeout),
+			   __aio_suspend_time64) __nonnull ((1));
+#  else
 extern int __REDIRECT_NTH (aio_suspend,
 			   (const struct aiocb *const __list[], int __nent,
 			    const struct timespec *__restrict __timeout),
 			   aio_suspend64) __nonnull ((1));
-
+#  endif
 extern int __REDIRECT_NTH (aio_fsync,
 			   (int __operation, struct aiocb *__aiocbp),
 			   aio_fsync64) __nonnull ((2));
@@ -210,7 +215,11 @@ extern int __REDIRECT_NTH (aio_fsync,
 #  define aio_error aio_error64
 #  define aio_return aio_return64
 #  define aio_cancel aio_cancel64
-#  define aio_suspend aio_suspend64
+#  ifdef __USE_TIME_BITS64
+#   define aio_suspend __aio_suspend_time64
+#  else
+#   define aio_suspend aio_suspend64
+#  endif
 #  define aio_fsync aio_fsync64
 # endif
 #endif
diff --git a/rt/mqueue.h b/rt/mqueue.h
index 8a62d99f50..e8a85637e4 100644
--- a/rt/mqueue.h
+++ b/rt/mqueue.h
@@ -71,6 +71,7 @@ extern int mq_send (mqd_t __mqdes, const char *__msg_ptr, size_t __msg_len,
 		    unsigned int __msg_prio) __nonnull ((2));
 
 #ifdef __USE_XOPEN2K
+# ifndef __USE_TIME_BITS64
 /* Receive the oldest from highest priority messages in message queue
    MQDES, stop waiting if ABS_TIMEOUT expires.  */
 extern ssize_t mq_timedreceive (mqd_t __mqdes, char *__restrict __msg_ptr,
@@ -85,6 +86,27 @@ extern int mq_timedsend (mqd_t __mqdes, const char *__msg_ptr,
 			 size_t __msg_len, unsigned int __msg_prio,
 			 const struct timespec *__abs_timeout)
   __nonnull ((2, 5));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (mq_timedreceive, (mqd_t __mqdes,
+                               char *__restrict __msg_ptr,
+                               size_t __msg_len,
+                               unsigned int *__restrict __msg_prio,
+                               const struct timespec *__restrict __abs_timeout),
+                       __mq_timedreceive_time64)
+  __nonnull ((2, 5));
+
+extern int __REDIRECT (mq_timedsend, (mqd_t __mqdes,
+                       const char *__msg_ptr, size_t __msg_len,
+                       unsigned int __msg_prio,
+                       const struct timespec *__abs_timeout),
+		       __mq_timedsend_time64)
+  __nonnull ((2, 5));
+#  else
+#   define mq_timedreceive __mq_timedreceive_time64
+#   define mq_timedsend __mq_timedsend_time64
+#  endif
+# endif
 #endif
 
 /* Define some inlines helping to catch common problems.  */
diff --git a/signal/signal.h b/signal/signal.h
index b17203c99c..5fd93382fc 100644
--- a/signal/signal.h
+++ b/signal/signal.h
@@ -269,10 +269,23 @@ extern int sigwaitinfo (const sigset_t *__restrict __set,
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+#  ifndef __USE_TIME_BITS64
 extern int sigtimedwait (const sigset_t *__restrict __set,
 			 siginfo_t *__restrict __info,
 			 const struct timespec *__restrict __timeout)
      __nonnull ((1));
+#  else
+#   ifdef __REDIRECT
+extern int __REDIRECT (sigtimedwait,
+                       (const sigset_t *__restrict __set,
+                        siginfo_t *__restrict __info,
+                        const struct timespec *__restrict __timeout),
+                       __sigtimedwait64)
+     __nonnull ((1));
+#   else
+#    define sigtimedwait __sigtimedwait64
+#   endif
+#  endif
 
 /* Send signal SIG to the process PID.  Associate data in VAL with the
    signal.  */
diff --git a/socket/sys/socket.h b/socket/sys/socket.h
index 949851a6ce..5577e75b80 100644
--- a/socket/sys/socket.h
+++ b/socket/sys/socket.h
@@ -196,9 +196,20 @@ extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags);
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
 		     unsigned int __vlen, int __flags,
 		     struct timespec *__tmo);
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (recvmmsg, (int __fd, struct mmsghdr *__vmessages,
+                                  unsigned int __vlen, int __flags,
+                                  struct timespec *__tmo),
+                       __recvmmsg64);
+#  else
+#   define recvmmsg __recvmmsg64
+#  endif
+# endif
 #endif
 
 
diff --git a/sysdeps/generic/features-time64.h b/sysdeps/generic/features-time64.h
new file mode 100644
index 0000000000..a5a677f837
--- /dev/null
+++ b/sysdeps/generic/features-time64.h
@@ -0,0 +1,19 @@
+/* Features part to handle 64-bit time_t support.  Generic 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/>.  */
+
+/* The generic configuration only support _TIME_BITS=32.  */
diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h
index a04a3a2754..8f3a41279f 100644
--- a/sysdeps/nptl/pthread.h
+++ b/sysdeps/nptl/pthread.h
@@ -221,6 +221,7 @@ extern int pthread_join (pthread_t __th, void **__thread_return);
    the thread in *THREAD_RETURN, if THREAD_RETURN is not NULL.  */
 extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __THROW;
 
+# ifndef __USE_TIME_BITS64
 /* Make calling thread wait for termination of the thread TH, but only
    until TIMEOUT.  The exit status of the thread is stored in
    *THREAD_RETURN, if THREAD_RETURN is not NULL.
@@ -240,6 +241,23 @@ extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
 extern int pthread_clockjoin_np (pthread_t __th, void **__thread_return,
                                  clockid_t __clockid,
 				 const struct timespec *__abstime);
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (pthread_timedjoin_np,
+                       (pthread_t __th, void **__thread_return,
+                        const struct timespec *__abstime),
+                       __pthread_timedjoin_np64);
+
+extern int __REDIRECT (pthread_clockjoin_np,
+                       (pthread_t __th, void **__thread_return,
+                        clockid_t __clockid,
+                        const struct timespec *__abstime),
+                       __pthread_clockjoin_np64);
+#  else
+#   define pthread_timedjoin_np __pthread_timedjoin_np64
+#   define pthread_clockjoin_np __pthread_clockjoin_np64
+#  endif
+# endif
 #endif
 
 /* Indicate that the thread TH is never to be joined with PTHREAD_JOIN.
@@ -773,16 +791,39 @@ extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
 
 #ifdef __USE_XOPEN2K
 /* Wait until lock becomes available, or specified time passes. */
+# ifndef __USE_TIME_BITS64
 extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
 				    const struct timespec *__restrict
 				    __abstime) __THROWNL __nonnull ((1, 2));
+# else
+#  ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_mutex_timedlock,
+                             (pthread_mutex_t *__restrict __mutex,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_mutex_timedlock64) __nonnull ((1, 2));
+#  else
+#   define pthread_mutex_timedlock __pthread_mutex_timedlock64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
+# ifndef __USE_TIME_BITS64
 extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex,
 				    clockid_t __clockid,
 				    const struct timespec *__restrict
 				    __abstime) __THROWNL __nonnull ((1, 3));
+# else
+#  ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_mutex_clocklock,
+                             (pthread_mutex_t *__restrict __mutex,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_mutex_clocklock64) __nonnull ((1, 3));
+#  else
+#   define pthread_mutex_clocklock __pthread_mutex_clocklock64
+#  endif
+# endif
 #endif
 
 /* Unlock a mutex.  */
@@ -919,16 +960,41 @@ extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
 
 # ifdef __USE_XOPEN2K
 /* Try to acquire read lock for RWLOCK or return after specfied time.  */
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 2));
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_timedrdlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_timedrdlock64)
+    __nonnull ((1, 2));
+#   else
+#    define pthread_rwlock_timedrdlock __pthread_rwlock_timedrdlock64
+#   endif
+#  endif
 # endif
 
 # ifdef __USE_GNU
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock,
 				       clockid_t __clockid,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 3));
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_clockrdlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_clockrdlock64)
+    __nonnull ((1, 3));
+#   else
+#    define pthread_rwlock_clockrdlock __pthread_rwlock_clockrdlock64
+#   endif
+#  endif
 # endif
 
 /* Acquire write lock for RWLOCK.  */
@@ -941,16 +1007,42 @@ extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
 
 # ifdef __USE_XOPEN2K
 /* Try to acquire write lock for RWLOCK or return after specfied time.  */
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 2));
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_timedwrlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_timedwrlock64)
+    __nonnull ((1, 2));
+#   else
+#    define pthread_rwlock_timedwrlock __pthread_rwlock_timedwrlock64
+#   endif
+#  endif
 # endif
 
 # ifdef __USE_GNU
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock,
 				       clockid_t __clockid,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 3));
+
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_clockwrlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_clockwrlock64)
+    __nonnull ((1, 3));
+#   else
+#    define pthread_rwlock_clockwrlock __pthread_rwlock_clockwrlock64
+#   endif
+#  endif
 # endif
 
 /* Unlock RWLOCK.  */
@@ -1027,10 +1119,23 @@ extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
 				   pthread_mutex_t *__restrict __mutex,
 				   const struct timespec *__restrict __abstime)
      __nonnull ((1, 2, 3));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (pthread_cond_timedwait,
+                       (pthread_cond_t *__restrict __cond,
+                        pthread_mutex_t *__restrict __mutex,
+                        const struct timespec *__restrict __abstime),
+                       __pthread_cond_timedwait64)
+     __nonnull ((1, 2, 3));
+#  else
+#   define pthread_cond_timedwait __pthread_cond_timedwait64
+#  endif
+# endif
 
 # ifdef __USE_GNU
 /* Wait for condition variable COND to be signaled or broadcast until
@@ -1040,11 +1145,25 @@ extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
 
    This function is a cancellation point and therefore not marked with
    __THROW. */
+#  ifndef __USE_TIME_BITS64
 extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond,
 				   pthread_mutex_t *__restrict __mutex,
 				   __clockid_t __clock_id,
 				   const struct timespec *__restrict __abstime)
      __nonnull ((1, 2, 4));
+#  else
+#   ifdef __REDIRECT
+extern int __REDIRECT (pthread_cond_clockwait,
+                       (pthread_cond_t *__restrict __cond,
+                        pthread_mutex_t *__restrict __mutex,
+                        __clockid_t __clock_id,
+                        const struct timespec *__restrict __abstime),
+                       __pthread_cond_clockwait64)
+     __nonnull ((1, 2, 4));
+#   else
+#    define pthread_cond_clockwait __pthread_cond_clockwait64
+#   endif
+#  endif
 # endif
 
 /* Functions for handling condition variable attributes.  */
diff --git a/sysdeps/pthread/semaphore.h b/sysdeps/pthread/semaphore.h
index 7fb0e5c103..35780e7c4e 100644
--- a/sysdeps/pthread/semaphore.h
+++ b/sysdeps/pthread/semaphore.h
@@ -59,16 +59,41 @@ extern int sem_wait (sem_t *__sem) __nonnull ((1));
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int sem_timedwait (sem_t *__restrict __sem,
 			  const struct timespec *__restrict __abstime)
   __nonnull ((1, 2));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (sem_timedwait,
+                       (sem_t *__restrict __sem,
+                        const struct timespec *__restrict __abstime),
+                        __sem_timedwait64)
+  __nonnull ((1, 2));
+#  else
+#   define sem_timedwait __sem_timedwait64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
+# ifndef __USE_TIME_BITS64
 extern int sem_clockwait (sem_t *__restrict __sem,
 			  clockid_t clock,
 			  const struct timespec *__restrict __abstime)
   __nonnull ((1, 3));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (sem_clockwait,
+                       (sem_t *__restrict __sem,
+                        clockid_t clock,
+                        const struct timespec *__restrict __abstime),
+                        __sem_clockwait64)
+  __nonnull ((1, 3));
+#  else
+#   define sem_clockwait __sem_clockwait64
+#  endif
+# endif
 #endif
 
 /* Test whether SEM is posted.  */
diff --git a/sysdeps/pthread/threads.h b/sysdeps/pthread/threads.h
index 46929a025e..bf251c9db4 100644
--- a/sysdeps/pthread/threads.h
+++ b/sysdeps/pthread/threads.h
@@ -88,8 +88,18 @@ extern thrd_t thrd_current (void);
    __TIME_POINT.  The current thread may resume if receives a signal.  In
    that case, if __REMAINING is not NULL, the remaining time is stored in
    the object pointed by it.  */
+#ifndef __USE_TIME_BITS64
 extern int thrd_sleep (const struct timespec *__time_point,
 		       struct timespec *__remaining);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (thrd_sleep, (const struct timespec *__time_point,
+                                    struct timespec *__remaining),
+                       __thrd_sleep64);
+# else
+#  define thrd_sleep __thrd_sleep64
+# endif
+#endif
 
 /* Terminate current thread execution, cleaning up any thread local
    storage and freeing resources.  Returns the value specified in __RES.  */
@@ -131,8 +141,19 @@ extern int mtx_lock (mtx_t *__mutex);
 /* Block the current thread until the mutex pointed by __MUTEX is unlocked
    or time pointed by __TIME_POINT is reached.  In case the mutex is unlock,
    the current thread will not be blocked.  */
+#ifndef __USE_TIME_BITS64
 extern int mtx_timedlock (mtx_t *__restrict __mutex,
 			  const struct timespec *__restrict __time_point);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (mtx_timedlock, (mtx_t *__restrict __mutex,
+                                       const struct timespec *__restrict
+                                       __time_point),
+                       __mtx_timedlock64);
+# else
+#  define mtx_timedlock __mtx_timedlock64
+# endif
+#endif
 
 /* Try to lock the mutex pointed by __MUTEX without blocking.  If the mutex
    is free the current threads takes control of it, otherwise it returns
@@ -171,9 +192,21 @@ extern int cnd_wait (cnd_t *__cond, mtx_t *__mutex);
 /* Block current thread on the condition variable until condition variable
    pointed by __COND is signaled or time pointed by __TIME_POINT is
    reached.  */
+#ifndef __USE_TIME_BITS64
 extern int cnd_timedwait (cnd_t *__restrict __cond,
 			  mtx_t *__restrict __mutex,
 			  const struct timespec *__restrict __time_point);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (cnd_timedwait, (cnd_t *__restrict __cond,
+                                       mtx_t *__restrict __mutex,
+                                       const struct timespec *__restrict
+                                       __time_point),
+                       __cnd_timedwait64);
+# else
+#  define cnd_timedwait __cnd_timedwait64
+# endif
+#endif
 
 /* Destroy condition variable pointed by __cond and free all of its
    resources.  */
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index 257ccbd3b4..45d31a46bc 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -1,3 +1,4 @@
+%include <time64-compat.h>
 libc {
   GLIBC_2.0 {
     # functions used in inline functions or macros
@@ -168,6 +169,75 @@ libc {
     getdents64; gettid; tgkill;
   }
   GLIBC_2.32 {
+  }
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    # io
+    __ppoll64;
+    __utime64;
+    __stat64_time64;
+    __lstat64_time64;
+    __fstat64_time64;
+    __fstatat64_time64;
+    # misc
+    __futimes64;
+    __futimesat64;
+    __lutimes64;
+    __select64;
+    __utimes64;
+    # posix
+    __nanosleep64;
+    __pselec64;
+    __wait3_time64;
+    __wait4_time64;
+    # nptl
+    __thrd_sleep64;
+    # resouces
+    __getrusage64;
+    # signal
+    __sigtimedwait64;
+    # sysvipc
+    __msgctl64;
+    __semctl64;
+    __semtimedop64;
+    __shmctl64;
+    # time
+    ___adjtimex64;
+    __adjtime64;
+    __clock_adjtime64;
+    __clock_getres64;
+    __clock_gettime64;
+    __clock_nanosleep_time64;
+    __clock_settime64;
+    __ctime64;
+    __ctime64_r;
+    __difftime64;
+    __futimens64;
+    __localtime64;
+    __localtime64_r;
+    __getitimer64;
+    __gettimeofday64;
+    __gmtime64;
+    __gmtime64_r;
+    __mktime64;
+    __nanosleep64;
+    __setitimer64;
+    __settimeofday64;
+    __time64;
+    __timegm64;
+    __timespec_get64;
+    __utimensat64;
+     __utimes64;
+    # misc
+    __ntp_gettime64;
+    __ntp_gettimex64;
+    __pselect64;
+    __recvmmsg64;
+    __sched_rr_get_interval64;
+    __timerfd_gettime64;
+    __timerfd_settime64;
+%endif
   }
   GLIBC_PRIVATE {
     # functions used in other libraries
@@ -182,3 +252,46 @@ libc {
     __netlink_assert_response;
   }
 }
+
+libpthread {
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    __cnd_timedwait64;
+    __mtx_timedlock64;
+    __pthread_clockjoin_np64;
+    __pthread_cond_timedwait64;
+    __pthread_cond_clockwait64;
+    __pthread_mutex_timedlock64;
+    __pthread_mutex_clocklock64;
+    __pthread_rwlock_clockrdlock64;
+    __pthread_rwlock_clockwrlock64;
+    __pthread_rwlock_timedrdlock64;
+    __pthread_rwlock_timedwrlock64;
+    __pthread_timedjoin_np64;
+    __sem_clockwait64;
+    __sem_timedwait64;
+%endif
+  }
+}
+
+librt {
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    __aio_suspend_time64;
+    __mq_timedsend_time64;
+    __mq_timedreceive_time64;
+    __timer_gettime64;
+    __timer_settime64;
+%endif
+  }
+}
+
+libanl {
+%ifdef TIME64_NON_DEFAULT
+  GLIBC_2.34 {
+    __gai_suspend_time64;
+  }
+%endif
+}
diff --git a/sysdeps/unix/sysv/linux/arm/be/libanl.abilist b/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 8111b49085..d63e0dee75 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -155,7 +155,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index b6c26c7a50..3fe358cc31 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -33,6 +33,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libanl.abilist b/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 4dba1f2f46..1a0f0d1312 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -152,7 +152,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index b6c26c7a50..3fe358cc31 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -33,6 +33,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/arm/time64-compat.h b/sysdeps/unix/sysv/linux/arm/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/arm/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/bits/msq.h b/sysdeps/unix/sysv/linux/bits/msq.h
index 3313b69d78..7c9c479551 100644
--- a/sysdeps/unix/sysv/linux/bits/msq.h
+++ b/sysdeps/unix/sysv/linux/bits/msq.h
@@ -26,6 +26,7 @@ typedef __syscall_ulong_t msgqnum_t;
 typedef __syscall_ulong_t msglen_t;
 
 #include <bits/types/struct_msqid_ds.h>
+#include <bits/types/struct_msqid64_ds.h>
 
 /* Define options for message queue functions.  */
 #define MSG_NOERROR	010000	/* no error if message is too big */
diff --git a/sysdeps/unix/sysv/linux/bits/sem.h b/sysdeps/unix/sysv/linux/bits/sem.h
index ad13287e66..776524b876 100644
--- a/sysdeps/unix/sysv/linux/bits/sem.h
+++ b/sysdeps/unix/sysv/linux/bits/sem.h
@@ -22,6 +22,7 @@
 #include <sys/types.h>
 #include <bits/timesize.h>
 #include <bits/types/struct_semid_ds.h>
+#include <bits/types/struct_semid64_ds.h>
 
 /* Flags for `semop'.  */
 #define SEM_UNDO	0x1000		/* undo the operation on exit */
diff --git a/sysdeps/unix/sysv/linux/bits/shm.h b/sysdeps/unix/sysv/linux/bits/shm.h
index a50c79d7be..454fc3f366 100644
--- a/sysdeps/unix/sysv/linux/bits/shm.h
+++ b/sysdeps/unix/sysv/linux/bits/shm.h
@@ -43,6 +43,7 @@ __BEGIN_DECLS
 typedef __syscall_ulong_t shmatt_t;
 
 #include <bits/types/struct_shmid_ds.h>
+#include <bits/types/struct_shmid64_ds.h>
 
 #ifdef __USE_MISC
 
diff --git a/sysdeps/unix/sysv/linux/bits/time.h b/sysdeps/unix/sysv/linux/bits/time.h
index ee5a8b3ef4..d0c98a7864 100644
--- a/sysdeps/unix/sysv/linux/bits/time.h
+++ b/sysdeps/unix/sysv/linux/bits/time.h
@@ -77,6 +77,16 @@ __BEGIN_DECLS
 /* Tune a POSIX clock.  */
 extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (clock_adjtime, (__clockid_t __clock_id,
+                                           struct timex *__utx),
+                           __clock_adjtime64);
+# else
+# define clock_adjtime __clock_adjtime64
+# endif
+#endif
+
 __END_DECLS
 #endif /* use GNU */
 
diff --git a/sysdeps/unix/sysv/linux/csky/libanl.abilist b/sysdeps/unix/sysv/linux/csky/libanl.abilist
index 416a6f8ddb..01f2e6cbf0 100644
--- a/sysdeps/unix/sysv/linux/csky/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.29 gai_cancel F
 GLIBC_2.29 gai_error F
 GLIBC_2.29 gai_suspend F
 GLIBC_2.29 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index a5ff3d90ca..120a3fc1ce 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -2115,7 +2115,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index 6ce59276a7..51d5822091 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -211,3 +211,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index c6690ef7c1..b60deca65a 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.29 timer_delete F
 GLIBC_2.29 timer_getoverrun F
 GLIBC_2.29 timer_gettime F
 GLIBC_2.29 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/csky/time64-compat.h b/sysdeps/unix/sysv/linux/csky/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/csky/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/features-time64.h b/sysdeps/unix/sysv/linux/features-time64.h
new file mode 100644
index 0000000000..c6a0a1874c
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/features-time64.h
@@ -0,0 +1,37 @@
+/* Features part to handle 64-bit time_t support.
+   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/>.  */
+
+/* We need to know the word size in order to check the time size.  */
+#include <bits/wordsize.h>
+#include <bits/timesize.h>
+
+#if defined _TIME_BITS
+# if _TIME_BITS == 64
+#  if ! defined (_FILE_OFFSET_BITS) || _FILE_OFFSET_BITS != 64
+#   error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64"
+#  elif __TIMESIZE == 32
+#   define __USE_TIME_BITS64	1
+#  endif
+# elif _TIME_BITS == 32
+#  if __TIMESIZE > 32
+#   error "_TIME_BITS=32 is not compatible with __TIMESIZE > 32"
+#  endif
+# else
+#  error Invalid _TIME_BITS value (can only be 32 or 64 bits)
+# endif
+#endif
diff --git a/sysdeps/unix/sysv/linux/hppa/libanl.abilist b/sysdeps/unix/sysv/linux/hppa/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/hppa/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 89a0f11166..77c7d2faf3 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2074,7 +2074,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index cabc5af858..0cdb30a3c1 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -218,6 +218,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/hppa/time64-compat.h b/sysdeps/unix/sysv/linux/hppa/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/hppa/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/i386/Makefile b/sysdeps/unix/sysv/linux/i386/Makefile
index da716e2c1b..8d5efb4f65 100644
--- a/sysdeps/unix/sysv/linux/i386/Makefile
+++ b/sysdeps/unix/sysv/linux/i386/Makefile
@@ -1,6 +1,8 @@
 # The default ABI is 32.
 default-abi := 32
 
+extra-version := Versions-y2038
+
 ifeq ($(subdir),misc)
 sysdep_routines += ioperm iopl vm86
 
diff --git a/sysdeps/unix/sysv/linux/i386/libanl.abilist b/sysdeps/unix/sysv/linux/i386/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/i386/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index a7c408d18c..7d1a9691e7 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2241,7 +2241,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index 18177307c8..b3a825d60e 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -226,6 +226,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/i386/time64-compat.h b/sysdeps/unix/sysv/linux/i386/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/include/sys/msg.h b/sysdeps/unix/sysv/linux/include/sys/msg.h
index 522903f818..c460be0dc9 100644
--- a/sysdeps/unix/sysv/linux/include/sys/msg.h
+++ b/sysdeps/unix/sysv/linux/include/sys/msg.h
@@ -7,8 +7,6 @@ extern ssize_t __libc_msgrcv (int msqid, void *msgp, size_t msgsz,
 extern int __libc_msgsnd (int msqid, const void *msgp, size_t msgsz,
 			  int msgflg);
 
-# include <bits/types/struct_msqid64_ds.h>
-
 # if __TIMESIZE == 64
 #  define __msgctl64 __msgctl
 # else
diff --git a/sysdeps/unix/sysv/linux/include/sys/shm.h b/sysdeps/unix/sysv/linux/include/sys/shm.h
index 530a1cdfc9..85177a632d 100644
--- a/sysdeps/unix/sysv/linux/include/sys/shm.h
+++ b/sysdeps/unix/sysv/linux/include/sys/shm.h
@@ -3,8 +3,6 @@
 
 #ifndef _ISOMAC
 
-# include <bits/types/struct_shmid64_ds.h>
-
 # if __TIMESIZE == 64
 #  define __shmctl64 __shmctl
 # else
diff --git a/sysdeps/unix/sysv/linux/include/sys/timex.h b/sysdeps/unix/sysv/linux/include/sys/timex.h
index e136ed172e..c554248ed9 100644
--- a/sysdeps/unix/sysv/linux/include/sys/timex.h
+++ b/sysdeps/unix/sysv/linux/include/sys/timex.h
@@ -23,10 +23,12 @@
 
 # ifndef _ISOMAC
 
+extern int __adjtimex (struct timex *__ntx);
 libc_hidden_proto (__adjtimex)
 
 #  include <time.h>
 #  include <struct___timeval64.h>
+
 /* Local definition of 64 bit time supporting timex struct */
 #  if __TIMESIZE == 64
 #   define __timex64 timex
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index e1171a34aa..da00a3d3c3 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -156,7 +156,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index b6c26c7a50..3fe358cc31 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -33,6 +33,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index a521506506..3e0f00210f 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2186,7 +2186,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index 18177307c8..b3a825d60e 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -226,6 +226,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/m68k/time64-compat.h b/sysdeps/unix/sysv/linux/m68k/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/m68k/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
index 67c7554803..c06e33a1cf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.18 gai_cancel F
 GLIBC_2.18 gai_error F
 GLIBC_2.18 gai_suspend F
 GLIBC_2.18 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index aba642460c..9bed39a8e8 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2166,7 +2166,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index 60397187b6..855c469c63 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -218,3 +218,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index 889dfbc0ee..1b8fc10087 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timer_gettime F
 GLIBC_2.18 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
index 67c7554803..c06e33a1cf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.18 gai_cancel F
 GLIBC_2.18 gai_error F
 GLIBC_2.18 gai_suspend F
 GLIBC_2.18 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index d3d653d144..872321bbab 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2163,7 +2163,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index 60397187b6..855c469c63 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -218,3 +218,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 889dfbc0ee..1b8fc10087 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timer_gettime F
 GLIBC_2.18 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/time64-compat.h b/sysdeps/unix/sysv/linux/microblaze/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/microblaze/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index a4ce56c34f..77dcc8ab7d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2157,7 +2157,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index b35d7f19ca..887a32a376 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -227,6 +227,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index 1539c1cef9..c4dd28e3b2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 51fbf0b1e1..c41f85ce01 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2155,7 +2155,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h b/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 5642781479..4208f9df82 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2163,7 +2163,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
index b35d7f19ca..887a32a376 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
@@ -227,6 +227,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index 1539c1cef9..c4dd28e3b2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h b/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/nios2/libanl.abilist b/sysdeps/unix/sysv/linux/nios2/libanl.abilist
index 6ff9c2d94e..6b080bd075 100644
--- a/sysdeps/unix/sysv/linux/nios2/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.21 gai_cancel F
 GLIBC_2.21 gai_error F
 GLIBC_2.21 gai_suspend F
 GLIBC_2.21 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 848cb2e599..ff0bb57cb6 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2204,7 +2204,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 924ad6e451..18407317e6 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -218,3 +218,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index b4ae7a2dc2..2458614125 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.21 timer_delete F
 GLIBC_2.21 timer_getoverrun F
 GLIBC_2.21 timer_gettime F
 GLIBC_2.21 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/time64-compat.h b/sysdeps/unix/sysv/linux/nios2/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/nios2/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 93e83fa602..57f1fe012a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2213,7 +2213,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 13b41dafb6..711812931d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -228,6 +228,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index ec0b6d69b1..6c9fa9c098 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2246,7 +2246,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 7bc5c8866b..d357619c55 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2211,7 +2211,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 lastlog_read F
 GLIBC_2.34 lastlog_write F
 GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 0a60f1cca2..28db1e4b6d 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -228,6 +228,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h b/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/semctl.c b/sysdeps/unix/sysv/linux/semctl.c
index 1043b2b80d..bb2690d30f 100644
--- a/sysdeps/unix/sysv/linux/semctl.c
+++ b/sysdeps/unix/sysv/linux/semctl.c
@@ -21,7 +21,6 @@
 #include <ipc_priv.h>
 #include <sysdep.h>
 #include <shlib-compat.h>
-#include <bits/types/struct_semid64_ds.h>  /* For __semid64_ds.  */
 #include <linux/posix_types.h>             /* For __kernel_mode_t.  */
 
 /* The struct used to issue the syscall.  For architectures that assume
diff --git a/sysdeps/unix/sysv/linux/sh/be/libanl.abilist b/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 06143b0283..725952a763 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2081,7 +2081,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index cabc5af858..0cdb30a3c1 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -218,6 +218,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libanl.abilist b/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index eab2af349b..7f07b96287 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2078,7 +2078,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index cabc5af858..0cdb30a3c1 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -218,6 +218,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sh/time64-compat.h b/sysdeps/unix/sysv/linux/sh/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sh/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 4783a8fa97..3b7af990d4 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2202,7 +2202,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index 390b6384d0..b5f763d9fd 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -228,6 +228,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index 38f0aad791..fb2769e87b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -34,6 +34,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h b/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/sys/timerfd.h b/sysdeps/unix/sysv/linux/sys/timerfd.h
index 4ad64c2259..790b9d5be6 100644
--- a/sysdeps/unix/sysv/linux/sys/timerfd.h
+++ b/sysdeps/unix/sysv/linux/sys/timerfd.h
@@ -47,9 +47,31 @@ extern int timerfd_settime (int __ufd, int __flags,
 			    const struct itimerspec *__utmr,
 			    struct itimerspec *__otmr) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timerfd_settime,
+                           (int __ufd, int __flags,
+                            const struct itimerspec *__restrict __value,
+                            struct itimerspec *__restrict __ovalue),
+                           __timerfd_settime64);
+# else
+# define timerfd_settime __timerfd_settime64
+# endif
+#endif
+
 /* Return the next expiration time of UFD.  */
 extern int timerfd_gettime (int __ufd, struct itimerspec *__otmr) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timerfd_gettime, (int __ufd,
+                                             struct itimerspec *__otmr),
+                           __timerfd_gettime64);
+# else
+# define timerfd_gettime __timerfd_gettime64
+# endif
+#endif
+
 __END_DECLS
 
 #endif /* sys/timerfd.h */
diff --git a/sysdeps/unix/sysv/linux/sys/timex.h b/sysdeps/unix/sysv/linux/sys/timex.h
index 37931ff496..298f0ca6e7 100644
--- a/sysdeps/unix/sysv/linux/sys/timex.h
+++ b/sysdeps/unix/sysv/linux/sys/timex.h
@@ -54,17 +54,33 @@ struct ntptimeval
 
 __BEGIN_DECLS
 
-extern int __adjtimex (struct timex *__ntx) __THROW;
+#ifndef __USE_TIME_BITS64
 extern int adjtimex (struct timex *__ntx) __THROW;
 
-#ifdef __REDIRECT_NTH
+# ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv),
-			   ntp_gettimex);
+                           __ntp_gettime64);
+# else
+#  define ntp_gettime ntp_gettimex
+# endif
+extern int ntp_adjtime (struct timex *__tntx) __THROW;
 #else
-extern int ntp_gettimex (struct ntptimeval *__ntv) __THROW;
-# define ntp_gettime ntp_gettimex
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (adjtimex, (struct timex *__ntx),
+                           ___adjtimex64);
+extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv),
+                           __ntp_gettime64);
+extern int __REDIRECT_NTH (ntp_gettimex, (struct ntptimeval *__ntv),
+                           __ntp_gettimex64);
+extern int __REDIRECT_NTH (ntp_adjtime, (struct timex *__ntx),
+                           ___adjtimex64);
+# else
+#  define adjtimex ___adjtimex64
+#  define ntp_adjtime ___adjtimex64
+#  define ntp_gettime __ntp_gettime64
+#  define ntp_gettimex __ntp_gettimex64
+# endif
 #endif
-extern int ntp_adjtime (struct timex *__tntx) __THROW;
 
 __END_DECLS
 
diff --git a/sysdeps/unix/sysv/linux/time64-compat.h b/sysdeps/unix/sysv/linux/time64-compat.h
new file mode 100644
index 0000000000..e44b6b68e3
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/time64-compat.h
@@ -0,0 +1,3 @@
+/* Header included by Versions to generate the 64 bit time_t compat symbols.
+   Legacy ABIs with default 32 bit time support define TIME64_NON_DEFAULT to
+   generate the 64 bit symbols.  */
diff --git a/sysvipc/sys/msg.h b/sysvipc/sys/msg.h
index 9ddedf5e15..f31a43757d 100644
--- a/sysvipc/sys/msg.h
+++ b/sysvipc/sys/msg.h
@@ -58,7 +58,17 @@ struct msgbuf
 __BEGIN_DECLS
 
 /* Message queue control operation.  */
+#ifndef __USE_TIME_BITS64
 extern int msgctl (int __msqid, int __cmd, struct msqid_ds *__buf) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (msgctl,
+                           (int __msqid, int __cmd, struct msqid_ds *__buf),
+                           __msgctl64);
+# else
+#  define msgctl __msgctl64
+# endif
+#endif
 
 /* Get messages queue.  */
 extern int msgget (key_t __key, int __msgflg) __THROW;
diff --git a/sysvipc/sys/sem.h b/sysvipc/sys/sem.h
index 03b65dff21..4eb4c51bbe 100644
--- a/sysvipc/sys/sem.h
+++ b/sysvipc/sys/sem.h
@@ -48,7 +48,17 @@ struct sembuf
 __BEGIN_DECLS
 
 /* Semaphore control operation.  */
+#ifndef __USE_TIME_BITS64
 extern int semctl (int __semid, int __semnum, int __cmd, ...) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (semctl,
+                           (int __semid, int __semnum, int __cmd, ...),
+                           __semctl64);
+# else
+#  define semctl __semctl64
+# endif
+#endif
 
 /* Get semaphore.  */
 extern int semget (key_t __key, int __nsems, int __semflg) __THROW;
@@ -58,8 +68,19 @@ extern int semop (int __semid, struct sembuf *__sops, size_t __nsops) __THROW;
 
 #ifdef __USE_GNU
 /* Operate on semaphore with timeout.  */
+# ifndef __USE_TIME_BITS64
 extern int semtimedop (int __semid, struct sembuf *__sops, size_t __nsops,
 		       const struct timespec *__timeout) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (semtimedop, (int __semid, struct sembuf *__sops,
+                                        size_t __nsops,
+                                        const struct timespec *__timeout),
+                           __semtimedop64);
+#  else
+#   define semtimedop __semtimedop64
+#  endif
+# endif
 #endif
 
 __END_DECLS
diff --git a/sysvipc/sys/shm.h b/sysvipc/sys/shm.h
index 7506ba67bf..b09e0497e6 100644
--- a/sysvipc/sys/shm.h
+++ b/sysvipc/sys/shm.h
@@ -46,7 +46,17 @@ __BEGIN_DECLS
    facility.  The definition is found in XPG4.2.  */
 
 /* Shared memory control operation.  */
+#ifndef __USE_TIME_BITS64
 extern int shmctl (int __shmid, int __cmd, struct shmid_ds *__buf) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (shmctl,
+                           (int __shmid, int __cmd, struct shmid_ds *__buf),
+                           __shmctl64);
+# else
+#  define shmctl __shmctl64
+# endif
+#endif
 
 /* Get shared memory segment.  */
 extern int shmget (key_t __key, size_t __size, int __shmflg) __THROW;
diff --git a/time/sys/time.h b/time/sys/time.h
index 42f91f186b..d21411c0b4 100644
--- a/time/sys/time.h
+++ b/time/sys/time.h
@@ -63,10 +63,21 @@ struct timezone
    use localtime etc. instead.
    This function itself is semi-obsolete;
    most callers should use time or clock_gettime instead. */
+#ifndef __USE_TIME_BITS64
 extern int gettimeofday (struct timeval *__restrict __tv,
 			 void *__restrict __tz) __THROW __nonnull ((1));
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (gettimeofday, (struct timeval *__restrict __tv,
+                                          void *__restrict __tz),
+                           __gettimeofday64) __nonnull ((1));
+# else
+#  define gettimeofday __gettimeofday64
+# endif
+#endif
 
 #ifdef __USE_MISC
+# ifndef __USE_TIME_BITS64
 /* Set the current time of day and timezone information.
    This call is restricted to the super-user.
    Setting the timezone in this way is obsolete, but we don't yet
@@ -82,6 +93,20 @@ extern int settimeofday (const struct timeval *__tv,
    This call is restricted to the super-user.  */
 extern int adjtime (const struct timeval *__delta,
 		    struct timeval *__olddelta) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (settimeofday, (const struct timeval *__tv,
+                                          const struct timezone *__tz),
+                           __settimeofday64);
+
+extern int __REDIRECT_NTH (adjtime, (const struct timeval *__delta,
+                                     struct timeval *__olddelta),
+                           __adjtime64);
+#  else
+#   define settimeofday __settimeofday64
+#   define adjtime __adjtime64
+#  endif
+# endif
 #endif
 
 
@@ -118,6 +143,7 @@ typedef enum __itimer_which __itimer_which_t;
 typedef int __itimer_which_t;
 #endif
 
+#ifndef __USE_TIME_BITS64
 /* Set *VALUE to the current setting of timer WHICH.
    Return 0 on success, -1 on errors.  */
 extern int getitimer (__itimer_which_t __which,
@@ -136,21 +162,66 @@ extern int setitimer (__itimer_which_t __which,
 extern int utimes (const char *__file, const struct timeval __tvp[2])
      __THROW __nonnull ((1));
 
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (getitimer, (__itimer_which_t __which,
+                                       struct itimerval *__value),
+                           __getitimer64);
+
+extern int __REDIRECT_NTH (setitimer, (__itimer_which_t __which,
+                                       const struct itimerval *__restrict __new,
+                                       struct itimerval *__restrict __old),
+                           __setitimer64);
+
+extern int __REDIRECT_NTH (utimes, (const char *__file,
+                                    const struct timeval __tvp[2]),
+                           __utimes64) __nonnull ((1));
+# else
+#  define getitimer __getitimer64
+#  define setitimer __setitimer64
+#  define utimes __utimes64
+# endif
+#endif
+
 #ifdef __USE_MISC
+# ifndef __USE_TIME_BITS64
 /* Same as `utimes', but does not follow symbolic links.  */
 extern int lutimes (const char *__file, const struct timeval __tvp[2])
      __THROW __nonnull ((1));
 
 /* Same as `utimes', but takes an open file descriptor instead of a name.  */
 extern int futimes (int __fd, const struct timeval __tvp[2]) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (lutimes, (const char *__file,
+                                     const struct timeval __tvp[2]),
+                           __lutimes64) __nonnull ((1));
+
+extern int __REDIRECT_NTH (futimes, (int __fd, const struct timeval __tvp[2]),
+                           __futimes64);
+#  else
+#   define lutimes __lutimes64
+#   define futimes __futimes64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
+# ifndef __USE_TIME_BITS64
 /* Change the access time of FILE relative to FD to TVP[0] and the
    modification time of FILE to TVP[1].  If TVP is a null pointer, use
    the current time instead.  Returns 0 on success, -1 on errors.  */
 extern int futimesat (int __fd, const char *__file,
 		      const struct timeval __tvp[2]) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (futimesat, (int __fd, const char *__file,
+                                       const struct timeval __tvp[2]),
+                           __futimesat64);
+#  else
+#   define futimesat __futimesat64
+#  endif
+# endif
 #endif
 
 
diff --git a/time/time.h b/time/time.h
index 3bf206be0b..91b81cb1c6 100644
--- a/time/time.h
+++ b/time/time.h
@@ -71,6 +71,7 @@ __BEGIN_DECLS
    The result / CLOCKS_PER_SEC is program time in seconds.  */
 extern clock_t clock (void) __THROW;
 
+#ifndef __USE_TIME_BITS64
 /* Return the current time and put it in *TIMER if TIMER is not NULL.  */
 extern time_t time (time_t *__timer) __THROW;
 
@@ -80,7 +81,18 @@ extern double difftime (time_t __time1, time_t __time0)
 
 /* Return the `time_t' representation of TP and normalize TP.  */
 extern time_t mktime (struct tm *__tp) __THROW;
-
+#else
+# ifdef __REDIRECT_NTH
+extern time_t __REDIRECT_NTH (time, (time_t *__timer), __time64);
+extern double __REDIRECT_NTH (difftime, (time_t __time1, time_t __time0),
+                              __difftime64) __attribute__ ((__const__));
+extern time_t __REDIRECT_NTH (mktime, (struct tm *__tp), __mktime64);
+# else
+#  define time __time64
+#  define difftime __difftime64
+#  define mktime __mktime64
+# endif
+#endif
 
 /* Format TP into S according to FORMAT.
    Write no more than MAXSIZE characters and return the number
@@ -114,6 +126,7 @@ extern char *strptime_l (const char *__restrict __s,
 #endif
 
 
+#ifndef __USE_TIME_BITS64
 /* Return the `struct tm' representation of *TIMER
    in Universal Coordinated Time (aka Greenwich Mean Time).  */
 extern struct tm *gmtime (const time_t *__timer) __THROW;
@@ -122,7 +135,20 @@ extern struct tm *gmtime (const time_t *__timer) __THROW;
    of *TIMER in the local timezone.  */
 extern struct tm *localtime (const time_t *__timer) __THROW;
 
+#else
+# ifdef __REDIRECT_NTH
+extern struct tm*__REDIRECT_NTH (gmtime, (const time_t *__timer), __gmtime64);
+extern struct tm *__REDIRECT_NTH (localtime, (const time_t *__timer),
+				  __localtime64);
+# else
+#  define gmtime __gmtime64
+#  define localtime __localtime64
+# endif
+#endif
+
+
 #if defined __USE_POSIX || __GLIBC_USE (ISOC2X)
+# ifndef __USE_TIME_BITS64
 /* Return the `struct tm' representation of *TIMER in UTC,
    using *TP to store the result.  */
 extern struct tm *gmtime_r (const time_t *__restrict __timer,
@@ -132,6 +158,20 @@ extern struct tm *gmtime_r (const time_t *__restrict __timer,
    using *TP to store the result.  */
 extern struct tm *localtime_r (const time_t *__restrict __timer,
 			       struct tm *__restrict __tp) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern struct tm*__REDIRECT_NTH (gmtime_r, (const time_t *__restrict __timer,
+                                            struct tm *__restrict __tp),
+                                 __gmtime64_r);
+
+extern struct tm*__REDIRECT_NTH (localtime_r, (const time_t *__restrict __t,
+                                               struct tm *__restrict __tp),
+                                 __localtime64_r);
+#  else
+#   define gmtime_r __gmtime64_r
+#   define localtime_r __localtime_r
+#  endif
+# endif
 #endif	/* POSIX || C2X */
 
 /* Return a string of the form "Day Mon dd hh:mm:ss yyyy\n"
@@ -139,7 +179,15 @@ extern struct tm *localtime_r (const time_t *__restrict __timer,
 extern char *asctime (const struct tm *__tp) __THROW;
 
 /* Equivalent to `asctime (localtime (timer))'.  */
+#ifndef __USE_TIME_BITS64
 extern char *ctime (const time_t *__timer) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern char *__REDIRECT_NTH (ctime, (const time_t *__timer), __ctime64);
+# else
+#  define ctime __ctime64
+# endif
+#endif
 
 #if defined __USE_POSIX || __GLIBC_USE (ISOC2X)
 /* Reentrant versions of the above functions.  */
@@ -150,8 +198,18 @@ extern char *asctime_r (const struct tm *__restrict __tp,
 			char *__restrict __buf) __THROW;
 
 /* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'.  */
+#ifndef __USE_TIME_BITS64
 extern char *ctime_r (const time_t *__restrict __timer,
 		      char *__restrict __buf) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern char *__REDIRECT_NTH (ctime_r, (const time_t *__restrict __timer,
+                                       char *__restrict __buf), __ctime64_r);
+# else
+#  define ctime_r __ctime64_r
+# endif
+#endif
+
 #endif	/* POSIX || C2X */
 
 
@@ -186,11 +244,19 @@ extern long int timezone;
 /* Miscellaneous functions many Unices inherited from the public domain
    localtime package.  These are included only for compatibility.  */
 
+#ifndef __USE_TIME_BITS64
 /* Like `mktime', but for TP represents Universal Time, not local time.  */
 extern time_t timegm (struct tm *__tp) __THROW;
-
 /* Another name for `mktime'.  */
 extern time_t timelocal (struct tm *__tp) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern time_t __REDIRECT_NTH (timegm, (struct tm *__tp), __timegm64);
+extern time_t __REDIRECT_NTH (timelocal, (struct tm *__tp), __mktime64);
+# else
+#  define timegm __timegm64
+# endif
+#endif
 
 /* Return the number of days in YEAR.  */
 extern int dysize (int __year) __THROW  __attribute__ ((__const__));
@@ -198,6 +264,7 @@ extern int dysize (int __year) __THROW  __attribute__ ((__const__));
 
 
 #ifdef __USE_POSIX199309
+# ifndef __USE_TIME_BITS64
 /* Pause execution for a number of nanoseconds.
 
    This function is a cancellation point and therefore not marked with
@@ -205,7 +272,6 @@ extern int dysize (int __year) __THROW  __attribute__ ((__const__));
 extern int nanosleep (const struct timespec *__requested_time,
 		      struct timespec *__remaining);
 
-
 /* Get resolution of clock CLOCK_ID.  */
 extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __THROW;
 
@@ -215,15 +281,46 @@ extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW;
 /* Set clock CLOCK_ID to value TP.  */
 extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp)
      __THROW;
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (nanosleep, (const struct timespec *__requested_time,
+                                   struct timespec *__remaining),
+                       __nanosleep64);
+extern int __REDIRECT_NTH (clock_getres, (clockid_t __clock_id,
+                                          struct timespec *__res),
+                           __clock_getres64);
+extern int __REDIRECT_NTH (clock_gettime, (clockid_t __clock_id, struct
+                                           timespec *__tp), __clock_gettime64);
+extern int __REDIRECT_NTH (clock_settime, (clockid_t __clock_id, const struct
+                                           timespec *__tp), __clock_settime64);
+#  else
+#   define nanosleep __nanosleep64
+#   define clock_getres __clock_getres64
+#   define clock_gettime __clock_gettime64
+#   define clock_settime __clock_settime64
+#  endif
+# endif
+
 
 # ifdef __USE_XOPEN2K
 /* High-resolution sleep with the specified clock.
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+#  ifndef __USE_TIME_BITS64
 extern int clock_nanosleep (clockid_t __clock_id, int __flags,
 			    const struct timespec *__req,
 			    struct timespec *__rem);
+#  else
+#   ifdef __REDIRECT
+extern int __REDIRECT (clock_nanosleep, (clockid_t __clock_id, int __flags,
+                                         const struct timespec *__req,
+                                         struct timespec *__rem),
+                       __clock_nanosleep_time64);
+#   else
+#    define clock_nanosleep __clock_nanosleep_time64
+#   endif
+#  endif
 
 /* Return clock ID for CPU-time clock.  */
 extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __THROW;
@@ -239,6 +336,7 @@ extern int timer_create (clockid_t __clock_id,
 extern int timer_delete (timer_t __timerid) __THROW;
 
 /* Set timer TIMERID to VALUE, returning old value in OVALUE.  */
+# ifndef __USE_TIME_BITS64
 extern int timer_settime (timer_t __timerid, int __flags,
 			  const struct itimerspec *__restrict __value,
 			  struct itimerspec *__restrict __ovalue) __THROW;
@@ -246,6 +344,21 @@ extern int timer_settime (timer_t __timerid, int __flags,
 /* Get current value of timer TIMERID and store it in VALUE.  */
 extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
      __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (timer_settime, (timer_t __timerid, int __flags,
+     const struct itimerspec *__restrict __value,
+     struct itimerspec *__restrict __ovalue),
+                          __timer_settime64);
+
+extern int __REDIRECT_NTH (timer_gettime, (timer_t __timerid,
+                                           struct itimerspec *__value),
+                           __timer_gettime64);
+#  else
+#   define timer_settime __timer_settime64
+#   define timer_gettime __timer_gettime64
+#  endif
+# endif
 
 /* Get expiration overrun for timer TIMERID.  */
 extern int timer_getoverrun (timer_t __timerid) __THROW;
@@ -253,9 +366,18 @@ extern int timer_getoverrun (timer_t __timerid) __THROW;
 
 
 #ifdef __USE_ISOC11
+# ifndef __USE_TIME_BITS64
 /* Set TS to calendar time based in time base BASE.  */
 extern int timespec_get (struct timespec *__ts, int __base)
      __THROW __nonnull ((1));
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (timespec_get, (struct timespec *__ts, int __base),
+                           __timespec_get64) __nonnull ((1));
+#  else
+#   define timespec_get __timespec_get64
+#  endif
+# endif
 #endif


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [glibc/azanella/y2038] y2038: Add support for 64 bit time on legacy ABIs
@ 2021-03-02 12:34 Adhemerval Zanella
  0 siblings, 0 replies; 10+ messages in thread
From: Adhemerval Zanella @ 2021-03-02 12:34 UTC (permalink / raw)
  To: glibc-cvs

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=b5d027641201b15ca32148367239fe12648045b9

commit b5d027641201b15ca32148367239fe12648045b9
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Wed Feb 17 13:35:19 2021 -0300

    y2038: Add support for 64 bit time on legacy ABIs
    
    A new build flag, _TIME_BITS, enables the usage of the newer 64 bit
    time symbols for legacy ABI (where 32 bit time_t is default).  The 64
    bit time support is only enabled if LFS (_FILE_OFFSET_BITS=64) is
    also used.
    
    Different than LFS support, the y2038 symbols are added only for the
    required ABIs (armhf, csky, hppa, i386, m68k, microblaze, mips32,
    mips64-n32, nios2, powerpc32, sparc32, s390-32, and sh).  The ABIs with
    64 bit time support are unchanged, both for symbol and types
    redirection.
    
    On Linux apropoer 64 bit time support requires a minimum of kernel
    version v5.1.  Otherwise, the 32 bit fallbacks are used and might
    results in error with overflow return code (EOVERFLOW).
    
    The i686-gnu does not yet support 64 bit time, and trying to build
    it using -D_TIME_BITS=64 results in an error.
    
    This patch also converts following implemetations to support 64 bit
    time:
    
      * libc:
        - adjtimex
        - adjtime
        - clock_adjtime
        - clock_getres
        - clock_gettime
        - clock_nanosleep
        - clock_settime
        - ctime
        - ctime_r
        - difftime
        - futimens
        - futimes
        - futimesat
        - getitimer
        - getrusage
        - gettimeofday
        - gmtime
        - gmtime_r
        - localtime
        - localtime_r
        - lutimes
        - mktime
        - msgctl
        - nanosleep
        - ntp_gettime
        - ntp_gettimex
        - ppoll
        - pselect
        - recvmmsg
        - sched_rr_get_interval
        - select
        - semctl
        - semtimedop
        - setitimer
        - settimeofday
        - shmctl
        - sigtimedwait
        - thrd_sleep
        - time
        - timegm
        - timelocal (alias to mktime)
        - timerfd_gettime
        - timerfd_settime
        - timespec_get
        - utime
        - utimensat
        - utimes
        - wait3
        - wait4
    
      * libpthread:
        - mtx_timedlock
        - pthread_clockjoin_np
        - pthread_cond_clockwait
        - pthread_cond_timedwait
        - pthread_mutex_clocklock
        - pthread_mutex_timedlock
        - pthread_rwlock_clockrdlock
        - pthread_rwlock_clockwrlock
        - pthread_rwlock_timedrdlock
        - pthread_rwlock_timedwrlock
        - pthread_timedjoin_np
        - sem_clockwait
        - sem_timedwait
    
      * librt:
        - aio_suspend
        - mq_timedreceive
        - mq_timedsend
        - timer_gettime
        - timer_settime
    
      * libanl:
        - gai_suspend

Diff:
---
 Makefile                                           |   2 +-
 NEWS                                               |   4 +
 include/features-time64.h                          |   1 +
 include/features.h                                 |   2 +
 io/sys/poll.h                                      |  11 ++
 io/sys/stat.h                                      |  78 +++++++++++--
 io/utime.h                                         |  11 ++
 manual/creature.texi                               |  44 +++++++
 misc/sys/select.h                                  |  27 +++++
 posix/sched.h                                      |  11 +-
 posix/sys/wait.h                                   |  20 ++++
 resolv/netdb.h                                     |  11 ++
 resource/sys/resource.h                            |  10 ++
 rt/aio.h                                           |  15 ++-
 rt/mqueue.h                                        |  22 ++++
 signal/signal.h                                    |  13 +++
 socket/sys/socket.h                                |  11 ++
 sysdeps/generic/features-time64.h                  |  19 +++
 sysdeps/nptl/pthread.h                             | 119 +++++++++++++++++++
 sysdeps/pthread/semaphore.h                        |  25 ++++
 sysdeps/pthread/threads.h                          |  33 ++++++
 sysdeps/unix/sysv/linux/Versions                   | 113 ++++++++++++++++++
 sysdeps/unix/sysv/linux/arm/be/libanl.abilist      |   1 +
 sysdeps/unix/sysv/linux/arm/be/libc.abilist        |  52 +++++++++
 sysdeps/unix/sysv/linux/arm/be/libpthread.abilist  |  14 +++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist       |   5 +
 sysdeps/unix/sysv/linux/arm/le/libanl.abilist      |   1 +
 sysdeps/unix/sysv/linux/arm/le/libc.abilist        |  52 +++++++++
 sysdeps/unix/sysv/linux/arm/le/libpthread.abilist  |  14 +++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist       |   5 +
 sysdeps/unix/sysv/linux/arm/time64-compat.h        |   2 +
 sysdeps/unix/sysv/linux/bits/msq.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/sem.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/shm.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/time.h                |  10 ++
 sysdeps/unix/sysv/linux/csky/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/csky/libc.abilist          |  52 +++++++++
 sysdeps/unix/sysv/linux/csky/libpthread.abilist    |  14 +++
 sysdeps/unix/sysv/linux/csky/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/csky/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/features-time64.h          |  37 ++++++
 sysdeps/unix/sysv/linux/hppa/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/hppa/libc.abilist          |  52 +++++++++
 sysdeps/unix/sysv/linux/hppa/libpthread.abilist    |  14 +++
 sysdeps/unix/sysv/linux/hppa/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/hppa/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/i386/Makefile              |   2 +
 sysdeps/unix/sysv/linux/i386/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/i386/libc.abilist          |  52 +++++++++
 sysdeps/unix/sysv/linux/i386/libpthread.abilist    |  14 +++
 sysdeps/unix/sysv/linux/i386/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/i386/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/include/sys/msg.h          |   2 -
 sysdeps/unix/sysv/linux/include/sys/shm.h          |   2 -
 sysdeps/unix/sysv/linux/include/sys/timex.h        |   2 +
 .../unix/sysv/linux/m68k/coldfire/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist |  52 +++++++++
 .../sysv/linux/m68k/coldfire/libpthread.abilist    |  14 +++
 .../unix/sysv/linux/m68k/coldfire/librt.abilist    |   5 +
 sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist |   1 +
 sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist   |  52 +++++++++
 .../unix/sysv/linux/m68k/m680x0/libpthread.abilist |  14 +++
 sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist  |   5 +
 sysdeps/unix/sysv/linux/m68k/time64-compat.h       |   2 +
 .../unix/sysv/linux/microblaze/be/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/microblaze/be/libc.abilist |  52 +++++++++
 .../sysv/linux/microblaze/be/libpthread.abilist    |  14 +++
 .../unix/sysv/linux/microblaze/be/librt.abilist    |   5 +
 .../unix/sysv/linux/microblaze/le/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/microblaze/le/libc.abilist |  52 +++++++++
 .../sysv/linux/microblaze/le/libpthread.abilist    |  14 +++
 .../unix/sysv/linux/microblaze/le/librt.abilist    |   5 +
 sysdeps/unix/sysv/linux/microblaze/time64-compat.h |   2 +
 .../unix/sysv/linux/mips/mips32/fpu/libc.abilist   |  52 +++++++++
 sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist |   1 +
 .../unix/sysv/linux/mips/mips32/libpthread.abilist |  14 +++
 sysdeps/unix/sysv/linux/mips/mips32/librt.abilist  |   5 +
 .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist |  52 +++++++++
 .../unix/sysv/linux/mips/mips32/time64-compat.h    |   2 +
 .../unix/sysv/linux/mips/mips64/n32/libanl.abilist |   1 +
 .../unix/sysv/linux/mips/mips64/n32/libc.abilist   |  52 +++++++++
 .../sysv/linux/mips/mips64/n32/libpthread.abilist  |  14 +++
 .../unix/sysv/linux/mips/mips64/n32/librt.abilist  |   5 +
 .../sysv/linux/mips/mips64/n32/time64-compat.h     |   2 +
 sysdeps/unix/sysv/linux/nios2/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/nios2/libc.abilist         |  52 +++++++++
 sysdeps/unix/sysv/linux/nios2/libpthread.abilist   |  14 +++
 sysdeps/unix/sysv/linux/nios2/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/nios2/time64-compat.h      |   2 +
 .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist  |  52 +++++++++
 .../sysv/linux/powerpc/powerpc32/libanl.abilist    |   1 +
 .../linux/powerpc/powerpc32/libpthread.abilist     |  14 +++
 .../sysv/linux/powerpc/powerpc32/librt.abilist     |   5 +
 .../linux/powerpc/powerpc32/nofpu/libc.abilist     |  52 +++++++++
 .../sysv/linux/powerpc/powerpc32/time64-compat.h   |   2 +
 .../unix/sysv/linux/s390/s390-32/libanl.abilist    |   1 +
 sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist  |  52 +++++++++
 .../sysv/linux/s390/s390-32/libpthread.abilist     |  14 +++
 sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist |   5 +
 .../unix/sysv/linux/s390/s390-32/time64-compat.h   |   2 +
 sysdeps/unix/sysv/linux/semctl.c                   |   1 -
 sysdeps/unix/sysv/linux/sh/be/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/sh/be/libc.abilist         |  52 +++++++++
 sysdeps/unix/sysv/linux/sh/be/libpthread.abilist   |  14 +++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/sh/le/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/sh/le/libc.abilist         |  52 +++++++++
 sysdeps/unix/sysv/linux/sh/le/libpthread.abilist   |  14 +++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/sh/time64-compat.h         |   2 +
 .../unix/sysv/linux/sparc/sparc32/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist |  52 +++++++++
 .../sysv/linux/sparc/sparc32/libpthread.abilist    |  14 +++
 .../unix/sysv/linux/sparc/sparc32/librt.abilist    |   5 +
 .../unix/sysv/linux/sparc/sparc32/time64-compat.h  |   2 +
 sysdeps/unix/sysv/linux/sys/timerfd.h              |  22 ++++
 sysdeps/unix/sysv/linux/sys/timex.h                |  28 ++++-
 sysdeps/unix/sysv/linux/time64-compat.h            |   3 +
 sysvipc/sys/msg.h                                  |  10 ++
 sysvipc/sys/sem.h                                  |  21 ++++
 sysvipc/sys/shm.h                                  |  10 ++
 time/sys/time.h                                    |  71 ++++++++++++
 time/time.h                                        | 128 ++++++++++++++++++++-
 123 files changed, 2279 insertions(+), 29 deletions(-)

diff --git a/Makefile b/Makefile
index 71c7d8b5ec..2fd88294f5 100644
--- a/Makefile
+++ b/Makefile
@@ -68,7 +68,7 @@ endif # $(AUTOCONF) = no
 		   subdir_objs subdir_stubs subdir_testclean		\
 		   $(addprefix install-, no-libc.a bin lib data headers others)
 \f
-headers := limits.h values.h features.h gnu-versions.h \
+headers := limits.h values.h features.h features-time64.h gnu-versions.h \
 	   bits/xopen_lim.h gnu/libc-version.h stdc-predef.h \
 	   bits/libc-header-start.h
 
diff --git a/NEWS b/NEWS
index 37ba6ac0d0..7173d333cc 100644
--- a/NEWS
+++ b/NEWS
@@ -14,6 +14,10 @@ Major new features:
   constant on Linux.  MINSIGSTKSZ is redefined to sysconf(_SC_MINSIGSTKSZ)
   and SIGSTKSZ is redefined to sysconf (_SC_SIGSTKSZ).
 
+* Add support for 64 bit time_t support for ABIs with defaults to 32 bit
+  time_t.  This is enabled with the _TIME_BITS flag set to 64 and it
+  is support on Linux with a minimum version of 5.1.
+
 Deprecated and removed features, and other changes affecting compatibility:
 
   [Add deprecations, removals and changes affecting compatibility here]
diff --git a/include/features-time64.h b/include/features-time64.h
new file mode 100644
index 0000000000..06115b7c86
--- /dev/null
+++ b/include/features-time64.h
@@ -0,0 +1 @@
+#include_next <features-time64.h>
diff --git a/include/features.h b/include/features.h
index eb97470afa..9d39e11345 100644
--- a/include/features.h
+++ b/include/features.h
@@ -387,6 +387,8 @@
 # define __USE_FILE_OFFSET64	1
 #endif
 
+#include <features-time64.h>
+
 #if defined _DEFAULT_SOURCE
 # define __USE_MISC	1
 #endif
diff --git a/io/sys/poll.h b/io/sys/poll.h
index 2431dd1e14..5dfb721fe5 100644
--- a/io/sys/poll.h
+++ b/io/sys/poll.h
@@ -63,6 +63,17 @@ extern int poll (struct pollfd *__fds, nfds_t __nfds, int __timeout);
 extern int ppoll (struct pollfd *__fds, nfds_t __nfds,
 		  const struct timespec *__timeout,
 		  const __sigset_t *__ss);
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (ppoll, (struct pollfd *__fds, nfds_t __nfds,
+                               const struct timespec *__timeout,
+                               const __sigset_t *__ss),
+                       __ppoll64);
+#  else
+#  define ppoll __ppoll64
+#  endif
+# endif
 #endif
 
 __END_DECLS
diff --git a/io/sys/stat.h b/io/sys/stat.h
index 549375c087..b1729fda9f 100644
--- a/io/sys/stat.h
+++ b/io/sys/stat.h
@@ -209,15 +209,30 @@ extern int stat (const char *__restrict __file,
    that file descriptor FD is open on and put them in BUF.  */
 extern int fstat (int __fd, struct stat *__buf) __THROW __nonnull ((2));
 #else
-# ifdef __REDIRECT_NTH
+# ifdef __USE_TIME_BITS64
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
+				  struct stat *__restrict __buf),
+				  __stat64_time64)
+     __nonnull ((1, 2));
+extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf),
+				   __fstat64_time64)
+     __nonnull ((2));
+#  else
+#   define stat __stat64_time64
+#   define fstat __fstat64_time64
+#  endif
+# else
+#  ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
 				  struct stat *__restrict __buf), stat64)
      __nonnull ((1, 2));
 extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf), fstat64)
      __nonnull ((2));
-# else
-#  define stat stat64
-#  define fstat fstat64
+#  else
+#   define stat stat64
+#   define fstat fstat64
+#  endif
 # endif
 #endif
 #ifdef __USE_LARGEFILE64
@@ -235,13 +250,24 @@ extern int fstatat (int __fd, const char *__restrict __file,
 		    struct stat *__restrict __buf, int __flag)
      __THROW __nonnull ((2, 3));
 # else
-#  ifdef __REDIRECT_NTH
+#  ifdef __USE_TIME_BITS64
+#   ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
 				     struct stat *__restrict __buf,
 				     int __flag),
-			   fstatat64) __nonnull ((2, 3));
+			   __fstatat64_time64) __nonnull ((2, 3));
+#   else
+#    define fstatat __fstatat64_time64
+#   endif
 #  else
-#   define fstatat fstatat64
+#   ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
+				     struct stat *__restrict __buf,
+				     int __flag),
+			   fstatat64) __nonnull ((2, 3));
+#   else
+#    define fstatat fstatat64
+#   endif
 #  endif
 # endif
 
@@ -259,13 +285,24 @@ extern int fstatat64 (int __fd, const char *__restrict __file,
 extern int lstat (const char *__restrict __file,
 		  struct stat *__restrict __buf) __THROW __nonnull ((1, 2));
 # else
-#  ifdef __REDIRECT_NTH
+#  ifdef __USE_TIME_BITS64
+#   ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (lstat,
 			   (const char *__restrict __file,
-			    struct stat *__restrict __buf), lstat64)
+			    struct stat *__restrict __buf), __lstat64_time64)
      __nonnull ((1, 2));
+#   else
+#    define lstat __lstat64_time64
+#   endif
 #  else
-#   define lstat lstat64
+#   ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (lstat,
+			   (const char *__restrict __file,
+			    struct stat *__restrict __buf), lstat64)
+     __nonnull ((1, 2));
+#   else
+#    define lstat lstat64
+#   endif
 #  endif
 # endif
 # ifdef __USE_LARGEFILE64
@@ -355,17 +392,38 @@ extern int mkfifoat (int __fd, const char *__path, __mode_t __mode)
 #endif
 \f
 #ifdef __USE_ATFILE
+# ifndef __USE_TIME_BITS64
 /* Set file access and modification times relative to directory file
    descriptor.  */
 extern int utimensat (int __fd, const char *__path,
 		      const struct timespec __times[2],
 		      int __flags)
      __THROW __nonnull ((2));
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (utimensat, (int fd, const char *__path,
+                                       const struct timespec __times[2],
+                                       int flags),
+                           __utimensat64) __nonnull ((2));
+#  else
+#   define utimensat __utimensat64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_XOPEN2K8
+# ifndef __USE_TIME_BITS64
 /* Set file access and modification times of the file associated with FD.  */
 extern int futimens (int __fd, const struct timespec __times[2]) __THROW;
+
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (futimens, (int fd, const struct timespec __times[2]),
+                           __futimens64);
+#  else
+#   define futimens __futimens64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
diff --git a/io/utime.h b/io/utime.h
index c7612d0838..1a645a3fff 100644
--- a/io/utime.h
+++ b/io/utime.h
@@ -46,10 +46,21 @@ struct utimbuf
 
 /* Set the access and modification times of FILE to those given in
    *FILE_TIMES.  If FILE_TIMES is NULL, set them to the current time.  */
+#ifndef __USE_TIME_BITS64
 extern int utime (const char *__file,
 		  const struct utimbuf *__file_times)
      __THROW __nonnull ((1));
 
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (utime, (const char *__file,
+                                   const struct utimbuf *__file_times),
+                           __utime64);
+# else
+#  define utime __utime64
+# endif
+#endif
+
 __END_DECLS
 
 #endif /* utime.h */
diff --git a/manual/creature.texi b/manual/creature.texi
index 5090735e4f..606b73d184 100644
--- a/manual/creature.texi
+++ b/manual/creature.texi
@@ -165,6 +165,50 @@ This macro was introduced as part of the Large File Support extension
 (LFS).
 @end defvr
 
+@defvr Macro _TIME_BITS
+This macro determines the bit size of @code{time_t} (and therefore the
+bit size of all @code{time_t} derived types and the prototypes of all
+related functions).  If @code{_TIME_BITS} is undefined, the bit size of
+@code{time_t} is architecture dependent.
+
+Possible values of @code{_TIME_BITS}:
+@enumerate
+@item
+@code{_TIME_BITS=64} and port from the outset uses 64-bit
+@code{time_t} and word size equals to @w{64 bits} (e.g. x86_64) - no
+action
+
+@item
+@code{_TIME_BITS=32} and port from the outset uses 32-bit
+@code{time_t} and word size equals to @w{64 bits} (e.g. ARM) - no
+action
+
+@item
+@code{_TIME_BITS=64} and port from the outset uses 64-bit
+@code{time_t} and word size equals to @w{32 bits} (e.g. ARC, RV32)
+- no action
+
+@item
+@code{_TIME_BITS=64} and port from the outset uses 32-bit
+@code{time_t} and word size equals to @w{32 bits} (e.g. ARM)
+- the @code{time_t} is modified to be able to hold 64-bit time.
+
+@item
+For any other use case the compile-time error is emitted.
+@end enumerate
+
+The @code{_TIME_BITS} can be only used when @code{_FILE_OFFSET_BITS=64}
+is also defined.
+
+For the point @b{4} above, calls to proper syscalls depend on the
+Linux kernel version on which the system is running. For Linux kernel
+version above @b{5.1} syscalls supporting 64-bit time are used. Otherwise,
+a fallback code is used with legacy (i.e. 32-bit) syscalls.
+
+By using this macro certain ports gain support for 64-bit time and as
+a result become immune to Y2038 problem.
+@end defvr
+
 @defvr Macro _ISOC99_SOURCE
 @standards{GNU, (none)}
 If this macro is defined, features from ISO C99 are included.  Since
diff --git a/misc/sys/select.h b/misc/sys/select.h
index 188a7fe607..e9c0e8fc20 100644
--- a/misc/sys/select.h
+++ b/misc/sys/select.h
@@ -98,10 +98,23 @@ __BEGIN_DECLS
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+#ifndef __USE_TIME_BITS64
 extern int select (int __nfds, fd_set *__restrict __readfds,
 		   fd_set *__restrict __writefds,
 		   fd_set *__restrict __exceptfds,
 		   struct timeval *__restrict __timeout);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (select,
+                       (int __nfds, fd_set *__restrict __readfds,
+                        fd_set *__restrict __writefds,
+                        fd_set *__restrict __exceptfds,
+                        struct timeval *__restrict __timeout),
+                       __select64);
+# else
+#  define select __select64
+# endif
+#endif
 
 #ifdef __USE_XOPEN2K
 /* Same as above only that the TIMEOUT value is given with higher
@@ -110,11 +123,25 @@ extern int select (int __nfds, fd_set *__restrict __readfds,
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int pselect (int __nfds, fd_set *__restrict __readfds,
 		    fd_set *__restrict __writefds,
 		    fd_set *__restrict __exceptfds,
 		    const struct timespec *__restrict __timeout,
 		    const __sigset_t *__restrict __sigmask);
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (pselect,
+                       (int __nfds, fd_set *__restrict __readfds,
+                        fd_set *__restrict __writefds,
+                        fd_set *__restrict __exceptfds,
+                        const struct timespec *__restrict __timeout,
+                        const __sigset_t *__restrict __sigmask),
+                       __pselect64);
+#  else
+#   define pselect __pselect64
+#  endif
+# endif
 #endif
 
 
diff --git a/posix/sched.h b/posix/sched.h
index d8ce08a3ea..7dd97a49b2 100644
--- a/posix/sched.h
+++ b/posix/sched.h
@@ -74,8 +74,17 @@ extern int sched_get_priority_max (int __algorithm) __THROW;
 extern int sched_get_priority_min (int __algorithm) __THROW;
 
 /* Get the SCHED_RR interval for the named process.  */
+#ifndef __USE_TIME_BITS64
 extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __THROW;
-
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (sched_rr_get_interval,
+                           (__pid_t __pid, struct timespec *__t),
+                           __sched_rr_get_interval64);
+# else
+#  define sched_rr_get_interval __sched_rr_get_interval64
+# endif
+#endif
 
 #ifdef __USE_GNU
 /* Access macros for `cpu_set'.  */
diff --git a/posix/sys/wait.h b/posix/sys/wait.h
index 9e7bb7f154..5325bfa4d2 100644
--- a/posix/sys/wait.h
+++ b/posix/sys/wait.h
@@ -144,14 +144,34 @@ struct rusage;
    nil, store information about the child's resource usage there.  If the
    WUNTRACED bit is set in OPTIONS, return status for stopped children;
    otherwise don't.  */
+# ifndef __USE_TIME_BITS64
 extern __pid_t wait3 (int *__stat_loc, int __options,
 		      struct rusage * __usage) __THROWNL;
+# else
+#  ifdef __REDIRECT_NTHNL
+extern __pid_t __REDIRECT_NTHNL (wait3, (int *__stat_loc, int __options,
+                                         struct rusage * __usage),
+                                 __wait3_time64);
+#  else
+#   define wait3 __wait3_time64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_MISC
+# ifndef __USE_TIME_BITS64
 /* PID is like waitpid.  Other args are like wait3.  */
 extern __pid_t wait4 (__pid_t __pid, int *__stat_loc, int __options,
 		      struct rusage *__usage) __THROWNL;
+# else
+#  ifdef __REDIRECT_NTHNL
+extern __pid_t __REDIRECT_NTHNL (wait4, (__pid_t __pid, int *__stat_loc,
+                                         int __options, struct rusage *__usage),
+                                 __wait4_time64);
+#  else
+#   define wait4 __wait4_time64
+#  endif
+# endif
 #endif /* Use misc.  */
 
 
diff --git a/resolv/netdb.h b/resolv/netdb.h
index 1f36f25d4a..9b242ce3d1 100644
--- a/resolv/netdb.h
+++ b/resolv/netdb.h
@@ -701,6 +701,17 @@ extern int getaddrinfo_a (int __mode, struct gaicb *__list[__restrict_arr],
 extern int gai_suspend (const struct gaicb *const __list[], int __ent,
 			const struct timespec *__timeout);
 
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (gai_suspend, (const struct gaicb *const __list[],
+                                     int __ent,
+                                     const struct timespec *__timeout),
+                       __gai_suspend_time64);
+#  else
+#   define gai_suspend __gai_suspend_time64
+#  endif
+# endif
+
 /* Get the error status of the request REQ.  */
 extern int gai_error (struct gaicb *__req) __THROW;
 
diff --git a/resource/sys/resource.h b/resource/sys/resource.h
index d30379d085..551d25e275 100644
--- a/resource/sys/resource.h
+++ b/resource/sys/resource.h
@@ -88,6 +88,16 @@ extern int setrlimit64 (__rlimit_resource_t __resource,
    and put it in *USAGE.  Returns 0 for success, -1 for failure.  */
 extern int getrusage (__rusage_who_t __who, struct rusage *__usage) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (getrusage, (__rusage_who_t __who,
+                                       struct rusage *__usage),
+                           __getrusage64);
+# else
+# define getrusage __getrusage64
+# endif
+#endif
+
 /* Return the highest priority of any process specified by WHICH and WHO
    (see above); if WHO is zero, the current process, process group, or user
    (as specified by WHO) is used.  A lower priority number means higher
diff --git a/rt/aio.h b/rt/aio.h
index 3a107b2783..72cf626690 100644
--- a/rt/aio.h
+++ b/rt/aio.h
@@ -193,12 +193,17 @@ extern __ssize_t __REDIRECT_NTH (aio_return, (struct aiocb *__aiocbp),
 extern int __REDIRECT_NTH (aio_cancel,
 			   (int __fildes, struct aiocb *__aiocbp),
 			   aio_cancel64);
-
+#  ifdef __USE_TIME_BITS64
+extern int __REDIRECT_NTH (aio_suspend,
+			   (const struct aiocb *const __list[], int __nent,
+			    const struct timespec *__restrict __timeout),
+			   __aio_suspend_time64) __nonnull ((1));
+#  else
 extern int __REDIRECT_NTH (aio_suspend,
 			   (const struct aiocb *const __list[], int __nent,
 			    const struct timespec *__restrict __timeout),
 			   aio_suspend64) __nonnull ((1));
-
+#  endif
 extern int __REDIRECT_NTH (aio_fsync,
 			   (int __operation, struct aiocb *__aiocbp),
 			   aio_fsync64) __nonnull ((2));
@@ -210,7 +215,11 @@ extern int __REDIRECT_NTH (aio_fsync,
 #  define aio_error aio_error64
 #  define aio_return aio_return64
 #  define aio_cancel aio_cancel64
-#  define aio_suspend aio_suspend64
+#  ifdef __USE_TIME_BITS64
+#   define aio_suspend __aio_suspend_time64
+#  else
+#   define aio_suspend aio_suspend64
+#  endif
 #  define aio_fsync aio_fsync64
 # endif
 #endif
diff --git a/rt/mqueue.h b/rt/mqueue.h
index 8a62d99f50..e8a85637e4 100644
--- a/rt/mqueue.h
+++ b/rt/mqueue.h
@@ -71,6 +71,7 @@ extern int mq_send (mqd_t __mqdes, const char *__msg_ptr, size_t __msg_len,
 		    unsigned int __msg_prio) __nonnull ((2));
 
 #ifdef __USE_XOPEN2K
+# ifndef __USE_TIME_BITS64
 /* Receive the oldest from highest priority messages in message queue
    MQDES, stop waiting if ABS_TIMEOUT expires.  */
 extern ssize_t mq_timedreceive (mqd_t __mqdes, char *__restrict __msg_ptr,
@@ -85,6 +86,27 @@ extern int mq_timedsend (mqd_t __mqdes, const char *__msg_ptr,
 			 size_t __msg_len, unsigned int __msg_prio,
 			 const struct timespec *__abs_timeout)
   __nonnull ((2, 5));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (mq_timedreceive, (mqd_t __mqdes,
+                               char *__restrict __msg_ptr,
+                               size_t __msg_len,
+                               unsigned int *__restrict __msg_prio,
+                               const struct timespec *__restrict __abs_timeout),
+                       __mq_timedreceive_time64)
+  __nonnull ((2, 5));
+
+extern int __REDIRECT (mq_timedsend, (mqd_t __mqdes,
+                       const char *__msg_ptr, size_t __msg_len,
+                       unsigned int __msg_prio,
+                       const struct timespec *__abs_timeout),
+		       __mq_timedsend_time64)
+  __nonnull ((2, 5));
+#  else
+#   define mq_timedreceive __mq_timedreceive_time64
+#   define mq_timedsend __mq_timedsend_time64
+#  endif
+# endif
 #endif
 
 /* Define some inlines helping to catch common problems.  */
diff --git a/signal/signal.h b/signal/signal.h
index b17203c99c..5fd93382fc 100644
--- a/signal/signal.h
+++ b/signal/signal.h
@@ -269,10 +269,23 @@ extern int sigwaitinfo (const sigset_t *__restrict __set,
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+#  ifndef __USE_TIME_BITS64
 extern int sigtimedwait (const sigset_t *__restrict __set,
 			 siginfo_t *__restrict __info,
 			 const struct timespec *__restrict __timeout)
      __nonnull ((1));
+#  else
+#   ifdef __REDIRECT
+extern int __REDIRECT (sigtimedwait,
+                       (const sigset_t *__restrict __set,
+                        siginfo_t *__restrict __info,
+                        const struct timespec *__restrict __timeout),
+                       __sigtimedwait64)
+     __nonnull ((1));
+#   else
+#    define sigtimedwait __sigtimedwait64
+#   endif
+#  endif
 
 /* Send signal SIG to the process PID.  Associate data in VAL with the
    signal.  */
diff --git a/socket/sys/socket.h b/socket/sys/socket.h
index 949851a6ce..5577e75b80 100644
--- a/socket/sys/socket.h
+++ b/socket/sys/socket.h
@@ -196,9 +196,20 @@ extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags);
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
 		     unsigned int __vlen, int __flags,
 		     struct timespec *__tmo);
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (recvmmsg, (int __fd, struct mmsghdr *__vmessages,
+                                  unsigned int __vlen, int __flags,
+                                  struct timespec *__tmo),
+                       __recvmmsg64);
+#  else
+#   define recvmmsg __recvmmsg64
+#  endif
+# endif
 #endif
 
 
diff --git a/sysdeps/generic/features-time64.h b/sysdeps/generic/features-time64.h
new file mode 100644
index 0000000000..a5a677f837
--- /dev/null
+++ b/sysdeps/generic/features-time64.h
@@ -0,0 +1,19 @@
+/* Features part to handle 64-bit time_t support.  Generic 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/>.  */
+
+/* The generic configuration only support _TIME_BITS=32.  */
diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h
index a04a3a2754..8f3a41279f 100644
--- a/sysdeps/nptl/pthread.h
+++ b/sysdeps/nptl/pthread.h
@@ -221,6 +221,7 @@ extern int pthread_join (pthread_t __th, void **__thread_return);
    the thread in *THREAD_RETURN, if THREAD_RETURN is not NULL.  */
 extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __THROW;
 
+# ifndef __USE_TIME_BITS64
 /* Make calling thread wait for termination of the thread TH, but only
    until TIMEOUT.  The exit status of the thread is stored in
    *THREAD_RETURN, if THREAD_RETURN is not NULL.
@@ -240,6 +241,23 @@ extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
 extern int pthread_clockjoin_np (pthread_t __th, void **__thread_return,
                                  clockid_t __clockid,
 				 const struct timespec *__abstime);
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (pthread_timedjoin_np,
+                       (pthread_t __th, void **__thread_return,
+                        const struct timespec *__abstime),
+                       __pthread_timedjoin_np64);
+
+extern int __REDIRECT (pthread_clockjoin_np,
+                       (pthread_t __th, void **__thread_return,
+                        clockid_t __clockid,
+                        const struct timespec *__abstime),
+                       __pthread_clockjoin_np64);
+#  else
+#   define pthread_timedjoin_np __pthread_timedjoin_np64
+#   define pthread_clockjoin_np __pthread_clockjoin_np64
+#  endif
+# endif
 #endif
 
 /* Indicate that the thread TH is never to be joined with PTHREAD_JOIN.
@@ -773,16 +791,39 @@ extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
 
 #ifdef __USE_XOPEN2K
 /* Wait until lock becomes available, or specified time passes. */
+# ifndef __USE_TIME_BITS64
 extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
 				    const struct timespec *__restrict
 				    __abstime) __THROWNL __nonnull ((1, 2));
+# else
+#  ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_mutex_timedlock,
+                             (pthread_mutex_t *__restrict __mutex,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_mutex_timedlock64) __nonnull ((1, 2));
+#  else
+#   define pthread_mutex_timedlock __pthread_mutex_timedlock64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
+# ifndef __USE_TIME_BITS64
 extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex,
 				    clockid_t __clockid,
 				    const struct timespec *__restrict
 				    __abstime) __THROWNL __nonnull ((1, 3));
+# else
+#  ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_mutex_clocklock,
+                             (pthread_mutex_t *__restrict __mutex,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_mutex_clocklock64) __nonnull ((1, 3));
+#  else
+#   define pthread_mutex_clocklock __pthread_mutex_clocklock64
+#  endif
+# endif
 #endif
 
 /* Unlock a mutex.  */
@@ -919,16 +960,41 @@ extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
 
 # ifdef __USE_XOPEN2K
 /* Try to acquire read lock for RWLOCK or return after specfied time.  */
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 2));
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_timedrdlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_timedrdlock64)
+    __nonnull ((1, 2));
+#   else
+#    define pthread_rwlock_timedrdlock __pthread_rwlock_timedrdlock64
+#   endif
+#  endif
 # endif
 
 # ifdef __USE_GNU
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock,
 				       clockid_t __clockid,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 3));
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_clockrdlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_clockrdlock64)
+    __nonnull ((1, 3));
+#   else
+#    define pthread_rwlock_clockrdlock __pthread_rwlock_clockrdlock64
+#   endif
+#  endif
 # endif
 
 /* Acquire write lock for RWLOCK.  */
@@ -941,16 +1007,42 @@ extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
 
 # ifdef __USE_XOPEN2K
 /* Try to acquire write lock for RWLOCK or return after specfied time.  */
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 2));
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_timedwrlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_timedwrlock64)
+    __nonnull ((1, 2));
+#   else
+#    define pthread_rwlock_timedwrlock __pthread_rwlock_timedwrlock64
+#   endif
+#  endif
 # endif
 
 # ifdef __USE_GNU
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock,
 				       clockid_t __clockid,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 3));
+
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_clockwrlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_clockwrlock64)
+    __nonnull ((1, 3));
+#   else
+#    define pthread_rwlock_clockwrlock __pthread_rwlock_clockwrlock64
+#   endif
+#  endif
 # endif
 
 /* Unlock RWLOCK.  */
@@ -1027,10 +1119,23 @@ extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
 				   pthread_mutex_t *__restrict __mutex,
 				   const struct timespec *__restrict __abstime)
      __nonnull ((1, 2, 3));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (pthread_cond_timedwait,
+                       (pthread_cond_t *__restrict __cond,
+                        pthread_mutex_t *__restrict __mutex,
+                        const struct timespec *__restrict __abstime),
+                       __pthread_cond_timedwait64)
+     __nonnull ((1, 2, 3));
+#  else
+#   define pthread_cond_timedwait __pthread_cond_timedwait64
+#  endif
+# endif
 
 # ifdef __USE_GNU
 /* Wait for condition variable COND to be signaled or broadcast until
@@ -1040,11 +1145,25 @@ extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
 
    This function is a cancellation point and therefore not marked with
    __THROW. */
+#  ifndef __USE_TIME_BITS64
 extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond,
 				   pthread_mutex_t *__restrict __mutex,
 				   __clockid_t __clock_id,
 				   const struct timespec *__restrict __abstime)
      __nonnull ((1, 2, 4));
+#  else
+#   ifdef __REDIRECT
+extern int __REDIRECT (pthread_cond_clockwait,
+                       (pthread_cond_t *__restrict __cond,
+                        pthread_mutex_t *__restrict __mutex,
+                        __clockid_t __clock_id,
+                        const struct timespec *__restrict __abstime),
+                       __pthread_cond_clockwait64)
+     __nonnull ((1, 2, 4));
+#   else
+#    define pthread_cond_clockwait __pthread_cond_clockwait64
+#   endif
+#  endif
 # endif
 
 /* Functions for handling condition variable attributes.  */
diff --git a/sysdeps/pthread/semaphore.h b/sysdeps/pthread/semaphore.h
index 7fb0e5c103..35780e7c4e 100644
--- a/sysdeps/pthread/semaphore.h
+++ b/sysdeps/pthread/semaphore.h
@@ -59,16 +59,41 @@ extern int sem_wait (sem_t *__sem) __nonnull ((1));
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int sem_timedwait (sem_t *__restrict __sem,
 			  const struct timespec *__restrict __abstime)
   __nonnull ((1, 2));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (sem_timedwait,
+                       (sem_t *__restrict __sem,
+                        const struct timespec *__restrict __abstime),
+                        __sem_timedwait64)
+  __nonnull ((1, 2));
+#  else
+#   define sem_timedwait __sem_timedwait64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
+# ifndef __USE_TIME_BITS64
 extern int sem_clockwait (sem_t *__restrict __sem,
 			  clockid_t clock,
 			  const struct timespec *__restrict __abstime)
   __nonnull ((1, 3));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (sem_clockwait,
+                       (sem_t *__restrict __sem,
+                        clockid_t clock,
+                        const struct timespec *__restrict __abstime),
+                        __sem_clockwait64)
+  __nonnull ((1, 3));
+#  else
+#   define sem_clockwait __sem_clockwait64
+#  endif
+# endif
 #endif
 
 /* Test whether SEM is posted.  */
diff --git a/sysdeps/pthread/threads.h b/sysdeps/pthread/threads.h
index 46929a025e..bf251c9db4 100644
--- a/sysdeps/pthread/threads.h
+++ b/sysdeps/pthread/threads.h
@@ -88,8 +88,18 @@ extern thrd_t thrd_current (void);
    __TIME_POINT.  The current thread may resume if receives a signal.  In
    that case, if __REMAINING is not NULL, the remaining time is stored in
    the object pointed by it.  */
+#ifndef __USE_TIME_BITS64
 extern int thrd_sleep (const struct timespec *__time_point,
 		       struct timespec *__remaining);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (thrd_sleep, (const struct timespec *__time_point,
+                                    struct timespec *__remaining),
+                       __thrd_sleep64);
+# else
+#  define thrd_sleep __thrd_sleep64
+# endif
+#endif
 
 /* Terminate current thread execution, cleaning up any thread local
    storage and freeing resources.  Returns the value specified in __RES.  */
@@ -131,8 +141,19 @@ extern int mtx_lock (mtx_t *__mutex);
 /* Block the current thread until the mutex pointed by __MUTEX is unlocked
    or time pointed by __TIME_POINT is reached.  In case the mutex is unlock,
    the current thread will not be blocked.  */
+#ifndef __USE_TIME_BITS64
 extern int mtx_timedlock (mtx_t *__restrict __mutex,
 			  const struct timespec *__restrict __time_point);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (mtx_timedlock, (mtx_t *__restrict __mutex,
+                                       const struct timespec *__restrict
+                                       __time_point),
+                       __mtx_timedlock64);
+# else
+#  define mtx_timedlock __mtx_timedlock64
+# endif
+#endif
 
 /* Try to lock the mutex pointed by __MUTEX without blocking.  If the mutex
    is free the current threads takes control of it, otherwise it returns
@@ -171,9 +192,21 @@ extern int cnd_wait (cnd_t *__cond, mtx_t *__mutex);
 /* Block current thread on the condition variable until condition variable
    pointed by __COND is signaled or time pointed by __TIME_POINT is
    reached.  */
+#ifndef __USE_TIME_BITS64
 extern int cnd_timedwait (cnd_t *__restrict __cond,
 			  mtx_t *__restrict __mutex,
 			  const struct timespec *__restrict __time_point);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (cnd_timedwait, (cnd_t *__restrict __cond,
+                                       mtx_t *__restrict __mutex,
+                                       const struct timespec *__restrict
+                                       __time_point),
+                       __cnd_timedwait64);
+# else
+#  define cnd_timedwait __cnd_timedwait64
+# endif
+#endif
 
 /* Destroy condition variable pointed by __cond and free all of its
    resources.  */
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index 257ccbd3b4..45d31a46bc 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -1,3 +1,4 @@
+%include <time64-compat.h>
 libc {
   GLIBC_2.0 {
     # functions used in inline functions or macros
@@ -168,6 +169,75 @@ libc {
     getdents64; gettid; tgkill;
   }
   GLIBC_2.32 {
+  }
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    # io
+    __ppoll64;
+    __utime64;
+    __stat64_time64;
+    __lstat64_time64;
+    __fstat64_time64;
+    __fstatat64_time64;
+    # misc
+    __futimes64;
+    __futimesat64;
+    __lutimes64;
+    __select64;
+    __utimes64;
+    # posix
+    __nanosleep64;
+    __pselec64;
+    __wait3_time64;
+    __wait4_time64;
+    # nptl
+    __thrd_sleep64;
+    # resouces
+    __getrusage64;
+    # signal
+    __sigtimedwait64;
+    # sysvipc
+    __msgctl64;
+    __semctl64;
+    __semtimedop64;
+    __shmctl64;
+    # time
+    ___adjtimex64;
+    __adjtime64;
+    __clock_adjtime64;
+    __clock_getres64;
+    __clock_gettime64;
+    __clock_nanosleep_time64;
+    __clock_settime64;
+    __ctime64;
+    __ctime64_r;
+    __difftime64;
+    __futimens64;
+    __localtime64;
+    __localtime64_r;
+    __getitimer64;
+    __gettimeofday64;
+    __gmtime64;
+    __gmtime64_r;
+    __mktime64;
+    __nanosleep64;
+    __setitimer64;
+    __settimeofday64;
+    __time64;
+    __timegm64;
+    __timespec_get64;
+    __utimensat64;
+     __utimes64;
+    # misc
+    __ntp_gettime64;
+    __ntp_gettimex64;
+    __pselect64;
+    __recvmmsg64;
+    __sched_rr_get_interval64;
+    __timerfd_gettime64;
+    __timerfd_settime64;
+%endif
   }
   GLIBC_PRIVATE {
     # functions used in other libraries
@@ -182,3 +252,46 @@ libc {
     __netlink_assert_response;
   }
 }
+
+libpthread {
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    __cnd_timedwait64;
+    __mtx_timedlock64;
+    __pthread_clockjoin_np64;
+    __pthread_cond_timedwait64;
+    __pthread_cond_clockwait64;
+    __pthread_mutex_timedlock64;
+    __pthread_mutex_clocklock64;
+    __pthread_rwlock_clockrdlock64;
+    __pthread_rwlock_clockwrlock64;
+    __pthread_rwlock_timedrdlock64;
+    __pthread_rwlock_timedwrlock64;
+    __pthread_timedjoin_np64;
+    __sem_clockwait64;
+    __sem_timedwait64;
+%endif
+  }
+}
+
+librt {
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    __aio_suspend_time64;
+    __mq_timedsend_time64;
+    __mq_timedreceive_time64;
+    __timer_gettime64;
+    __timer_settime64;
+%endif
+  }
+}
+
+libanl {
+%ifdef TIME64_NON_DEFAULT
+  GLIBC_2.34 {
+    __gai_suspend_time64;
+  }
+%endif
+}
diff --git a/sysdeps/unix/sysv/linux/arm/be/libanl.abilist b/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 8111b49085..d63e0dee75 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -155,7 +155,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index b6c26c7a50..3fe358cc31 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -33,6 +33,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libanl.abilist b/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 4dba1f2f46..1a0f0d1312 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -152,7 +152,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index b6c26c7a50..3fe358cc31 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -33,6 +33,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/arm/time64-compat.h b/sysdeps/unix/sysv/linux/arm/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/arm/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/bits/msq.h b/sysdeps/unix/sysv/linux/bits/msq.h
index 3313b69d78..7c9c479551 100644
--- a/sysdeps/unix/sysv/linux/bits/msq.h
+++ b/sysdeps/unix/sysv/linux/bits/msq.h
@@ -26,6 +26,7 @@ typedef __syscall_ulong_t msgqnum_t;
 typedef __syscall_ulong_t msglen_t;
 
 #include <bits/types/struct_msqid_ds.h>
+#include <bits/types/struct_msqid64_ds.h>
 
 /* Define options for message queue functions.  */
 #define MSG_NOERROR	010000	/* no error if message is too big */
diff --git a/sysdeps/unix/sysv/linux/bits/sem.h b/sysdeps/unix/sysv/linux/bits/sem.h
index ad13287e66..776524b876 100644
--- a/sysdeps/unix/sysv/linux/bits/sem.h
+++ b/sysdeps/unix/sysv/linux/bits/sem.h
@@ -22,6 +22,7 @@
 #include <sys/types.h>
 #include <bits/timesize.h>
 #include <bits/types/struct_semid_ds.h>
+#include <bits/types/struct_semid64_ds.h>
 
 /* Flags for `semop'.  */
 #define SEM_UNDO	0x1000		/* undo the operation on exit */
diff --git a/sysdeps/unix/sysv/linux/bits/shm.h b/sysdeps/unix/sysv/linux/bits/shm.h
index a50c79d7be..454fc3f366 100644
--- a/sysdeps/unix/sysv/linux/bits/shm.h
+++ b/sysdeps/unix/sysv/linux/bits/shm.h
@@ -43,6 +43,7 @@ __BEGIN_DECLS
 typedef __syscall_ulong_t shmatt_t;
 
 #include <bits/types/struct_shmid_ds.h>
+#include <bits/types/struct_shmid64_ds.h>
 
 #ifdef __USE_MISC
 
diff --git a/sysdeps/unix/sysv/linux/bits/time.h b/sysdeps/unix/sysv/linux/bits/time.h
index ee5a8b3ef4..d0c98a7864 100644
--- a/sysdeps/unix/sysv/linux/bits/time.h
+++ b/sysdeps/unix/sysv/linux/bits/time.h
@@ -77,6 +77,16 @@ __BEGIN_DECLS
 /* Tune a POSIX clock.  */
 extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (clock_adjtime, (__clockid_t __clock_id,
+                                           struct timex *__utx),
+                           __clock_adjtime64);
+# else
+# define clock_adjtime __clock_adjtime64
+# endif
+#endif
+
 __END_DECLS
 #endif /* use GNU */
 
diff --git a/sysdeps/unix/sysv/linux/csky/libanl.abilist b/sysdeps/unix/sysv/linux/csky/libanl.abilist
index 416a6f8ddb..01f2e6cbf0 100644
--- a/sysdeps/unix/sysv/linux/csky/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.29 gai_cancel F
 GLIBC_2.29 gai_error F
 GLIBC_2.29 gai_suspend F
 GLIBC_2.29 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index a5ff3d90ca..120a3fc1ce 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -2115,7 +2115,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index 6ce59276a7..51d5822091 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -211,3 +211,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index c6690ef7c1..b60deca65a 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.29 timer_delete F
 GLIBC_2.29 timer_getoverrun F
 GLIBC_2.29 timer_gettime F
 GLIBC_2.29 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/csky/time64-compat.h b/sysdeps/unix/sysv/linux/csky/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/csky/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/features-time64.h b/sysdeps/unix/sysv/linux/features-time64.h
new file mode 100644
index 0000000000..c6a0a1874c
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/features-time64.h
@@ -0,0 +1,37 @@
+/* Features part to handle 64-bit time_t support.
+   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/>.  */
+
+/* We need to know the word size in order to check the time size.  */
+#include <bits/wordsize.h>
+#include <bits/timesize.h>
+
+#if defined _TIME_BITS
+# if _TIME_BITS == 64
+#  if ! defined (_FILE_OFFSET_BITS) || _FILE_OFFSET_BITS != 64
+#   error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64"
+#  elif __TIMESIZE == 32
+#   define __USE_TIME_BITS64	1
+#  endif
+# elif _TIME_BITS == 32
+#  if __TIMESIZE > 32
+#   error "_TIME_BITS=32 is not compatible with __TIMESIZE > 32"
+#  endif
+# else
+#  error Invalid _TIME_BITS value (can only be 32 or 64 bits)
+# endif
+#endif
diff --git a/sysdeps/unix/sysv/linux/hppa/libanl.abilist b/sysdeps/unix/sysv/linux/hppa/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/hppa/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 89a0f11166..77c7d2faf3 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2074,7 +2074,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index cabc5af858..0cdb30a3c1 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -218,6 +218,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/hppa/time64-compat.h b/sysdeps/unix/sysv/linux/hppa/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/hppa/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/i386/Makefile b/sysdeps/unix/sysv/linux/i386/Makefile
index da716e2c1b..8d5efb4f65 100644
--- a/sysdeps/unix/sysv/linux/i386/Makefile
+++ b/sysdeps/unix/sysv/linux/i386/Makefile
@@ -1,6 +1,8 @@
 # The default ABI is 32.
 default-abi := 32
 
+extra-version := Versions-y2038
+
 ifeq ($(subdir),misc)
 sysdep_routines += ioperm iopl vm86
 
diff --git a/sysdeps/unix/sysv/linux/i386/libanl.abilist b/sysdeps/unix/sysv/linux/i386/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/i386/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index a7c408d18c..7d1a9691e7 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2241,7 +2241,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index 18177307c8..b3a825d60e 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -226,6 +226,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/i386/time64-compat.h b/sysdeps/unix/sysv/linux/i386/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/include/sys/msg.h b/sysdeps/unix/sysv/linux/include/sys/msg.h
index 522903f818..c460be0dc9 100644
--- a/sysdeps/unix/sysv/linux/include/sys/msg.h
+++ b/sysdeps/unix/sysv/linux/include/sys/msg.h
@@ -7,8 +7,6 @@ extern ssize_t __libc_msgrcv (int msqid, void *msgp, size_t msgsz,
 extern int __libc_msgsnd (int msqid, const void *msgp, size_t msgsz,
 			  int msgflg);
 
-# include <bits/types/struct_msqid64_ds.h>
-
 # if __TIMESIZE == 64
 #  define __msgctl64 __msgctl
 # else
diff --git a/sysdeps/unix/sysv/linux/include/sys/shm.h b/sysdeps/unix/sysv/linux/include/sys/shm.h
index 530a1cdfc9..85177a632d 100644
--- a/sysdeps/unix/sysv/linux/include/sys/shm.h
+++ b/sysdeps/unix/sysv/linux/include/sys/shm.h
@@ -3,8 +3,6 @@
 
 #ifndef _ISOMAC
 
-# include <bits/types/struct_shmid64_ds.h>
-
 # if __TIMESIZE == 64
 #  define __shmctl64 __shmctl
 # else
diff --git a/sysdeps/unix/sysv/linux/include/sys/timex.h b/sysdeps/unix/sysv/linux/include/sys/timex.h
index e136ed172e..c554248ed9 100644
--- a/sysdeps/unix/sysv/linux/include/sys/timex.h
+++ b/sysdeps/unix/sysv/linux/include/sys/timex.h
@@ -23,10 +23,12 @@
 
 # ifndef _ISOMAC
 
+extern int __adjtimex (struct timex *__ntx);
 libc_hidden_proto (__adjtimex)
 
 #  include <time.h>
 #  include <struct___timeval64.h>
+
 /* Local definition of 64 bit time supporting timex struct */
 #  if __TIMESIZE == 64
 #   define __timex64 timex
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index e1171a34aa..da00a3d3c3 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -156,7 +156,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index b6c26c7a50..3fe358cc31 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -33,6 +33,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index a521506506..3e0f00210f 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2186,7 +2186,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index 18177307c8..b3a825d60e 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -226,6 +226,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/m68k/time64-compat.h b/sysdeps/unix/sysv/linux/m68k/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/m68k/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
index 67c7554803..c06e33a1cf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.18 gai_cancel F
 GLIBC_2.18 gai_error F
 GLIBC_2.18 gai_suspend F
 GLIBC_2.18 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index aba642460c..9bed39a8e8 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2166,7 +2166,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index 60397187b6..855c469c63 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -218,3 +218,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index 889dfbc0ee..1b8fc10087 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timer_gettime F
 GLIBC_2.18 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
index 67c7554803..c06e33a1cf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.18 gai_cancel F
 GLIBC_2.18 gai_error F
 GLIBC_2.18 gai_suspend F
 GLIBC_2.18 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index d3d653d144..872321bbab 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2163,7 +2163,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index 60397187b6..855c469c63 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -218,3 +218,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 889dfbc0ee..1b8fc10087 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timer_gettime F
 GLIBC_2.18 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/time64-compat.h b/sysdeps/unix/sysv/linux/microblaze/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/microblaze/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index a4ce56c34f..77dcc8ab7d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2157,7 +2157,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index b35d7f19ca..887a32a376 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -227,6 +227,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index 1539c1cef9..c4dd28e3b2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 51fbf0b1e1..c41f85ce01 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2155,7 +2155,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h b/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 5642781479..4208f9df82 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2163,7 +2163,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
index b35d7f19ca..887a32a376 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
@@ -227,6 +227,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index 1539c1cef9..c4dd28e3b2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h b/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/nios2/libanl.abilist b/sysdeps/unix/sysv/linux/nios2/libanl.abilist
index 6ff9c2d94e..6b080bd075 100644
--- a/sysdeps/unix/sysv/linux/nios2/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.21 gai_cancel F
 GLIBC_2.21 gai_error F
 GLIBC_2.21 gai_suspend F
 GLIBC_2.21 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 848cb2e599..ff0bb57cb6 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2204,7 +2204,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 924ad6e451..18407317e6 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -218,3 +218,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index b4ae7a2dc2..2458614125 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.21 timer_delete F
 GLIBC_2.21 timer_getoverrun F
 GLIBC_2.21 timer_gettime F
 GLIBC_2.21 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/time64-compat.h b/sysdeps/unix/sysv/linux/nios2/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/nios2/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 93e83fa602..57f1fe012a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2213,7 +2213,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 13b41dafb6..711812931d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -228,6 +228,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index ec0b6d69b1..6c9fa9c098 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2246,7 +2246,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 7bc5c8866b..d357619c55 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2211,7 +2211,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 lastlog_read F
 GLIBC_2.34 lastlog_write F
 GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 0a60f1cca2..28db1e4b6d 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -228,6 +228,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h b/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/semctl.c b/sysdeps/unix/sysv/linux/semctl.c
index 1043b2b80d..bb2690d30f 100644
--- a/sysdeps/unix/sysv/linux/semctl.c
+++ b/sysdeps/unix/sysv/linux/semctl.c
@@ -21,7 +21,6 @@
 #include <ipc_priv.h>
 #include <sysdep.h>
 #include <shlib-compat.h>
-#include <bits/types/struct_semid64_ds.h>  /* For __semid64_ds.  */
 #include <linux/posix_types.h>             /* For __kernel_mode_t.  */
 
 /* The struct used to issue the syscall.  For architectures that assume
diff --git a/sysdeps/unix/sysv/linux/sh/be/libanl.abilist b/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 06143b0283..725952a763 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2081,7 +2081,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index cabc5af858..0cdb30a3c1 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -218,6 +218,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libanl.abilist b/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index eab2af349b..7f07b96287 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2078,7 +2078,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index cabc5af858..0cdb30a3c1 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -218,6 +218,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sh/time64-compat.h b/sysdeps/unix/sysv/linux/sh/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sh/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 4783a8fa97..3b7af990d4 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2202,7 +2202,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index 390b6384d0..b5f763d9fd 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -228,6 +228,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index 38f0aad791..fb2769e87b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -34,6 +34,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h b/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/sys/timerfd.h b/sysdeps/unix/sysv/linux/sys/timerfd.h
index 4ad64c2259..790b9d5be6 100644
--- a/sysdeps/unix/sysv/linux/sys/timerfd.h
+++ b/sysdeps/unix/sysv/linux/sys/timerfd.h
@@ -47,9 +47,31 @@ extern int timerfd_settime (int __ufd, int __flags,
 			    const struct itimerspec *__utmr,
 			    struct itimerspec *__otmr) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timerfd_settime,
+                           (int __ufd, int __flags,
+                            const struct itimerspec *__restrict __value,
+                            struct itimerspec *__restrict __ovalue),
+                           __timerfd_settime64);
+# else
+# define timerfd_settime __timerfd_settime64
+# endif
+#endif
+
 /* Return the next expiration time of UFD.  */
 extern int timerfd_gettime (int __ufd, struct itimerspec *__otmr) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timerfd_gettime, (int __ufd,
+                                             struct itimerspec *__otmr),
+                           __timerfd_gettime64);
+# else
+# define timerfd_gettime __timerfd_gettime64
+# endif
+#endif
+
 __END_DECLS
 
 #endif /* sys/timerfd.h */
diff --git a/sysdeps/unix/sysv/linux/sys/timex.h b/sysdeps/unix/sysv/linux/sys/timex.h
index 37931ff496..298f0ca6e7 100644
--- a/sysdeps/unix/sysv/linux/sys/timex.h
+++ b/sysdeps/unix/sysv/linux/sys/timex.h
@@ -54,17 +54,33 @@ struct ntptimeval
 
 __BEGIN_DECLS
 
-extern int __adjtimex (struct timex *__ntx) __THROW;
+#ifndef __USE_TIME_BITS64
 extern int adjtimex (struct timex *__ntx) __THROW;
 
-#ifdef __REDIRECT_NTH
+# ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv),
-			   ntp_gettimex);
+                           __ntp_gettime64);
+# else
+#  define ntp_gettime ntp_gettimex
+# endif
+extern int ntp_adjtime (struct timex *__tntx) __THROW;
 #else
-extern int ntp_gettimex (struct ntptimeval *__ntv) __THROW;
-# define ntp_gettime ntp_gettimex
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (adjtimex, (struct timex *__ntx),
+                           ___adjtimex64);
+extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv),
+                           __ntp_gettime64);
+extern int __REDIRECT_NTH (ntp_gettimex, (struct ntptimeval *__ntv),
+                           __ntp_gettimex64);
+extern int __REDIRECT_NTH (ntp_adjtime, (struct timex *__ntx),
+                           ___adjtimex64);
+# else
+#  define adjtimex ___adjtimex64
+#  define ntp_adjtime ___adjtimex64
+#  define ntp_gettime __ntp_gettime64
+#  define ntp_gettimex __ntp_gettimex64
+# endif
 #endif
-extern int ntp_adjtime (struct timex *__tntx) __THROW;
 
 __END_DECLS
 
diff --git a/sysdeps/unix/sysv/linux/time64-compat.h b/sysdeps/unix/sysv/linux/time64-compat.h
new file mode 100644
index 0000000000..e44b6b68e3
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/time64-compat.h
@@ -0,0 +1,3 @@
+/* Header included by Versions to generate the 64 bit time_t compat symbols.
+   Legacy ABIs with default 32 bit time support define TIME64_NON_DEFAULT to
+   generate the 64 bit symbols.  */
diff --git a/sysvipc/sys/msg.h b/sysvipc/sys/msg.h
index 9ddedf5e15..f31a43757d 100644
--- a/sysvipc/sys/msg.h
+++ b/sysvipc/sys/msg.h
@@ -58,7 +58,17 @@ struct msgbuf
 __BEGIN_DECLS
 
 /* Message queue control operation.  */
+#ifndef __USE_TIME_BITS64
 extern int msgctl (int __msqid, int __cmd, struct msqid_ds *__buf) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (msgctl,
+                           (int __msqid, int __cmd, struct msqid_ds *__buf),
+                           __msgctl64);
+# else
+#  define msgctl __msgctl64
+# endif
+#endif
 
 /* Get messages queue.  */
 extern int msgget (key_t __key, int __msgflg) __THROW;
diff --git a/sysvipc/sys/sem.h b/sysvipc/sys/sem.h
index 03b65dff21..4eb4c51bbe 100644
--- a/sysvipc/sys/sem.h
+++ b/sysvipc/sys/sem.h
@@ -48,7 +48,17 @@ struct sembuf
 __BEGIN_DECLS
 
 /* Semaphore control operation.  */
+#ifndef __USE_TIME_BITS64
 extern int semctl (int __semid, int __semnum, int __cmd, ...) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (semctl,
+                           (int __semid, int __semnum, int __cmd, ...),
+                           __semctl64);
+# else
+#  define semctl __semctl64
+# endif
+#endif
 
 /* Get semaphore.  */
 extern int semget (key_t __key, int __nsems, int __semflg) __THROW;
@@ -58,8 +68,19 @@ extern int semop (int __semid, struct sembuf *__sops, size_t __nsops) __THROW;
 
 #ifdef __USE_GNU
 /* Operate on semaphore with timeout.  */
+# ifndef __USE_TIME_BITS64
 extern int semtimedop (int __semid, struct sembuf *__sops, size_t __nsops,
 		       const struct timespec *__timeout) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (semtimedop, (int __semid, struct sembuf *__sops,
+                                        size_t __nsops,
+                                        const struct timespec *__timeout),
+                           __semtimedop64);
+#  else
+#   define semtimedop __semtimedop64
+#  endif
+# endif
 #endif
 
 __END_DECLS
diff --git a/sysvipc/sys/shm.h b/sysvipc/sys/shm.h
index 7506ba67bf..b09e0497e6 100644
--- a/sysvipc/sys/shm.h
+++ b/sysvipc/sys/shm.h
@@ -46,7 +46,17 @@ __BEGIN_DECLS
    facility.  The definition is found in XPG4.2.  */
 
 /* Shared memory control operation.  */
+#ifndef __USE_TIME_BITS64
 extern int shmctl (int __shmid, int __cmd, struct shmid_ds *__buf) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (shmctl,
+                           (int __shmid, int __cmd, struct shmid_ds *__buf),
+                           __shmctl64);
+# else
+#  define shmctl __shmctl64
+# endif
+#endif
 
 /* Get shared memory segment.  */
 extern int shmget (key_t __key, size_t __size, int __shmflg) __THROW;
diff --git a/time/sys/time.h b/time/sys/time.h
index 42f91f186b..d21411c0b4 100644
--- a/time/sys/time.h
+++ b/time/sys/time.h
@@ -63,10 +63,21 @@ struct timezone
    use localtime etc. instead.
    This function itself is semi-obsolete;
    most callers should use time or clock_gettime instead. */
+#ifndef __USE_TIME_BITS64
 extern int gettimeofday (struct timeval *__restrict __tv,
 			 void *__restrict __tz) __THROW __nonnull ((1));
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (gettimeofday, (struct timeval *__restrict __tv,
+                                          void *__restrict __tz),
+                           __gettimeofday64) __nonnull ((1));
+# else
+#  define gettimeofday __gettimeofday64
+# endif
+#endif
 
 #ifdef __USE_MISC
+# ifndef __USE_TIME_BITS64
 /* Set the current time of day and timezone information.
    This call is restricted to the super-user.
    Setting the timezone in this way is obsolete, but we don't yet
@@ -82,6 +93,20 @@ extern int settimeofday (const struct timeval *__tv,
    This call is restricted to the super-user.  */
 extern int adjtime (const struct timeval *__delta,
 		    struct timeval *__olddelta) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (settimeofday, (const struct timeval *__tv,
+                                          const struct timezone *__tz),
+                           __settimeofday64);
+
+extern int __REDIRECT_NTH (adjtime, (const struct timeval *__delta,
+                                     struct timeval *__olddelta),
+                           __adjtime64);
+#  else
+#   define settimeofday __settimeofday64
+#   define adjtime __adjtime64
+#  endif
+# endif
 #endif
 
 
@@ -118,6 +143,7 @@ typedef enum __itimer_which __itimer_which_t;
 typedef int __itimer_which_t;
 #endif
 
+#ifndef __USE_TIME_BITS64
 /* Set *VALUE to the current setting of timer WHICH.
    Return 0 on success, -1 on errors.  */
 extern int getitimer (__itimer_which_t __which,
@@ -136,21 +162,66 @@ extern int setitimer (__itimer_which_t __which,
 extern int utimes (const char *__file, const struct timeval __tvp[2])
      __THROW __nonnull ((1));
 
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (getitimer, (__itimer_which_t __which,
+                                       struct itimerval *__value),
+                           __getitimer64);
+
+extern int __REDIRECT_NTH (setitimer, (__itimer_which_t __which,
+                                       const struct itimerval *__restrict __new,
+                                       struct itimerval *__restrict __old),
+                           __setitimer64);
+
+extern int __REDIRECT_NTH (utimes, (const char *__file,
+                                    const struct timeval __tvp[2]),
+                           __utimes64) __nonnull ((1));
+# else
+#  define getitimer __getitimer64
+#  define setitimer __setitimer64
+#  define utimes __utimes64
+# endif
+#endif
+
 #ifdef __USE_MISC
+# ifndef __USE_TIME_BITS64
 /* Same as `utimes', but does not follow symbolic links.  */
 extern int lutimes (const char *__file, const struct timeval __tvp[2])
      __THROW __nonnull ((1));
 
 /* Same as `utimes', but takes an open file descriptor instead of a name.  */
 extern int futimes (int __fd, const struct timeval __tvp[2]) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (lutimes, (const char *__file,
+                                     const struct timeval __tvp[2]),
+                           __lutimes64) __nonnull ((1));
+
+extern int __REDIRECT_NTH (futimes, (int __fd, const struct timeval __tvp[2]),
+                           __futimes64);
+#  else
+#   define lutimes __lutimes64
+#   define futimes __futimes64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
+# ifndef __USE_TIME_BITS64
 /* Change the access time of FILE relative to FD to TVP[0] and the
    modification time of FILE to TVP[1].  If TVP is a null pointer, use
    the current time instead.  Returns 0 on success, -1 on errors.  */
 extern int futimesat (int __fd, const char *__file,
 		      const struct timeval __tvp[2]) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (futimesat, (int __fd, const char *__file,
+                                       const struct timeval __tvp[2]),
+                           __futimesat64);
+#  else
+#   define futimesat __futimesat64
+#  endif
+# endif
 #endif
 
 
diff --git a/time/time.h b/time/time.h
index 3bf206be0b..91b81cb1c6 100644
--- a/time/time.h
+++ b/time/time.h
@@ -71,6 +71,7 @@ __BEGIN_DECLS
    The result / CLOCKS_PER_SEC is program time in seconds.  */
 extern clock_t clock (void) __THROW;
 
+#ifndef __USE_TIME_BITS64
 /* Return the current time and put it in *TIMER if TIMER is not NULL.  */
 extern time_t time (time_t *__timer) __THROW;
 
@@ -80,7 +81,18 @@ extern double difftime (time_t __time1, time_t __time0)
 
 /* Return the `time_t' representation of TP and normalize TP.  */
 extern time_t mktime (struct tm *__tp) __THROW;
-
+#else
+# ifdef __REDIRECT_NTH
+extern time_t __REDIRECT_NTH (time, (time_t *__timer), __time64);
+extern double __REDIRECT_NTH (difftime, (time_t __time1, time_t __time0),
+                              __difftime64) __attribute__ ((__const__));
+extern time_t __REDIRECT_NTH (mktime, (struct tm *__tp), __mktime64);
+# else
+#  define time __time64
+#  define difftime __difftime64
+#  define mktime __mktime64
+# endif
+#endif
 
 /* Format TP into S according to FORMAT.
    Write no more than MAXSIZE characters and return the number
@@ -114,6 +126,7 @@ extern char *strptime_l (const char *__restrict __s,
 #endif
 
 
+#ifndef __USE_TIME_BITS64
 /* Return the `struct tm' representation of *TIMER
    in Universal Coordinated Time (aka Greenwich Mean Time).  */
 extern struct tm *gmtime (const time_t *__timer) __THROW;
@@ -122,7 +135,20 @@ extern struct tm *gmtime (const time_t *__timer) __THROW;
    of *TIMER in the local timezone.  */
 extern struct tm *localtime (const time_t *__timer) __THROW;
 
+#else
+# ifdef __REDIRECT_NTH
+extern struct tm*__REDIRECT_NTH (gmtime, (const time_t *__timer), __gmtime64);
+extern struct tm *__REDIRECT_NTH (localtime, (const time_t *__timer),
+				  __localtime64);
+# else
+#  define gmtime __gmtime64
+#  define localtime __localtime64
+# endif
+#endif
+
+
 #if defined __USE_POSIX || __GLIBC_USE (ISOC2X)
+# ifndef __USE_TIME_BITS64
 /* Return the `struct tm' representation of *TIMER in UTC,
    using *TP to store the result.  */
 extern struct tm *gmtime_r (const time_t *__restrict __timer,
@@ -132,6 +158,20 @@ extern struct tm *gmtime_r (const time_t *__restrict __timer,
    using *TP to store the result.  */
 extern struct tm *localtime_r (const time_t *__restrict __timer,
 			       struct tm *__restrict __tp) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern struct tm*__REDIRECT_NTH (gmtime_r, (const time_t *__restrict __timer,
+                                            struct tm *__restrict __tp),
+                                 __gmtime64_r);
+
+extern struct tm*__REDIRECT_NTH (localtime_r, (const time_t *__restrict __t,
+                                               struct tm *__restrict __tp),
+                                 __localtime64_r);
+#  else
+#   define gmtime_r __gmtime64_r
+#   define localtime_r __localtime_r
+#  endif
+# endif
 #endif	/* POSIX || C2X */
 
 /* Return a string of the form "Day Mon dd hh:mm:ss yyyy\n"
@@ -139,7 +179,15 @@ extern struct tm *localtime_r (const time_t *__restrict __timer,
 extern char *asctime (const struct tm *__tp) __THROW;
 
 /* Equivalent to `asctime (localtime (timer))'.  */
+#ifndef __USE_TIME_BITS64
 extern char *ctime (const time_t *__timer) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern char *__REDIRECT_NTH (ctime, (const time_t *__timer), __ctime64);
+# else
+#  define ctime __ctime64
+# endif
+#endif
 
 #if defined __USE_POSIX || __GLIBC_USE (ISOC2X)
 /* Reentrant versions of the above functions.  */
@@ -150,8 +198,18 @@ extern char *asctime_r (const struct tm *__restrict __tp,
 			char *__restrict __buf) __THROW;
 
 /* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'.  */
+#ifndef __USE_TIME_BITS64
 extern char *ctime_r (const time_t *__restrict __timer,
 		      char *__restrict __buf) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern char *__REDIRECT_NTH (ctime_r, (const time_t *__restrict __timer,
+                                       char *__restrict __buf), __ctime64_r);
+# else
+#  define ctime_r __ctime64_r
+# endif
+#endif
+
 #endif	/* POSIX || C2X */
 
 
@@ -186,11 +244,19 @@ extern long int timezone;
 /* Miscellaneous functions many Unices inherited from the public domain
    localtime package.  These are included only for compatibility.  */
 
+#ifndef __USE_TIME_BITS64
 /* Like `mktime', but for TP represents Universal Time, not local time.  */
 extern time_t timegm (struct tm *__tp) __THROW;
-
 /* Another name for `mktime'.  */
 extern time_t timelocal (struct tm *__tp) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern time_t __REDIRECT_NTH (timegm, (struct tm *__tp), __timegm64);
+extern time_t __REDIRECT_NTH (timelocal, (struct tm *__tp), __mktime64);
+# else
+#  define timegm __timegm64
+# endif
+#endif
 
 /* Return the number of days in YEAR.  */
 extern int dysize (int __year) __THROW  __attribute__ ((__const__));
@@ -198,6 +264,7 @@ extern int dysize (int __year) __THROW  __attribute__ ((__const__));
 
 
 #ifdef __USE_POSIX199309
+# ifndef __USE_TIME_BITS64
 /* Pause execution for a number of nanoseconds.
 
    This function is a cancellation point and therefore not marked with
@@ -205,7 +272,6 @@ extern int dysize (int __year) __THROW  __attribute__ ((__const__));
 extern int nanosleep (const struct timespec *__requested_time,
 		      struct timespec *__remaining);
 
-
 /* Get resolution of clock CLOCK_ID.  */
 extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __THROW;
 
@@ -215,15 +281,46 @@ extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW;
 /* Set clock CLOCK_ID to value TP.  */
 extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp)
      __THROW;
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (nanosleep, (const struct timespec *__requested_time,
+                                   struct timespec *__remaining),
+                       __nanosleep64);
+extern int __REDIRECT_NTH (clock_getres, (clockid_t __clock_id,
+                                          struct timespec *__res),
+                           __clock_getres64);
+extern int __REDIRECT_NTH (clock_gettime, (clockid_t __clock_id, struct
+                                           timespec *__tp), __clock_gettime64);
+extern int __REDIRECT_NTH (clock_settime, (clockid_t __clock_id, const struct
+                                           timespec *__tp), __clock_settime64);
+#  else
+#   define nanosleep __nanosleep64
+#   define clock_getres __clock_getres64
+#   define clock_gettime __clock_gettime64
+#   define clock_settime __clock_settime64
+#  endif
+# endif
+
 
 # ifdef __USE_XOPEN2K
 /* High-resolution sleep with the specified clock.
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+#  ifndef __USE_TIME_BITS64
 extern int clock_nanosleep (clockid_t __clock_id, int __flags,
 			    const struct timespec *__req,
 			    struct timespec *__rem);
+#  else
+#   ifdef __REDIRECT
+extern int __REDIRECT (clock_nanosleep, (clockid_t __clock_id, int __flags,
+                                         const struct timespec *__req,
+                                         struct timespec *__rem),
+                       __clock_nanosleep_time64);
+#   else
+#    define clock_nanosleep __clock_nanosleep_time64
+#   endif
+#  endif
 
 /* Return clock ID for CPU-time clock.  */
 extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __THROW;
@@ -239,6 +336,7 @@ extern int timer_create (clockid_t __clock_id,
 extern int timer_delete (timer_t __timerid) __THROW;
 
 /* Set timer TIMERID to VALUE, returning old value in OVALUE.  */
+# ifndef __USE_TIME_BITS64
 extern int timer_settime (timer_t __timerid, int __flags,
 			  const struct itimerspec *__restrict __value,
 			  struct itimerspec *__restrict __ovalue) __THROW;
@@ -246,6 +344,21 @@ extern int timer_settime (timer_t __timerid, int __flags,
 /* Get current value of timer TIMERID and store it in VALUE.  */
 extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
      __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (timer_settime, (timer_t __timerid, int __flags,
+     const struct itimerspec *__restrict __value,
+     struct itimerspec *__restrict __ovalue),
+                          __timer_settime64);
+
+extern int __REDIRECT_NTH (timer_gettime, (timer_t __timerid,
+                                           struct itimerspec *__value),
+                           __timer_gettime64);
+#  else
+#   define timer_settime __timer_settime64
+#   define timer_gettime __timer_gettime64
+#  endif
+# endif
 
 /* Get expiration overrun for timer TIMERID.  */
 extern int timer_getoverrun (timer_t __timerid) __THROW;
@@ -253,9 +366,18 @@ extern int timer_getoverrun (timer_t __timerid) __THROW;
 
 
 #ifdef __USE_ISOC11
+# ifndef __USE_TIME_BITS64
 /* Set TS to calendar time based in time base BASE.  */
 extern int timespec_get (struct timespec *__ts, int __base)
      __THROW __nonnull ((1));
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (timespec_get, (struct timespec *__ts, int __base),
+                           __timespec_get64) __nonnull ((1));
+#  else
+#   define timespec_get __timespec_get64
+#  endif
+# endif
 #endif


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [glibc/azanella/y2038] y2038: Add support for 64 bit time on legacy ABIs
@ 2021-03-01 17:38 Adhemerval Zanella
  0 siblings, 0 replies; 10+ messages in thread
From: Adhemerval Zanella @ 2021-03-01 17:38 UTC (permalink / raw)
  To: glibc-cvs

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=f2e4b979ac47a242524dfce58f96638674a475d4

commit f2e4b979ac47a242524dfce58f96638674a475d4
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Wed Feb 17 13:35:19 2021 -0300

    y2038: Add support for 64 bit time on legacy ABIs
    
    A new build flag, _TIME_BITS, enables the usage of the newer 64 bit
    time symbols for legacy ABI (where 32 bit time_t is default).  The 64
    bit time support is only enabled if LFS (_FILE_OFFSET_BITS=64) is
    also used.
    
    Different than LFS support, the y2038 symbols are added only for the
    required ABIs (armhf, csky, hppa, i386, m68k, microblaze, mips32,
    mips64-n32, nios2, powerpc32, sparc32, s390-32, and sh).  The ABIs with
    64 bit time support are unchanged, both for symbol and types
    redirection.
    
    On Linux apropoer 64 bit time support requires a minimum of kernel
    version v5.1.  Otherwise, the 32 bit fallbacks are used and might
    results in error with overflow return code (EOVERFLOW).
    
    The i686-gnu does not yet support 64 bit time, and trying to build
    it using -D_TIME_BITS=64 results in an error.
    
    This patch also converts following implemetations to support 64 bit
    time:
    
      * libc:
        - adjtimex
        - adjtime
        - clock_adjtime
        - clock_getres
        - clock_gettime
        - clock_nanosleep
        - clock_settime
        - ctime
        - ctime_r
        - difftime
        - futimens
        - futimes
        - futimesat
        - getitimer
        - getrusage
        - gettimeofday
        - gmtime
        - gmtime_r
        - localtime
        - localtime_r
        - lutimes
        - mktime
        - msgctl
        - nanosleep
        - ntp_gettime
        - ntp_gettimex
        - ppoll
        - pselect
        - recvmmsg
        - sched_rr_get_interval
        - select
        - semctl
        - semtimedop
        - setitimer
        - settimeofday
        - shmctl
        - sigtimedwait
        - thrd_sleep
        - time
        - timegm
        - timelocal (alias to mktime)
        - timerfd_gettime
        - timerfd_settime
        - timespec_get
        - utime
        - utimensat
        - utimes
        - wait3
        - wait4
    
      * libpthread:
        - mtx_timedlock
        - pthread_clockjoin_np
        - pthread_cond_clockwait
        - pthread_cond_timedwait
        - pthread_mutex_clocklock
        - pthread_mutex_timedlock
        - pthread_rwlock_clockrdlock
        - pthread_rwlock_clockwrlock
        - pthread_rwlock_timedrdlock
        - pthread_rwlock_timedwrlock
        - pthread_timedjoin_np
        - sem_clockwait
        - sem_timedwait
    
      * librt:
        - aio_suspend
        - mq_timedreceive
        - mq_timedsend
        - timer_gettime
        - timer_settime
    
      * libanl:
        - gai_suspend

Diff:
---
 Makefile                                           |   2 +-
 NEWS                                               |   4 +
 include/features-time64.h                          |   1 +
 include/features.h                                 |   2 +
 io/sys/poll.h                                      |  11 ++
 io/sys/stat.h                                      |  78 +++++++++++--
 io/utime.h                                         |  11 ++
 manual/creature.texi                               |  44 +++++++
 misc/sys/select.h                                  |  27 +++++
 posix/sched.h                                      |  11 +-
 posix/sys/wait.h                                   |  20 ++++
 resolv/netdb.h                                     |  11 ++
 resource/sys/resource.h                            |  10 ++
 rt/aio.h                                           |  15 ++-
 rt/mqueue.h                                        |  22 ++++
 signal/signal.h                                    |  13 +++
 socket/sys/socket.h                                |  11 ++
 sysdeps/generic/features-time64.h                  |  19 +++
 sysdeps/nptl/pthread.h                             | 119 +++++++++++++++++++
 sysdeps/pthread/semaphore.h                        |  25 ++++
 sysdeps/pthread/threads.h                          |  33 ++++++
 sysdeps/unix/sysv/linux/Versions                   | 113 ++++++++++++++++++
 sysdeps/unix/sysv/linux/arm/be/libanl.abilist      |   1 +
 sysdeps/unix/sysv/linux/arm/be/libc.abilist        |  52 +++++++++
 sysdeps/unix/sysv/linux/arm/be/libpthread.abilist  |  14 +++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist       |   5 +
 sysdeps/unix/sysv/linux/arm/le/libanl.abilist      |   1 +
 sysdeps/unix/sysv/linux/arm/le/libc.abilist        |  52 +++++++++
 sysdeps/unix/sysv/linux/arm/le/libpthread.abilist  |  14 +++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist       |   5 +
 sysdeps/unix/sysv/linux/arm/time64-compat.h        |   2 +
 sysdeps/unix/sysv/linux/bits/msq.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/sem.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/shm.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/time.h                |  10 ++
 sysdeps/unix/sysv/linux/csky/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/csky/libc.abilist          |  52 +++++++++
 sysdeps/unix/sysv/linux/csky/libpthread.abilist    |  14 +++
 sysdeps/unix/sysv/linux/csky/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/csky/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/features-time64.h          |  37 ++++++
 sysdeps/unix/sysv/linux/hppa/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/hppa/libc.abilist          |  52 +++++++++
 sysdeps/unix/sysv/linux/hppa/libpthread.abilist    |  14 +++
 sysdeps/unix/sysv/linux/hppa/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/hppa/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/i386/Makefile              |   2 +
 sysdeps/unix/sysv/linux/i386/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/i386/libc.abilist          |  52 +++++++++
 sysdeps/unix/sysv/linux/i386/libpthread.abilist    |  14 +++
 sysdeps/unix/sysv/linux/i386/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/i386/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/include/sys/msg.h          |   2 -
 sysdeps/unix/sysv/linux/include/sys/shm.h          |   2 -
 sysdeps/unix/sysv/linux/include/sys/timex.h        |   2 +
 .../unix/sysv/linux/m68k/coldfire/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist |  52 +++++++++
 .../sysv/linux/m68k/coldfire/libpthread.abilist    |  14 +++
 .../unix/sysv/linux/m68k/coldfire/librt.abilist    |   5 +
 sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist |   1 +
 sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist   |  52 +++++++++
 .../unix/sysv/linux/m68k/m680x0/libpthread.abilist |  14 +++
 sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist  |   5 +
 sysdeps/unix/sysv/linux/m68k/time64-compat.h       |   2 +
 .../unix/sysv/linux/microblaze/be/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/microblaze/be/libc.abilist |  52 +++++++++
 .../sysv/linux/microblaze/be/libpthread.abilist    |  14 +++
 .../unix/sysv/linux/microblaze/be/librt.abilist    |   5 +
 .../unix/sysv/linux/microblaze/le/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/microblaze/le/libc.abilist |  52 +++++++++
 .../sysv/linux/microblaze/le/libpthread.abilist    |  14 +++
 .../unix/sysv/linux/microblaze/le/librt.abilist    |   5 +
 sysdeps/unix/sysv/linux/microblaze/time64-compat.h |   2 +
 .../unix/sysv/linux/mips/mips32/fpu/libc.abilist   |  52 +++++++++
 sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist |   1 +
 .../unix/sysv/linux/mips/mips32/libpthread.abilist |  14 +++
 sysdeps/unix/sysv/linux/mips/mips32/librt.abilist  |   5 +
 .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist |  52 +++++++++
 .../unix/sysv/linux/mips/mips32/time64-compat.h    |   2 +
 .../unix/sysv/linux/mips/mips64/n32/libanl.abilist |   1 +
 .../unix/sysv/linux/mips/mips64/n32/libc.abilist   |  52 +++++++++
 .../sysv/linux/mips/mips64/n32/libpthread.abilist  |  14 +++
 .../unix/sysv/linux/mips/mips64/n32/librt.abilist  |   5 +
 .../sysv/linux/mips/mips64/n32/time64-compat.h     |   2 +
 sysdeps/unix/sysv/linux/nios2/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/nios2/libc.abilist         |  52 +++++++++
 sysdeps/unix/sysv/linux/nios2/libpthread.abilist   |  14 +++
 sysdeps/unix/sysv/linux/nios2/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/nios2/time64-compat.h      |   2 +
 .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist  |  52 +++++++++
 .../sysv/linux/powerpc/powerpc32/libanl.abilist    |   1 +
 .../linux/powerpc/powerpc32/libpthread.abilist     |  14 +++
 .../sysv/linux/powerpc/powerpc32/librt.abilist     |   5 +
 .../linux/powerpc/powerpc32/nofpu/libc.abilist     |  52 +++++++++
 .../sysv/linux/powerpc/powerpc32/time64-compat.h   |   2 +
 .../unix/sysv/linux/s390/s390-32/libanl.abilist    |   1 +
 sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist  |  52 +++++++++
 .../sysv/linux/s390/s390-32/libpthread.abilist     |  14 +++
 sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist |   5 +
 .../unix/sysv/linux/s390/s390-32/time64-compat.h   |   2 +
 sysdeps/unix/sysv/linux/semctl.c                   |   1 -
 sysdeps/unix/sysv/linux/sh/be/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/sh/be/libc.abilist         |  52 +++++++++
 sysdeps/unix/sysv/linux/sh/be/libpthread.abilist   |  14 +++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/sh/le/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/sh/le/libc.abilist         |  52 +++++++++
 sysdeps/unix/sysv/linux/sh/le/libpthread.abilist   |  14 +++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/sh/time64-compat.h         |   2 +
 .../unix/sysv/linux/sparc/sparc32/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist |  52 +++++++++
 .../sysv/linux/sparc/sparc32/libpthread.abilist    |  14 +++
 .../unix/sysv/linux/sparc/sparc32/librt.abilist    |   5 +
 .../unix/sysv/linux/sparc/sparc32/time64-compat.h  |   2 +
 sysdeps/unix/sysv/linux/sys/timerfd.h              |  22 ++++
 sysdeps/unix/sysv/linux/sys/timex.h                |  28 ++++-
 sysdeps/unix/sysv/linux/time64-compat.h            |   3 +
 sysvipc/sys/msg.h                                  |  10 ++
 sysvipc/sys/sem.h                                  |  21 ++++
 sysvipc/sys/shm.h                                  |  10 ++
 time/sys/time.h                                    |  71 ++++++++++++
 time/time.h                                        | 128 ++++++++++++++++++++-
 123 files changed, 2279 insertions(+), 29 deletions(-)

diff --git a/Makefile b/Makefile
index 71c7d8b5ec..2fd88294f5 100644
--- a/Makefile
+++ b/Makefile
@@ -68,7 +68,7 @@ endif # $(AUTOCONF) = no
 		   subdir_objs subdir_stubs subdir_testclean		\
 		   $(addprefix install-, no-libc.a bin lib data headers others)
 \f
-headers := limits.h values.h features.h gnu-versions.h \
+headers := limits.h values.h features.h features-time64.h gnu-versions.h \
 	   bits/xopen_lim.h gnu/libc-version.h stdc-predef.h \
 	   bits/libc-header-start.h
 
diff --git a/NEWS b/NEWS
index 37ba6ac0d0..7173d333cc 100644
--- a/NEWS
+++ b/NEWS
@@ -14,6 +14,10 @@ Major new features:
   constant on Linux.  MINSIGSTKSZ is redefined to sysconf(_SC_MINSIGSTKSZ)
   and SIGSTKSZ is redefined to sysconf (_SC_SIGSTKSZ).
 
+* Add support for 64 bit time_t support for ABIs with defaults to 32 bit
+  time_t.  This is enabled with the _TIME_BITS flag set to 64 and it
+  is support on Linux with a minimum version of 5.1.
+
 Deprecated and removed features, and other changes affecting compatibility:
 
   [Add deprecations, removals and changes affecting compatibility here]
diff --git a/include/features-time64.h b/include/features-time64.h
new file mode 100644
index 0000000000..06115b7c86
--- /dev/null
+++ b/include/features-time64.h
@@ -0,0 +1 @@
+#include_next <features-time64.h>
diff --git a/include/features.h b/include/features.h
index eb97470afa..9d39e11345 100644
--- a/include/features.h
+++ b/include/features.h
@@ -387,6 +387,8 @@
 # define __USE_FILE_OFFSET64	1
 #endif
 
+#include <features-time64.h>
+
 #if defined _DEFAULT_SOURCE
 # define __USE_MISC	1
 #endif
diff --git a/io/sys/poll.h b/io/sys/poll.h
index 2431dd1e14..5dfb721fe5 100644
--- a/io/sys/poll.h
+++ b/io/sys/poll.h
@@ -63,6 +63,17 @@ extern int poll (struct pollfd *__fds, nfds_t __nfds, int __timeout);
 extern int ppoll (struct pollfd *__fds, nfds_t __nfds,
 		  const struct timespec *__timeout,
 		  const __sigset_t *__ss);
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (ppoll, (struct pollfd *__fds, nfds_t __nfds,
+                               const struct timespec *__timeout,
+                               const __sigset_t *__ss),
+                       __ppoll64);
+#  else
+#  define ppoll __ppoll64
+#  endif
+# endif
 #endif
 
 __END_DECLS
diff --git a/io/sys/stat.h b/io/sys/stat.h
index 549375c087..b1729fda9f 100644
--- a/io/sys/stat.h
+++ b/io/sys/stat.h
@@ -209,15 +209,30 @@ extern int stat (const char *__restrict __file,
    that file descriptor FD is open on and put them in BUF.  */
 extern int fstat (int __fd, struct stat *__buf) __THROW __nonnull ((2));
 #else
-# ifdef __REDIRECT_NTH
+# ifdef __USE_TIME_BITS64
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
+				  struct stat *__restrict __buf),
+				  __stat64_time64)
+     __nonnull ((1, 2));
+extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf),
+				   __fstat64_time64)
+     __nonnull ((2));
+#  else
+#   define stat __stat64_time64
+#   define fstat __fstat64_time64
+#  endif
+# else
+#  ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
 				  struct stat *__restrict __buf), stat64)
      __nonnull ((1, 2));
 extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf), fstat64)
      __nonnull ((2));
-# else
-#  define stat stat64
-#  define fstat fstat64
+#  else
+#   define stat stat64
+#   define fstat fstat64
+#  endif
 # endif
 #endif
 #ifdef __USE_LARGEFILE64
@@ -235,13 +250,24 @@ extern int fstatat (int __fd, const char *__restrict __file,
 		    struct stat *__restrict __buf, int __flag)
      __THROW __nonnull ((2, 3));
 # else
-#  ifdef __REDIRECT_NTH
+#  ifdef __USE_TIME_BITS64
+#   ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
 				     struct stat *__restrict __buf,
 				     int __flag),
-			   fstatat64) __nonnull ((2, 3));
+			   __fstatat64_time64) __nonnull ((2, 3));
+#   else
+#    define fstatat __fstatat64_time64
+#   endif
 #  else
-#   define fstatat fstatat64
+#   ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
+				     struct stat *__restrict __buf,
+				     int __flag),
+			   fstatat64) __nonnull ((2, 3));
+#   else
+#    define fstatat fstatat64
+#   endif
 #  endif
 # endif
 
@@ -259,13 +285,24 @@ extern int fstatat64 (int __fd, const char *__restrict __file,
 extern int lstat (const char *__restrict __file,
 		  struct stat *__restrict __buf) __THROW __nonnull ((1, 2));
 # else
-#  ifdef __REDIRECT_NTH
+#  ifdef __USE_TIME_BITS64
+#   ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (lstat,
 			   (const char *__restrict __file,
-			    struct stat *__restrict __buf), lstat64)
+			    struct stat *__restrict __buf), __lstat64_time64)
      __nonnull ((1, 2));
+#   else
+#    define lstat __lstat64_time64
+#   endif
 #  else
-#   define lstat lstat64
+#   ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (lstat,
+			   (const char *__restrict __file,
+			    struct stat *__restrict __buf), lstat64)
+     __nonnull ((1, 2));
+#   else
+#    define lstat lstat64
+#   endif
 #  endif
 # endif
 # ifdef __USE_LARGEFILE64
@@ -355,17 +392,38 @@ extern int mkfifoat (int __fd, const char *__path, __mode_t __mode)
 #endif
 \f
 #ifdef __USE_ATFILE
+# ifndef __USE_TIME_BITS64
 /* Set file access and modification times relative to directory file
    descriptor.  */
 extern int utimensat (int __fd, const char *__path,
 		      const struct timespec __times[2],
 		      int __flags)
      __THROW __nonnull ((2));
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (utimensat, (int fd, const char *__path,
+                                       const struct timespec __times[2],
+                                       int flags),
+                           __utimensat64) __nonnull ((2));
+#  else
+#   define utimensat __utimensat64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_XOPEN2K8
+# ifndef __USE_TIME_BITS64
 /* Set file access and modification times of the file associated with FD.  */
 extern int futimens (int __fd, const struct timespec __times[2]) __THROW;
+
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (futimens, (int fd, const struct timespec __times[2]),
+                           __futimens64);
+#  else
+#   define futimens __futimens64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
diff --git a/io/utime.h b/io/utime.h
index c7612d0838..1a645a3fff 100644
--- a/io/utime.h
+++ b/io/utime.h
@@ -46,10 +46,21 @@ struct utimbuf
 
 /* Set the access and modification times of FILE to those given in
    *FILE_TIMES.  If FILE_TIMES is NULL, set them to the current time.  */
+#ifndef __USE_TIME_BITS64
 extern int utime (const char *__file,
 		  const struct utimbuf *__file_times)
      __THROW __nonnull ((1));
 
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (utime, (const char *__file,
+                                   const struct utimbuf *__file_times),
+                           __utime64);
+# else
+#  define utime __utime64
+# endif
+#endif
+
 __END_DECLS
 
 #endif /* utime.h */
diff --git a/manual/creature.texi b/manual/creature.texi
index 5090735e4f..606b73d184 100644
--- a/manual/creature.texi
+++ b/manual/creature.texi
@@ -165,6 +165,50 @@ This macro was introduced as part of the Large File Support extension
 (LFS).
 @end defvr
 
+@defvr Macro _TIME_BITS
+This macro determines the bit size of @code{time_t} (and therefore the
+bit size of all @code{time_t} derived types and the prototypes of all
+related functions).  If @code{_TIME_BITS} is undefined, the bit size of
+@code{time_t} is architecture dependent.
+
+Possible values of @code{_TIME_BITS}:
+@enumerate
+@item
+@code{_TIME_BITS=64} and port from the outset uses 64-bit
+@code{time_t} and word size equals to @w{64 bits} (e.g. x86_64) - no
+action
+
+@item
+@code{_TIME_BITS=32} and port from the outset uses 32-bit
+@code{time_t} and word size equals to @w{64 bits} (e.g. ARM) - no
+action
+
+@item
+@code{_TIME_BITS=64} and port from the outset uses 64-bit
+@code{time_t} and word size equals to @w{32 bits} (e.g. ARC, RV32)
+- no action
+
+@item
+@code{_TIME_BITS=64} and port from the outset uses 32-bit
+@code{time_t} and word size equals to @w{32 bits} (e.g. ARM)
+- the @code{time_t} is modified to be able to hold 64-bit time.
+
+@item
+For any other use case the compile-time error is emitted.
+@end enumerate
+
+The @code{_TIME_BITS} can be only used when @code{_FILE_OFFSET_BITS=64}
+is also defined.
+
+For the point @b{4} above, calls to proper syscalls depend on the
+Linux kernel version on which the system is running. For Linux kernel
+version above @b{5.1} syscalls supporting 64-bit time are used. Otherwise,
+a fallback code is used with legacy (i.e. 32-bit) syscalls.
+
+By using this macro certain ports gain support for 64-bit time and as
+a result become immune to Y2038 problem.
+@end defvr
+
 @defvr Macro _ISOC99_SOURCE
 @standards{GNU, (none)}
 If this macro is defined, features from ISO C99 are included.  Since
diff --git a/misc/sys/select.h b/misc/sys/select.h
index 188a7fe607..e9c0e8fc20 100644
--- a/misc/sys/select.h
+++ b/misc/sys/select.h
@@ -98,10 +98,23 @@ __BEGIN_DECLS
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+#ifndef __USE_TIME_BITS64
 extern int select (int __nfds, fd_set *__restrict __readfds,
 		   fd_set *__restrict __writefds,
 		   fd_set *__restrict __exceptfds,
 		   struct timeval *__restrict __timeout);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (select,
+                       (int __nfds, fd_set *__restrict __readfds,
+                        fd_set *__restrict __writefds,
+                        fd_set *__restrict __exceptfds,
+                        struct timeval *__restrict __timeout),
+                       __select64);
+# else
+#  define select __select64
+# endif
+#endif
 
 #ifdef __USE_XOPEN2K
 /* Same as above only that the TIMEOUT value is given with higher
@@ -110,11 +123,25 @@ extern int select (int __nfds, fd_set *__restrict __readfds,
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int pselect (int __nfds, fd_set *__restrict __readfds,
 		    fd_set *__restrict __writefds,
 		    fd_set *__restrict __exceptfds,
 		    const struct timespec *__restrict __timeout,
 		    const __sigset_t *__restrict __sigmask);
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (pselect,
+                       (int __nfds, fd_set *__restrict __readfds,
+                        fd_set *__restrict __writefds,
+                        fd_set *__restrict __exceptfds,
+                        const struct timespec *__restrict __timeout,
+                        const __sigset_t *__restrict __sigmask),
+                       __pselect64);
+#  else
+#   define pselect __pselect64
+#  endif
+# endif
 #endif
 
 
diff --git a/posix/sched.h b/posix/sched.h
index d8ce08a3ea..7dd97a49b2 100644
--- a/posix/sched.h
+++ b/posix/sched.h
@@ -74,8 +74,17 @@ extern int sched_get_priority_max (int __algorithm) __THROW;
 extern int sched_get_priority_min (int __algorithm) __THROW;
 
 /* Get the SCHED_RR interval for the named process.  */
+#ifndef __USE_TIME_BITS64
 extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __THROW;
-
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (sched_rr_get_interval,
+                           (__pid_t __pid, struct timespec *__t),
+                           __sched_rr_get_interval64);
+# else
+#  define sched_rr_get_interval __sched_rr_get_interval64
+# endif
+#endif
 
 #ifdef __USE_GNU
 /* Access macros for `cpu_set'.  */
diff --git a/posix/sys/wait.h b/posix/sys/wait.h
index 9e7bb7f154..5325bfa4d2 100644
--- a/posix/sys/wait.h
+++ b/posix/sys/wait.h
@@ -144,14 +144,34 @@ struct rusage;
    nil, store information about the child's resource usage there.  If the
    WUNTRACED bit is set in OPTIONS, return status for stopped children;
    otherwise don't.  */
+# ifndef __USE_TIME_BITS64
 extern __pid_t wait3 (int *__stat_loc, int __options,
 		      struct rusage * __usage) __THROWNL;
+# else
+#  ifdef __REDIRECT_NTHNL
+extern __pid_t __REDIRECT_NTHNL (wait3, (int *__stat_loc, int __options,
+                                         struct rusage * __usage),
+                                 __wait3_time64);
+#  else
+#   define wait3 __wait3_time64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_MISC
+# ifndef __USE_TIME_BITS64
 /* PID is like waitpid.  Other args are like wait3.  */
 extern __pid_t wait4 (__pid_t __pid, int *__stat_loc, int __options,
 		      struct rusage *__usage) __THROWNL;
+# else
+#  ifdef __REDIRECT_NTHNL
+extern __pid_t __REDIRECT_NTHNL (wait4, (__pid_t __pid, int *__stat_loc,
+                                         int __options, struct rusage *__usage),
+                                 __wait4_time64);
+#  else
+#   define wait4 __wait4_time64
+#  endif
+# endif
 #endif /* Use misc.  */
 
 
diff --git a/resolv/netdb.h b/resolv/netdb.h
index 1f36f25d4a..9b242ce3d1 100644
--- a/resolv/netdb.h
+++ b/resolv/netdb.h
@@ -701,6 +701,17 @@ extern int getaddrinfo_a (int __mode, struct gaicb *__list[__restrict_arr],
 extern int gai_suspend (const struct gaicb *const __list[], int __ent,
 			const struct timespec *__timeout);
 
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (gai_suspend, (const struct gaicb *const __list[],
+                                     int __ent,
+                                     const struct timespec *__timeout),
+                       __gai_suspend_time64);
+#  else
+#   define gai_suspend __gai_suspend_time64
+#  endif
+# endif
+
 /* Get the error status of the request REQ.  */
 extern int gai_error (struct gaicb *__req) __THROW;
 
diff --git a/resource/sys/resource.h b/resource/sys/resource.h
index d30379d085..551d25e275 100644
--- a/resource/sys/resource.h
+++ b/resource/sys/resource.h
@@ -88,6 +88,16 @@ extern int setrlimit64 (__rlimit_resource_t __resource,
    and put it in *USAGE.  Returns 0 for success, -1 for failure.  */
 extern int getrusage (__rusage_who_t __who, struct rusage *__usage) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (getrusage, (__rusage_who_t __who,
+                                       struct rusage *__usage),
+                           __getrusage64);
+# else
+# define getrusage __getrusage64
+# endif
+#endif
+
 /* Return the highest priority of any process specified by WHICH and WHO
    (see above); if WHO is zero, the current process, process group, or user
    (as specified by WHO) is used.  A lower priority number means higher
diff --git a/rt/aio.h b/rt/aio.h
index 3a107b2783..72cf626690 100644
--- a/rt/aio.h
+++ b/rt/aio.h
@@ -193,12 +193,17 @@ extern __ssize_t __REDIRECT_NTH (aio_return, (struct aiocb *__aiocbp),
 extern int __REDIRECT_NTH (aio_cancel,
 			   (int __fildes, struct aiocb *__aiocbp),
 			   aio_cancel64);
-
+#  ifdef __USE_TIME_BITS64
+extern int __REDIRECT_NTH (aio_suspend,
+			   (const struct aiocb *const __list[], int __nent,
+			    const struct timespec *__restrict __timeout),
+			   __aio_suspend_time64) __nonnull ((1));
+#  else
 extern int __REDIRECT_NTH (aio_suspend,
 			   (const struct aiocb *const __list[], int __nent,
 			    const struct timespec *__restrict __timeout),
 			   aio_suspend64) __nonnull ((1));
-
+#  endif
 extern int __REDIRECT_NTH (aio_fsync,
 			   (int __operation, struct aiocb *__aiocbp),
 			   aio_fsync64) __nonnull ((2));
@@ -210,7 +215,11 @@ extern int __REDIRECT_NTH (aio_fsync,
 #  define aio_error aio_error64
 #  define aio_return aio_return64
 #  define aio_cancel aio_cancel64
-#  define aio_suspend aio_suspend64
+#  ifdef __USE_TIME_BITS64
+#   define aio_suspend __aio_suspend_time64
+#  else
+#   define aio_suspend aio_suspend64
+#  endif
 #  define aio_fsync aio_fsync64
 # endif
 #endif
diff --git a/rt/mqueue.h b/rt/mqueue.h
index 8a62d99f50..e8a85637e4 100644
--- a/rt/mqueue.h
+++ b/rt/mqueue.h
@@ -71,6 +71,7 @@ extern int mq_send (mqd_t __mqdes, const char *__msg_ptr, size_t __msg_len,
 		    unsigned int __msg_prio) __nonnull ((2));
 
 #ifdef __USE_XOPEN2K
+# ifndef __USE_TIME_BITS64
 /* Receive the oldest from highest priority messages in message queue
    MQDES, stop waiting if ABS_TIMEOUT expires.  */
 extern ssize_t mq_timedreceive (mqd_t __mqdes, char *__restrict __msg_ptr,
@@ -85,6 +86,27 @@ extern int mq_timedsend (mqd_t __mqdes, const char *__msg_ptr,
 			 size_t __msg_len, unsigned int __msg_prio,
 			 const struct timespec *__abs_timeout)
   __nonnull ((2, 5));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (mq_timedreceive, (mqd_t __mqdes,
+                               char *__restrict __msg_ptr,
+                               size_t __msg_len,
+                               unsigned int *__restrict __msg_prio,
+                               const struct timespec *__restrict __abs_timeout),
+                       __mq_timedreceive_time64)
+  __nonnull ((2, 5));
+
+extern int __REDIRECT (mq_timedsend, (mqd_t __mqdes,
+                       const char *__msg_ptr, size_t __msg_len,
+                       unsigned int __msg_prio,
+                       const struct timespec *__abs_timeout),
+		       __mq_timedsend_time64)
+  __nonnull ((2, 5));
+#  else
+#   define mq_timedreceive __mq_timedreceive_time64
+#   define mq_timedsend __mq_timedsend_time64
+#  endif
+# endif
 #endif
 
 /* Define some inlines helping to catch common problems.  */
diff --git a/signal/signal.h b/signal/signal.h
index b17203c99c..5fd93382fc 100644
--- a/signal/signal.h
+++ b/signal/signal.h
@@ -269,10 +269,23 @@ extern int sigwaitinfo (const sigset_t *__restrict __set,
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+#  ifndef __USE_TIME_BITS64
 extern int sigtimedwait (const sigset_t *__restrict __set,
 			 siginfo_t *__restrict __info,
 			 const struct timespec *__restrict __timeout)
      __nonnull ((1));
+#  else
+#   ifdef __REDIRECT
+extern int __REDIRECT (sigtimedwait,
+                       (const sigset_t *__restrict __set,
+                        siginfo_t *__restrict __info,
+                        const struct timespec *__restrict __timeout),
+                       __sigtimedwait64)
+     __nonnull ((1));
+#   else
+#    define sigtimedwait __sigtimedwait64
+#   endif
+#  endif
 
 /* Send signal SIG to the process PID.  Associate data in VAL with the
    signal.  */
diff --git a/socket/sys/socket.h b/socket/sys/socket.h
index 949851a6ce..5577e75b80 100644
--- a/socket/sys/socket.h
+++ b/socket/sys/socket.h
@@ -196,9 +196,20 @@ extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags);
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
 		     unsigned int __vlen, int __flags,
 		     struct timespec *__tmo);
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (recvmmsg, (int __fd, struct mmsghdr *__vmessages,
+                                  unsigned int __vlen, int __flags,
+                                  struct timespec *__tmo),
+                       __recvmmsg64);
+#  else
+#   define recvmmsg __recvmmsg64
+#  endif
+# endif
 #endif
 
 
diff --git a/sysdeps/generic/features-time64.h b/sysdeps/generic/features-time64.h
new file mode 100644
index 0000000000..a5a677f837
--- /dev/null
+++ b/sysdeps/generic/features-time64.h
@@ -0,0 +1,19 @@
+/* Features part to handle 64-bit time_t support.  Generic 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/>.  */
+
+/* The generic configuration only support _TIME_BITS=32.  */
diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h
index a04a3a2754..8f3a41279f 100644
--- a/sysdeps/nptl/pthread.h
+++ b/sysdeps/nptl/pthread.h
@@ -221,6 +221,7 @@ extern int pthread_join (pthread_t __th, void **__thread_return);
    the thread in *THREAD_RETURN, if THREAD_RETURN is not NULL.  */
 extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __THROW;
 
+# ifndef __USE_TIME_BITS64
 /* Make calling thread wait for termination of the thread TH, but only
    until TIMEOUT.  The exit status of the thread is stored in
    *THREAD_RETURN, if THREAD_RETURN is not NULL.
@@ -240,6 +241,23 @@ extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
 extern int pthread_clockjoin_np (pthread_t __th, void **__thread_return,
                                  clockid_t __clockid,
 				 const struct timespec *__abstime);
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (pthread_timedjoin_np,
+                       (pthread_t __th, void **__thread_return,
+                        const struct timespec *__abstime),
+                       __pthread_timedjoin_np64);
+
+extern int __REDIRECT (pthread_clockjoin_np,
+                       (pthread_t __th, void **__thread_return,
+                        clockid_t __clockid,
+                        const struct timespec *__abstime),
+                       __pthread_clockjoin_np64);
+#  else
+#   define pthread_timedjoin_np __pthread_timedjoin_np64
+#   define pthread_clockjoin_np __pthread_clockjoin_np64
+#  endif
+# endif
 #endif
 
 /* Indicate that the thread TH is never to be joined with PTHREAD_JOIN.
@@ -773,16 +791,39 @@ extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
 
 #ifdef __USE_XOPEN2K
 /* Wait until lock becomes available, or specified time passes. */
+# ifndef __USE_TIME_BITS64
 extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
 				    const struct timespec *__restrict
 				    __abstime) __THROWNL __nonnull ((1, 2));
+# else
+#  ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_mutex_timedlock,
+                             (pthread_mutex_t *__restrict __mutex,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_mutex_timedlock64) __nonnull ((1, 2));
+#  else
+#   define pthread_mutex_timedlock __pthread_mutex_timedlock64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
+# ifndef __USE_TIME_BITS64
 extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex,
 				    clockid_t __clockid,
 				    const struct timespec *__restrict
 				    __abstime) __THROWNL __nonnull ((1, 3));
+# else
+#  ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_mutex_clocklock,
+                             (pthread_mutex_t *__restrict __mutex,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_mutex_clocklock64) __nonnull ((1, 3));
+#  else
+#   define pthread_mutex_clocklock __pthread_mutex_clocklock64
+#  endif
+# endif
 #endif
 
 /* Unlock a mutex.  */
@@ -919,16 +960,41 @@ extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
 
 # ifdef __USE_XOPEN2K
 /* Try to acquire read lock for RWLOCK or return after specfied time.  */
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 2));
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_timedrdlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_timedrdlock64)
+    __nonnull ((1, 2));
+#   else
+#    define pthread_rwlock_timedrdlock __pthread_rwlock_timedrdlock64
+#   endif
+#  endif
 # endif
 
 # ifdef __USE_GNU
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock,
 				       clockid_t __clockid,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 3));
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_clockrdlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_clockrdlock64)
+    __nonnull ((1, 3));
+#   else
+#    define pthread_rwlock_clockrdlock __pthread_rwlock_clockrdlock64
+#   endif
+#  endif
 # endif
 
 /* Acquire write lock for RWLOCK.  */
@@ -941,16 +1007,42 @@ extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
 
 # ifdef __USE_XOPEN2K
 /* Try to acquire write lock for RWLOCK or return after specfied time.  */
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 2));
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_timedwrlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_timedwrlock64)
+    __nonnull ((1, 2));
+#   else
+#    define pthread_rwlock_timedwrlock __pthread_rwlock_timedwrlock64
+#   endif
+#  endif
 # endif
 
 # ifdef __USE_GNU
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock,
 				       clockid_t __clockid,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 3));
+
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_clockwrlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_clockwrlock64)
+    __nonnull ((1, 3));
+#   else
+#    define pthread_rwlock_clockwrlock __pthread_rwlock_clockwrlock64
+#   endif
+#  endif
 # endif
 
 /* Unlock RWLOCK.  */
@@ -1027,10 +1119,23 @@ extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
 				   pthread_mutex_t *__restrict __mutex,
 				   const struct timespec *__restrict __abstime)
      __nonnull ((1, 2, 3));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (pthread_cond_timedwait,
+                       (pthread_cond_t *__restrict __cond,
+                        pthread_mutex_t *__restrict __mutex,
+                        const struct timespec *__restrict __abstime),
+                       __pthread_cond_timedwait64)
+     __nonnull ((1, 2, 3));
+#  else
+#   define pthread_cond_timedwait __pthread_cond_timedwait64
+#  endif
+# endif
 
 # ifdef __USE_GNU
 /* Wait for condition variable COND to be signaled or broadcast until
@@ -1040,11 +1145,25 @@ extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
 
    This function is a cancellation point and therefore not marked with
    __THROW. */
+#  ifndef __USE_TIME_BITS64
 extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond,
 				   pthread_mutex_t *__restrict __mutex,
 				   __clockid_t __clock_id,
 				   const struct timespec *__restrict __abstime)
      __nonnull ((1, 2, 4));
+#  else
+#   ifdef __REDIRECT
+extern int __REDIRECT (pthread_cond_clockwait,
+                       (pthread_cond_t *__restrict __cond,
+                        pthread_mutex_t *__restrict __mutex,
+                        __clockid_t __clock_id,
+                        const struct timespec *__restrict __abstime),
+                       __pthread_cond_clockwait64)
+     __nonnull ((1, 2, 4));
+#   else
+#    define pthread_cond_clockwait __pthread_cond_clockwait64
+#   endif
+#  endif
 # endif
 
 /* Functions for handling condition variable attributes.  */
diff --git a/sysdeps/pthread/semaphore.h b/sysdeps/pthread/semaphore.h
index 7fb0e5c103..35780e7c4e 100644
--- a/sysdeps/pthread/semaphore.h
+++ b/sysdeps/pthread/semaphore.h
@@ -59,16 +59,41 @@ extern int sem_wait (sem_t *__sem) __nonnull ((1));
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int sem_timedwait (sem_t *__restrict __sem,
 			  const struct timespec *__restrict __abstime)
   __nonnull ((1, 2));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (sem_timedwait,
+                       (sem_t *__restrict __sem,
+                        const struct timespec *__restrict __abstime),
+                        __sem_timedwait64)
+  __nonnull ((1, 2));
+#  else
+#   define sem_timedwait __sem_timedwait64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
+# ifndef __USE_TIME_BITS64
 extern int sem_clockwait (sem_t *__restrict __sem,
 			  clockid_t clock,
 			  const struct timespec *__restrict __abstime)
   __nonnull ((1, 3));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (sem_clockwait,
+                       (sem_t *__restrict __sem,
+                        clockid_t clock,
+                        const struct timespec *__restrict __abstime),
+                        __sem_clockwait64)
+  __nonnull ((1, 3));
+#  else
+#   define sem_clockwait __sem_clockwait64
+#  endif
+# endif
 #endif
 
 /* Test whether SEM is posted.  */
diff --git a/sysdeps/pthread/threads.h b/sysdeps/pthread/threads.h
index 46929a025e..bf251c9db4 100644
--- a/sysdeps/pthread/threads.h
+++ b/sysdeps/pthread/threads.h
@@ -88,8 +88,18 @@ extern thrd_t thrd_current (void);
    __TIME_POINT.  The current thread may resume if receives a signal.  In
    that case, if __REMAINING is not NULL, the remaining time is stored in
    the object pointed by it.  */
+#ifndef __USE_TIME_BITS64
 extern int thrd_sleep (const struct timespec *__time_point,
 		       struct timespec *__remaining);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (thrd_sleep, (const struct timespec *__time_point,
+                                    struct timespec *__remaining),
+                       __thrd_sleep64);
+# else
+#  define thrd_sleep __thrd_sleep64
+# endif
+#endif
 
 /* Terminate current thread execution, cleaning up any thread local
    storage and freeing resources.  Returns the value specified in __RES.  */
@@ -131,8 +141,19 @@ extern int mtx_lock (mtx_t *__mutex);
 /* Block the current thread until the mutex pointed by __MUTEX is unlocked
    or time pointed by __TIME_POINT is reached.  In case the mutex is unlock,
    the current thread will not be blocked.  */
+#ifndef __USE_TIME_BITS64
 extern int mtx_timedlock (mtx_t *__restrict __mutex,
 			  const struct timespec *__restrict __time_point);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (mtx_timedlock, (mtx_t *__restrict __mutex,
+                                       const struct timespec *__restrict
+                                       __time_point),
+                       __mtx_timedlock64);
+# else
+#  define mtx_timedlock __mtx_timedlock64
+# endif
+#endif
 
 /* Try to lock the mutex pointed by __MUTEX without blocking.  If the mutex
    is free the current threads takes control of it, otherwise it returns
@@ -171,9 +192,21 @@ extern int cnd_wait (cnd_t *__cond, mtx_t *__mutex);
 /* Block current thread on the condition variable until condition variable
    pointed by __COND is signaled or time pointed by __TIME_POINT is
    reached.  */
+#ifndef __USE_TIME_BITS64
 extern int cnd_timedwait (cnd_t *__restrict __cond,
 			  mtx_t *__restrict __mutex,
 			  const struct timespec *__restrict __time_point);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (cnd_timedwait, (cnd_t *__restrict __cond,
+                                       mtx_t *__restrict __mutex,
+                                       const struct timespec *__restrict
+                                       __time_point),
+                       __cnd_timedwait64);
+# else
+#  define cnd_timedwait __cnd_timedwait64
+# endif
+#endif
 
 /* Destroy condition variable pointed by __cond and free all of its
    resources.  */
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index 257ccbd3b4..45d31a46bc 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -1,3 +1,4 @@
+%include <time64-compat.h>
 libc {
   GLIBC_2.0 {
     # functions used in inline functions or macros
@@ -168,6 +169,75 @@ libc {
     getdents64; gettid; tgkill;
   }
   GLIBC_2.32 {
+  }
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    # io
+    __ppoll64;
+    __utime64;
+    __stat64_time64;
+    __lstat64_time64;
+    __fstat64_time64;
+    __fstatat64_time64;
+    # misc
+    __futimes64;
+    __futimesat64;
+    __lutimes64;
+    __select64;
+    __utimes64;
+    # posix
+    __nanosleep64;
+    __pselec64;
+    __wait3_time64;
+    __wait4_time64;
+    # nptl
+    __thrd_sleep64;
+    # resouces
+    __getrusage64;
+    # signal
+    __sigtimedwait64;
+    # sysvipc
+    __msgctl64;
+    __semctl64;
+    __semtimedop64;
+    __shmctl64;
+    # time
+    ___adjtimex64;
+    __adjtime64;
+    __clock_adjtime64;
+    __clock_getres64;
+    __clock_gettime64;
+    __clock_nanosleep_time64;
+    __clock_settime64;
+    __ctime64;
+    __ctime64_r;
+    __difftime64;
+    __futimens64;
+    __localtime64;
+    __localtime64_r;
+    __getitimer64;
+    __gettimeofday64;
+    __gmtime64;
+    __gmtime64_r;
+    __mktime64;
+    __nanosleep64;
+    __setitimer64;
+    __settimeofday64;
+    __time64;
+    __timegm64;
+    __timespec_get64;
+    __utimensat64;
+     __utimes64;
+    # misc
+    __ntp_gettime64;
+    __ntp_gettimex64;
+    __pselect64;
+    __recvmmsg64;
+    __sched_rr_get_interval64;
+    __timerfd_gettime64;
+    __timerfd_settime64;
+%endif
   }
   GLIBC_PRIVATE {
     # functions used in other libraries
@@ -182,3 +252,46 @@ libc {
     __netlink_assert_response;
   }
 }
+
+libpthread {
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    __cnd_timedwait64;
+    __mtx_timedlock64;
+    __pthread_clockjoin_np64;
+    __pthread_cond_timedwait64;
+    __pthread_cond_clockwait64;
+    __pthread_mutex_timedlock64;
+    __pthread_mutex_clocklock64;
+    __pthread_rwlock_clockrdlock64;
+    __pthread_rwlock_clockwrlock64;
+    __pthread_rwlock_timedrdlock64;
+    __pthread_rwlock_timedwrlock64;
+    __pthread_timedjoin_np64;
+    __sem_clockwait64;
+    __sem_timedwait64;
+%endif
+  }
+}
+
+librt {
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    __aio_suspend_time64;
+    __mq_timedsend_time64;
+    __mq_timedreceive_time64;
+    __timer_gettime64;
+    __timer_settime64;
+%endif
+  }
+}
+
+libanl {
+%ifdef TIME64_NON_DEFAULT
+  GLIBC_2.34 {
+    __gai_suspend_time64;
+  }
+%endif
+}
diff --git a/sysdeps/unix/sysv/linux/arm/be/libanl.abilist b/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 8111b49085..d63e0dee75 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -155,7 +155,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index b6c26c7a50..3fe358cc31 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -33,6 +33,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libanl.abilist b/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 4dba1f2f46..1a0f0d1312 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -152,7 +152,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index b6c26c7a50..3fe358cc31 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -33,6 +33,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/arm/time64-compat.h b/sysdeps/unix/sysv/linux/arm/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/arm/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/bits/msq.h b/sysdeps/unix/sysv/linux/bits/msq.h
index 3313b69d78..7c9c479551 100644
--- a/sysdeps/unix/sysv/linux/bits/msq.h
+++ b/sysdeps/unix/sysv/linux/bits/msq.h
@@ -26,6 +26,7 @@ typedef __syscall_ulong_t msgqnum_t;
 typedef __syscall_ulong_t msglen_t;
 
 #include <bits/types/struct_msqid_ds.h>
+#include <bits/types/struct_msqid64_ds.h>
 
 /* Define options for message queue functions.  */
 #define MSG_NOERROR	010000	/* no error if message is too big */
diff --git a/sysdeps/unix/sysv/linux/bits/sem.h b/sysdeps/unix/sysv/linux/bits/sem.h
index ad13287e66..776524b876 100644
--- a/sysdeps/unix/sysv/linux/bits/sem.h
+++ b/sysdeps/unix/sysv/linux/bits/sem.h
@@ -22,6 +22,7 @@
 #include <sys/types.h>
 #include <bits/timesize.h>
 #include <bits/types/struct_semid_ds.h>
+#include <bits/types/struct_semid64_ds.h>
 
 /* Flags for `semop'.  */
 #define SEM_UNDO	0x1000		/* undo the operation on exit */
diff --git a/sysdeps/unix/sysv/linux/bits/shm.h b/sysdeps/unix/sysv/linux/bits/shm.h
index a50c79d7be..454fc3f366 100644
--- a/sysdeps/unix/sysv/linux/bits/shm.h
+++ b/sysdeps/unix/sysv/linux/bits/shm.h
@@ -43,6 +43,7 @@ __BEGIN_DECLS
 typedef __syscall_ulong_t shmatt_t;
 
 #include <bits/types/struct_shmid_ds.h>
+#include <bits/types/struct_shmid64_ds.h>
 
 #ifdef __USE_MISC
 
diff --git a/sysdeps/unix/sysv/linux/bits/time.h b/sysdeps/unix/sysv/linux/bits/time.h
index ee5a8b3ef4..d0c98a7864 100644
--- a/sysdeps/unix/sysv/linux/bits/time.h
+++ b/sysdeps/unix/sysv/linux/bits/time.h
@@ -77,6 +77,16 @@ __BEGIN_DECLS
 /* Tune a POSIX clock.  */
 extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (clock_adjtime, (__clockid_t __clock_id,
+                                           struct timex *__utx),
+                           __clock_adjtime64);
+# else
+# define clock_adjtime __clock_adjtime64
+# endif
+#endif
+
 __END_DECLS
 #endif /* use GNU */
 
diff --git a/sysdeps/unix/sysv/linux/csky/libanl.abilist b/sysdeps/unix/sysv/linux/csky/libanl.abilist
index 416a6f8ddb..01f2e6cbf0 100644
--- a/sysdeps/unix/sysv/linux/csky/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.29 gai_cancel F
 GLIBC_2.29 gai_error F
 GLIBC_2.29 gai_suspend F
 GLIBC_2.29 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index a5ff3d90ca..120a3fc1ce 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -2115,7 +2115,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index 6ce59276a7..51d5822091 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -211,3 +211,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index c6690ef7c1..b60deca65a 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.29 timer_delete F
 GLIBC_2.29 timer_getoverrun F
 GLIBC_2.29 timer_gettime F
 GLIBC_2.29 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/csky/time64-compat.h b/sysdeps/unix/sysv/linux/csky/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/csky/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/features-time64.h b/sysdeps/unix/sysv/linux/features-time64.h
new file mode 100644
index 0000000000..c6a0a1874c
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/features-time64.h
@@ -0,0 +1,37 @@
+/* Features part to handle 64-bit time_t support.
+   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/>.  */
+
+/* We need to know the word size in order to check the time size.  */
+#include <bits/wordsize.h>
+#include <bits/timesize.h>
+
+#if defined _TIME_BITS
+# if _TIME_BITS == 64
+#  if ! defined (_FILE_OFFSET_BITS) || _FILE_OFFSET_BITS != 64
+#   error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64"
+#  elif __TIMESIZE == 32
+#   define __USE_TIME_BITS64	1
+#  endif
+# elif _TIME_BITS == 32
+#  if __TIMESIZE > 32
+#   error "_TIME_BITS=32 is not compatible with __TIMESIZE > 32"
+#  endif
+# else
+#  error Invalid _TIME_BITS value (can only be 32 or 64 bits)
+# endif
+#endif
diff --git a/sysdeps/unix/sysv/linux/hppa/libanl.abilist b/sysdeps/unix/sysv/linux/hppa/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/hppa/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 89a0f11166..77c7d2faf3 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2074,7 +2074,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index cabc5af858..0cdb30a3c1 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -218,6 +218,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/hppa/time64-compat.h b/sysdeps/unix/sysv/linux/hppa/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/hppa/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/i386/Makefile b/sysdeps/unix/sysv/linux/i386/Makefile
index da716e2c1b..8d5efb4f65 100644
--- a/sysdeps/unix/sysv/linux/i386/Makefile
+++ b/sysdeps/unix/sysv/linux/i386/Makefile
@@ -1,6 +1,8 @@
 # The default ABI is 32.
 default-abi := 32
 
+extra-version := Versions-y2038
+
 ifeq ($(subdir),misc)
 sysdep_routines += ioperm iopl vm86
 
diff --git a/sysdeps/unix/sysv/linux/i386/libanl.abilist b/sysdeps/unix/sysv/linux/i386/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/i386/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index a7c408d18c..7d1a9691e7 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2241,7 +2241,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index 18177307c8..b3a825d60e 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -226,6 +226,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/i386/time64-compat.h b/sysdeps/unix/sysv/linux/i386/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/include/sys/msg.h b/sysdeps/unix/sysv/linux/include/sys/msg.h
index 522903f818..c460be0dc9 100644
--- a/sysdeps/unix/sysv/linux/include/sys/msg.h
+++ b/sysdeps/unix/sysv/linux/include/sys/msg.h
@@ -7,8 +7,6 @@ extern ssize_t __libc_msgrcv (int msqid, void *msgp, size_t msgsz,
 extern int __libc_msgsnd (int msqid, const void *msgp, size_t msgsz,
 			  int msgflg);
 
-# include <bits/types/struct_msqid64_ds.h>
-
 # if __TIMESIZE == 64
 #  define __msgctl64 __msgctl
 # else
diff --git a/sysdeps/unix/sysv/linux/include/sys/shm.h b/sysdeps/unix/sysv/linux/include/sys/shm.h
index 530a1cdfc9..85177a632d 100644
--- a/sysdeps/unix/sysv/linux/include/sys/shm.h
+++ b/sysdeps/unix/sysv/linux/include/sys/shm.h
@@ -3,8 +3,6 @@
 
 #ifndef _ISOMAC
 
-# include <bits/types/struct_shmid64_ds.h>
-
 # if __TIMESIZE == 64
 #  define __shmctl64 __shmctl
 # else
diff --git a/sysdeps/unix/sysv/linux/include/sys/timex.h b/sysdeps/unix/sysv/linux/include/sys/timex.h
index e136ed172e..c554248ed9 100644
--- a/sysdeps/unix/sysv/linux/include/sys/timex.h
+++ b/sysdeps/unix/sysv/linux/include/sys/timex.h
@@ -23,10 +23,12 @@
 
 # ifndef _ISOMAC
 
+extern int __adjtimex (struct timex *__ntx);
 libc_hidden_proto (__adjtimex)
 
 #  include <time.h>
 #  include <struct___timeval64.h>
+
 /* Local definition of 64 bit time supporting timex struct */
 #  if __TIMESIZE == 64
 #   define __timex64 timex
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index e1171a34aa..da00a3d3c3 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -156,7 +156,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index b6c26c7a50..3fe358cc31 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -33,6 +33,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index a521506506..3e0f00210f 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2186,7 +2186,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index 18177307c8..b3a825d60e 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -226,6 +226,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/m68k/time64-compat.h b/sysdeps/unix/sysv/linux/m68k/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/m68k/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
index 67c7554803..c06e33a1cf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.18 gai_cancel F
 GLIBC_2.18 gai_error F
 GLIBC_2.18 gai_suspend F
 GLIBC_2.18 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index aba642460c..9bed39a8e8 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2166,7 +2166,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index 60397187b6..855c469c63 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -218,3 +218,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index 889dfbc0ee..1b8fc10087 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timer_gettime F
 GLIBC_2.18 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
index 67c7554803..c06e33a1cf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.18 gai_cancel F
 GLIBC_2.18 gai_error F
 GLIBC_2.18 gai_suspend F
 GLIBC_2.18 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index d3d653d144..872321bbab 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2163,7 +2163,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index 60397187b6..855c469c63 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -218,3 +218,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 889dfbc0ee..1b8fc10087 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timer_gettime F
 GLIBC_2.18 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/time64-compat.h b/sysdeps/unix/sysv/linux/microblaze/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/microblaze/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index a4ce56c34f..77dcc8ab7d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2157,7 +2157,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index b35d7f19ca..887a32a376 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -227,6 +227,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index 1539c1cef9..c4dd28e3b2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 51fbf0b1e1..c41f85ce01 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2155,7 +2155,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h b/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 5642781479..4208f9df82 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2163,7 +2163,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
index b35d7f19ca..887a32a376 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
@@ -227,6 +227,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index 1539c1cef9..c4dd28e3b2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h b/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/nios2/libanl.abilist b/sysdeps/unix/sysv/linux/nios2/libanl.abilist
index 6ff9c2d94e..6b080bd075 100644
--- a/sysdeps/unix/sysv/linux/nios2/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.21 gai_cancel F
 GLIBC_2.21 gai_error F
 GLIBC_2.21 gai_suspend F
 GLIBC_2.21 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 848cb2e599..ff0bb57cb6 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2204,7 +2204,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 924ad6e451..18407317e6 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -218,3 +218,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index b4ae7a2dc2..2458614125 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.21 timer_delete F
 GLIBC_2.21 timer_getoverrun F
 GLIBC_2.21 timer_gettime F
 GLIBC_2.21 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/time64-compat.h b/sysdeps/unix/sysv/linux/nios2/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/nios2/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 93e83fa602..57f1fe012a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2213,7 +2213,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 13b41dafb6..711812931d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -228,6 +228,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index ec0b6d69b1..6c9fa9c098 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2246,7 +2246,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 7bc5c8866b..d357619c55 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2211,7 +2211,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 lastlog_read F
 GLIBC_2.34 lastlog_write F
 GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 0a60f1cca2..28db1e4b6d 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -228,6 +228,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h b/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/semctl.c b/sysdeps/unix/sysv/linux/semctl.c
index 1043b2b80d..bb2690d30f 100644
--- a/sysdeps/unix/sysv/linux/semctl.c
+++ b/sysdeps/unix/sysv/linux/semctl.c
@@ -21,7 +21,6 @@
 #include <ipc_priv.h>
 #include <sysdep.h>
 #include <shlib-compat.h>
-#include <bits/types/struct_semid64_ds.h>  /* For __semid64_ds.  */
 #include <linux/posix_types.h>             /* For __kernel_mode_t.  */
 
 /* The struct used to issue the syscall.  For architectures that assume
diff --git a/sysdeps/unix/sysv/linux/sh/be/libanl.abilist b/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 06143b0283..725952a763 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2081,7 +2081,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index cabc5af858..0cdb30a3c1 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -218,6 +218,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libanl.abilist b/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index eab2af349b..7f07b96287 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2078,7 +2078,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index cabc5af858..0cdb30a3c1 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -218,6 +218,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sh/time64-compat.h b/sysdeps/unix/sysv/linux/sh/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sh/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 4783a8fa97..3b7af990d4 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2202,7 +2202,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index 390b6384d0..b5f763d9fd 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -228,6 +228,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index 38f0aad791..fb2769e87b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -34,6 +34,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h b/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/sys/timerfd.h b/sysdeps/unix/sysv/linux/sys/timerfd.h
index 4ad64c2259..790b9d5be6 100644
--- a/sysdeps/unix/sysv/linux/sys/timerfd.h
+++ b/sysdeps/unix/sysv/linux/sys/timerfd.h
@@ -47,9 +47,31 @@ extern int timerfd_settime (int __ufd, int __flags,
 			    const struct itimerspec *__utmr,
 			    struct itimerspec *__otmr) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timerfd_settime,
+                           (int __ufd, int __flags,
+                            const struct itimerspec *__restrict __value,
+                            struct itimerspec *__restrict __ovalue),
+                           __timerfd_settime64);
+# else
+# define timerfd_settime __timerfd_settime64
+# endif
+#endif
+
 /* Return the next expiration time of UFD.  */
 extern int timerfd_gettime (int __ufd, struct itimerspec *__otmr) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timerfd_gettime, (int __ufd,
+                                             struct itimerspec *__otmr),
+                           __timerfd_gettime64);
+# else
+# define timerfd_gettime __timerfd_gettime64
+# endif
+#endif
+
 __END_DECLS
 
 #endif /* sys/timerfd.h */
diff --git a/sysdeps/unix/sysv/linux/sys/timex.h b/sysdeps/unix/sysv/linux/sys/timex.h
index 37931ff496..298f0ca6e7 100644
--- a/sysdeps/unix/sysv/linux/sys/timex.h
+++ b/sysdeps/unix/sysv/linux/sys/timex.h
@@ -54,17 +54,33 @@ struct ntptimeval
 
 __BEGIN_DECLS
 
-extern int __adjtimex (struct timex *__ntx) __THROW;
+#ifndef __USE_TIME_BITS64
 extern int adjtimex (struct timex *__ntx) __THROW;
 
-#ifdef __REDIRECT_NTH
+# ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv),
-			   ntp_gettimex);
+                           __ntp_gettime64);
+# else
+#  define ntp_gettime ntp_gettimex
+# endif
+extern int ntp_adjtime (struct timex *__tntx) __THROW;
 #else
-extern int ntp_gettimex (struct ntptimeval *__ntv) __THROW;
-# define ntp_gettime ntp_gettimex
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (adjtimex, (struct timex *__ntx),
+                           ___adjtimex64);
+extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv),
+                           __ntp_gettime64);
+extern int __REDIRECT_NTH (ntp_gettimex, (struct ntptimeval *__ntv),
+                           __ntp_gettimex64);
+extern int __REDIRECT_NTH (ntp_adjtime, (struct timex *__ntx),
+                           ___adjtimex64);
+# else
+#  define adjtimex ___adjtimex64
+#  define ntp_adjtime ___adjtimex64
+#  define ntp_gettime __ntp_gettime64
+#  define ntp_gettimex __ntp_gettimex64
+# endif
 #endif
-extern int ntp_adjtime (struct timex *__tntx) __THROW;
 
 __END_DECLS
 
diff --git a/sysdeps/unix/sysv/linux/time64-compat.h b/sysdeps/unix/sysv/linux/time64-compat.h
new file mode 100644
index 0000000000..e44b6b68e3
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/time64-compat.h
@@ -0,0 +1,3 @@
+/* Header included by Versions to generate the 64 bit time_t compat symbols.
+   Legacy ABIs with default 32 bit time support define TIME64_NON_DEFAULT to
+   generate the 64 bit symbols.  */
diff --git a/sysvipc/sys/msg.h b/sysvipc/sys/msg.h
index 9ddedf5e15..f31a43757d 100644
--- a/sysvipc/sys/msg.h
+++ b/sysvipc/sys/msg.h
@@ -58,7 +58,17 @@ struct msgbuf
 __BEGIN_DECLS
 
 /* Message queue control operation.  */
+#ifndef __USE_TIME_BITS64
 extern int msgctl (int __msqid, int __cmd, struct msqid_ds *__buf) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (msgctl,
+                           (int __msqid, int __cmd, struct msqid_ds *__buf),
+                           __msgctl64);
+# else
+#  define msgctl __msgctl64
+# endif
+#endif
 
 /* Get messages queue.  */
 extern int msgget (key_t __key, int __msgflg) __THROW;
diff --git a/sysvipc/sys/sem.h b/sysvipc/sys/sem.h
index 03b65dff21..4eb4c51bbe 100644
--- a/sysvipc/sys/sem.h
+++ b/sysvipc/sys/sem.h
@@ -48,7 +48,17 @@ struct sembuf
 __BEGIN_DECLS
 
 /* Semaphore control operation.  */
+#ifndef __USE_TIME_BITS64
 extern int semctl (int __semid, int __semnum, int __cmd, ...) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (semctl,
+                           (int __semid, int __semnum, int __cmd, ...),
+                           __semctl64);
+# else
+#  define semctl __semctl64
+# endif
+#endif
 
 /* Get semaphore.  */
 extern int semget (key_t __key, int __nsems, int __semflg) __THROW;
@@ -58,8 +68,19 @@ extern int semop (int __semid, struct sembuf *__sops, size_t __nsops) __THROW;
 
 #ifdef __USE_GNU
 /* Operate on semaphore with timeout.  */
+# ifndef __USE_TIME_BITS64
 extern int semtimedop (int __semid, struct sembuf *__sops, size_t __nsops,
 		       const struct timespec *__timeout) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (semtimedop, (int __semid, struct sembuf *__sops,
+                                        size_t __nsops,
+                                        const struct timespec *__timeout),
+                           __semtimedop64);
+#  else
+#   define semtimedop __semtimedop64
+#  endif
+# endif
 #endif
 
 __END_DECLS
diff --git a/sysvipc/sys/shm.h b/sysvipc/sys/shm.h
index 7506ba67bf..b09e0497e6 100644
--- a/sysvipc/sys/shm.h
+++ b/sysvipc/sys/shm.h
@@ -46,7 +46,17 @@ __BEGIN_DECLS
    facility.  The definition is found in XPG4.2.  */
 
 /* Shared memory control operation.  */
+#ifndef __USE_TIME_BITS64
 extern int shmctl (int __shmid, int __cmd, struct shmid_ds *__buf) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (shmctl,
+                           (int __shmid, int __cmd, struct shmid_ds *__buf),
+                           __shmctl64);
+# else
+#  define shmctl __shmctl64
+# endif
+#endif
 
 /* Get shared memory segment.  */
 extern int shmget (key_t __key, size_t __size, int __shmflg) __THROW;
diff --git a/time/sys/time.h b/time/sys/time.h
index 42f91f186b..d21411c0b4 100644
--- a/time/sys/time.h
+++ b/time/sys/time.h
@@ -63,10 +63,21 @@ struct timezone
    use localtime etc. instead.
    This function itself is semi-obsolete;
    most callers should use time or clock_gettime instead. */
+#ifndef __USE_TIME_BITS64
 extern int gettimeofday (struct timeval *__restrict __tv,
 			 void *__restrict __tz) __THROW __nonnull ((1));
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (gettimeofday, (struct timeval *__restrict __tv,
+                                          void *__restrict __tz),
+                           __gettimeofday64) __nonnull ((1));
+# else
+#  define gettimeofday __gettimeofday64
+# endif
+#endif
 
 #ifdef __USE_MISC
+# ifndef __USE_TIME_BITS64
 /* Set the current time of day and timezone information.
    This call is restricted to the super-user.
    Setting the timezone in this way is obsolete, but we don't yet
@@ -82,6 +93,20 @@ extern int settimeofday (const struct timeval *__tv,
    This call is restricted to the super-user.  */
 extern int adjtime (const struct timeval *__delta,
 		    struct timeval *__olddelta) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (settimeofday, (const struct timeval *__tv,
+                                          const struct timezone *__tz),
+                           __settimeofday64);
+
+extern int __REDIRECT_NTH (adjtime, (const struct timeval *__delta,
+                                     struct timeval *__olddelta),
+                           __adjtime64);
+#  else
+#   define settimeofday __settimeofday64
+#   define adjtime __adjtime64
+#  endif
+# endif
 #endif
 
 
@@ -118,6 +143,7 @@ typedef enum __itimer_which __itimer_which_t;
 typedef int __itimer_which_t;
 #endif
 
+#ifndef __USE_TIME_BITS64
 /* Set *VALUE to the current setting of timer WHICH.
    Return 0 on success, -1 on errors.  */
 extern int getitimer (__itimer_which_t __which,
@@ -136,21 +162,66 @@ extern int setitimer (__itimer_which_t __which,
 extern int utimes (const char *__file, const struct timeval __tvp[2])
      __THROW __nonnull ((1));
 
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (getitimer, (__itimer_which_t __which,
+                                       struct itimerval *__value),
+                           __getitimer64);
+
+extern int __REDIRECT_NTH (setitimer, (__itimer_which_t __which,
+                                       const struct itimerval *__restrict __new,
+                                       struct itimerval *__restrict __old),
+                           __setitimer64);
+
+extern int __REDIRECT_NTH (utimes, (const char *__file,
+                                    const struct timeval __tvp[2]),
+                           __utimes64) __nonnull ((1));
+# else
+#  define getitimer __getitimer64
+#  define setitimer __setitimer64
+#  define utimes __utimes64
+# endif
+#endif
+
 #ifdef __USE_MISC
+# ifndef __USE_TIME_BITS64
 /* Same as `utimes', but does not follow symbolic links.  */
 extern int lutimes (const char *__file, const struct timeval __tvp[2])
      __THROW __nonnull ((1));
 
 /* Same as `utimes', but takes an open file descriptor instead of a name.  */
 extern int futimes (int __fd, const struct timeval __tvp[2]) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (lutimes, (const char *__file,
+                                     const struct timeval __tvp[2]),
+                           __lutimes64) __nonnull ((1));
+
+extern int __REDIRECT_NTH (futimes, (int __fd, const struct timeval __tvp[2]),
+                           __futimes64);
+#  else
+#   define lutimes __lutimes64
+#   define futimes __futimes64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
+# ifndef __USE_TIME_BITS64
 /* Change the access time of FILE relative to FD to TVP[0] and the
    modification time of FILE to TVP[1].  If TVP is a null pointer, use
    the current time instead.  Returns 0 on success, -1 on errors.  */
 extern int futimesat (int __fd, const char *__file,
 		      const struct timeval __tvp[2]) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (futimesat, (int __fd, const char *__file,
+                                       const struct timeval __tvp[2]),
+                           __futimesat64);
+#  else
+#   define futimesat __futimesat64
+#  endif
+# endif
 #endif
 
 
diff --git a/time/time.h b/time/time.h
index 3bf206be0b..91b81cb1c6 100644
--- a/time/time.h
+++ b/time/time.h
@@ -71,6 +71,7 @@ __BEGIN_DECLS
    The result / CLOCKS_PER_SEC is program time in seconds.  */
 extern clock_t clock (void) __THROW;
 
+#ifndef __USE_TIME_BITS64
 /* Return the current time and put it in *TIMER if TIMER is not NULL.  */
 extern time_t time (time_t *__timer) __THROW;
 
@@ -80,7 +81,18 @@ extern double difftime (time_t __time1, time_t __time0)
 
 /* Return the `time_t' representation of TP and normalize TP.  */
 extern time_t mktime (struct tm *__tp) __THROW;
-
+#else
+# ifdef __REDIRECT_NTH
+extern time_t __REDIRECT_NTH (time, (time_t *__timer), __time64);
+extern double __REDIRECT_NTH (difftime, (time_t __time1, time_t __time0),
+                              __difftime64) __attribute__ ((__const__));
+extern time_t __REDIRECT_NTH (mktime, (struct tm *__tp), __mktime64);
+# else
+#  define time __time64
+#  define difftime __difftime64
+#  define mktime __mktime64
+# endif
+#endif
 
 /* Format TP into S according to FORMAT.
    Write no more than MAXSIZE characters and return the number
@@ -114,6 +126,7 @@ extern char *strptime_l (const char *__restrict __s,
 #endif
 
 
+#ifndef __USE_TIME_BITS64
 /* Return the `struct tm' representation of *TIMER
    in Universal Coordinated Time (aka Greenwich Mean Time).  */
 extern struct tm *gmtime (const time_t *__timer) __THROW;
@@ -122,7 +135,20 @@ extern struct tm *gmtime (const time_t *__timer) __THROW;
    of *TIMER in the local timezone.  */
 extern struct tm *localtime (const time_t *__timer) __THROW;
 
+#else
+# ifdef __REDIRECT_NTH
+extern struct tm*__REDIRECT_NTH (gmtime, (const time_t *__timer), __gmtime64);
+extern struct tm *__REDIRECT_NTH (localtime, (const time_t *__timer),
+				  __localtime64);
+# else
+#  define gmtime __gmtime64
+#  define localtime __localtime64
+# endif
+#endif
+
+
 #if defined __USE_POSIX || __GLIBC_USE (ISOC2X)
+# ifndef __USE_TIME_BITS64
 /* Return the `struct tm' representation of *TIMER in UTC,
    using *TP to store the result.  */
 extern struct tm *gmtime_r (const time_t *__restrict __timer,
@@ -132,6 +158,20 @@ extern struct tm *gmtime_r (const time_t *__restrict __timer,
    using *TP to store the result.  */
 extern struct tm *localtime_r (const time_t *__restrict __timer,
 			       struct tm *__restrict __tp) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern struct tm*__REDIRECT_NTH (gmtime_r, (const time_t *__restrict __timer,
+                                            struct tm *__restrict __tp),
+                                 __gmtime64_r);
+
+extern struct tm*__REDIRECT_NTH (localtime_r, (const time_t *__restrict __t,
+                                               struct tm *__restrict __tp),
+                                 __localtime64_r);
+#  else
+#   define gmtime_r __gmtime64_r
+#   define localtime_r __localtime_r
+#  endif
+# endif
 #endif	/* POSIX || C2X */
 
 /* Return a string of the form "Day Mon dd hh:mm:ss yyyy\n"
@@ -139,7 +179,15 @@ extern struct tm *localtime_r (const time_t *__restrict __timer,
 extern char *asctime (const struct tm *__tp) __THROW;
 
 /* Equivalent to `asctime (localtime (timer))'.  */
+#ifndef __USE_TIME_BITS64
 extern char *ctime (const time_t *__timer) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern char *__REDIRECT_NTH (ctime, (const time_t *__timer), __ctime64);
+# else
+#  define ctime __ctime64
+# endif
+#endif
 
 #if defined __USE_POSIX || __GLIBC_USE (ISOC2X)
 /* Reentrant versions of the above functions.  */
@@ -150,8 +198,18 @@ extern char *asctime_r (const struct tm *__restrict __tp,
 			char *__restrict __buf) __THROW;
 
 /* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'.  */
+#ifndef __USE_TIME_BITS64
 extern char *ctime_r (const time_t *__restrict __timer,
 		      char *__restrict __buf) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern char *__REDIRECT_NTH (ctime_r, (const time_t *__restrict __timer,
+                                       char *__restrict __buf), __ctime64_r);
+# else
+#  define ctime_r __ctime64_r
+# endif
+#endif
+
 #endif	/* POSIX || C2X */
 
 
@@ -186,11 +244,19 @@ extern long int timezone;
 /* Miscellaneous functions many Unices inherited from the public domain
    localtime package.  These are included only for compatibility.  */
 
+#ifndef __USE_TIME_BITS64
 /* Like `mktime', but for TP represents Universal Time, not local time.  */
 extern time_t timegm (struct tm *__tp) __THROW;
-
 /* Another name for `mktime'.  */
 extern time_t timelocal (struct tm *__tp) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern time_t __REDIRECT_NTH (timegm, (struct tm *__tp), __timegm64);
+extern time_t __REDIRECT_NTH (timelocal, (struct tm *__tp), __mktime64);
+# else
+#  define timegm __timegm64
+# endif
+#endif
 
 /* Return the number of days in YEAR.  */
 extern int dysize (int __year) __THROW  __attribute__ ((__const__));
@@ -198,6 +264,7 @@ extern int dysize (int __year) __THROW  __attribute__ ((__const__));
 
 
 #ifdef __USE_POSIX199309
+# ifndef __USE_TIME_BITS64
 /* Pause execution for a number of nanoseconds.
 
    This function is a cancellation point and therefore not marked with
@@ -205,7 +272,6 @@ extern int dysize (int __year) __THROW  __attribute__ ((__const__));
 extern int nanosleep (const struct timespec *__requested_time,
 		      struct timespec *__remaining);
 
-
 /* Get resolution of clock CLOCK_ID.  */
 extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __THROW;
 
@@ -215,15 +281,46 @@ extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW;
 /* Set clock CLOCK_ID to value TP.  */
 extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp)
      __THROW;
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (nanosleep, (const struct timespec *__requested_time,
+                                   struct timespec *__remaining),
+                       __nanosleep64);
+extern int __REDIRECT_NTH (clock_getres, (clockid_t __clock_id,
+                                          struct timespec *__res),
+                           __clock_getres64);
+extern int __REDIRECT_NTH (clock_gettime, (clockid_t __clock_id, struct
+                                           timespec *__tp), __clock_gettime64);
+extern int __REDIRECT_NTH (clock_settime, (clockid_t __clock_id, const struct
+                                           timespec *__tp), __clock_settime64);
+#  else
+#   define nanosleep __nanosleep64
+#   define clock_getres __clock_getres64
+#   define clock_gettime __clock_gettime64
+#   define clock_settime __clock_settime64
+#  endif
+# endif
+
 
 # ifdef __USE_XOPEN2K
 /* High-resolution sleep with the specified clock.
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+#  ifndef __USE_TIME_BITS64
 extern int clock_nanosleep (clockid_t __clock_id, int __flags,
 			    const struct timespec *__req,
 			    struct timespec *__rem);
+#  else
+#   ifdef __REDIRECT
+extern int __REDIRECT (clock_nanosleep, (clockid_t __clock_id, int __flags,
+                                         const struct timespec *__req,
+                                         struct timespec *__rem),
+                       __clock_nanosleep_time64);
+#   else
+#    define clock_nanosleep __clock_nanosleep_time64
+#   endif
+#  endif
 
 /* Return clock ID for CPU-time clock.  */
 extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __THROW;
@@ -239,6 +336,7 @@ extern int timer_create (clockid_t __clock_id,
 extern int timer_delete (timer_t __timerid) __THROW;
 
 /* Set timer TIMERID to VALUE, returning old value in OVALUE.  */
+# ifndef __USE_TIME_BITS64
 extern int timer_settime (timer_t __timerid, int __flags,
 			  const struct itimerspec *__restrict __value,
 			  struct itimerspec *__restrict __ovalue) __THROW;
@@ -246,6 +344,21 @@ extern int timer_settime (timer_t __timerid, int __flags,
 /* Get current value of timer TIMERID and store it in VALUE.  */
 extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
      __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (timer_settime, (timer_t __timerid, int __flags,
+     const struct itimerspec *__restrict __value,
+     struct itimerspec *__restrict __ovalue),
+                          __timer_settime64);
+
+extern int __REDIRECT_NTH (timer_gettime, (timer_t __timerid,
+                                           struct itimerspec *__value),
+                           __timer_gettime64);
+#  else
+#   define timer_settime __timer_settime64
+#   define timer_gettime __timer_gettime64
+#  endif
+# endif
 
 /* Get expiration overrun for timer TIMERID.  */
 extern int timer_getoverrun (timer_t __timerid) __THROW;
@@ -253,9 +366,18 @@ extern int timer_getoverrun (timer_t __timerid) __THROW;
 
 
 #ifdef __USE_ISOC11
+# ifndef __USE_TIME_BITS64
 /* Set TS to calendar time based in time base BASE.  */
 extern int timespec_get (struct timespec *__ts, int __base)
      __THROW __nonnull ((1));
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (timespec_get, (struct timespec *__ts, int __base),
+                           __timespec_get64) __nonnull ((1));
+#  else
+#   define timespec_get __timespec_get64
+#  endif
+# endif
 #endif


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [glibc/azanella/y2038] y2038: Add support for 64 bit time on legacy ABIs
@ 2021-02-26 20:43 Adhemerval Zanella
  0 siblings, 0 replies; 10+ messages in thread
From: Adhemerval Zanella @ 2021-02-26 20:43 UTC (permalink / raw)
  To: glibc-cvs

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=205fc0dc504a0b6f1749e60aaa00f78456d3e00b

commit 205fc0dc504a0b6f1749e60aaa00f78456d3e00b
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Wed Feb 17 13:35:19 2021 -0300

    y2038: Add support for 64 bit time on legacy ABIs
    
    A new build flag, _TIME_BITS, enables the usage of the newer 64 bit
    time symbols for legacy ABI (where 32 bit time_t is default).  The 64
    bit time support is only enabled if LFS (_FILE_OFFSET_BITS=64) is
    also used.
    
    Different than LFS support, the y2038 symbols are added only for the
    required ABIs (armhf, csky, hppa, i386, m68k, microblaze, mips32,
    mips64-n32, nios2, powerpc32, sparc32, s390-32, and sh).  The ABIs with
    64 bit time support are unchanged, both for symbol and types
    redirection.
    
    On Linux apropoer 64 bit time support requires a minimum of kernel
    version v5.1.  Otherwise, the 32 bit fallbacks are used and might
    results in error with overflow return code (EOVERFLOW).
    
    The i686-gnu does not yet support 64 bit time, and trying to build
    it using -D_TIME_BITS=64 results in an error.
    
    This patch also converts following implemetations to support 64 bit
    time:
    
      * libc:
        - adjtimex
        - adjtime
        - clock_adjtime
        - clock_getres
        - clock_gettime
        - clock_nanosleep_time
        - clock_settime
        - ctime
        - ctime_r
        - difftime
        - futimens
        - futimes
        - futimesat
        - getitimer
        - getrusage
        - gettimeofday
        - gmtime
        - gmtime
        - localtime
        - localtime_r
        - lutimes
        - mktime
        - msgctl
        - nanosleep
        - ntp_gettime
        - ntp_gettimex
        - ppoll
        - pselect
        - recvmmsg
        - sched_rr_get_interval
        - select
        - semctl
        - semtimedop
        - setitimer
        - settimeofday
        - shmctl
        - sigtimedwait
        - thrd_sleep
        - time
        - timegm
        - timerfd_gettime
        - timerfd_settime
        - timespec_get
        - utime
        - utimensat
        - utimes
        - wait3
        - wait4
    
      * libpthread:
        - mtx_timedlock
        - pthread_clockjoin_np
        - pthread_cond_clockwait
        - pthread_cond_timedwait
        - pthread_mutex_clocklock
        - pthread_mutex_timedlock
        - pthread_rwlock_clockrdlock
        - pthread_rwlock_clockwrlock
        - pthread_rwlock_timedrdlock
        - pthread_rwlock_timedwrlock
        - pthread_timedjoin_np
        - sem_clockwait
        - sem_timedwait
    
      * librt:
        - aio_suspend_time
        - mq_timedreceive_time
        - mq_timedsend_time
        - timer_gettime
        - timer_settime
    
      * libanl:
        - gai_suspend
    
    y2038 fix

Diff:
---
 Makefile                                           |   2 +-
 NEWS                                               |   4 +
 include/features-time64.h                          |   1 +
 include/features.h                                 |   2 +
 io/sys/poll.h                                      |  11 ++
 io/sys/stat.h                                      |  78 +++++++++++--
 io/utime.h                                         |  11 ++
 manual/creature.texi                               |  44 +++++++
 misc/sys/select.h                                  |  27 +++++
 posix/sched.h                                      |  11 +-
 posix/sys/wait.h                                   |  20 ++++
 resolv/netdb.h                                     |  11 ++
 resource/sys/resource.h                            |  10 ++
 rt/aio.h                                           |  15 ++-
 rt/mqueue.h                                        |  22 ++++
 signal/signal.h                                    |  13 +++
 socket/sys/socket.h                                |  11 ++
 sysdeps/generic/features-time64.h                  |  19 ++++
 sysdeps/nptl/pthread.h                             | 119 +++++++++++++++++++
 sysdeps/pthread/semaphore.h                        |  25 ++++
 sysdeps/pthread/threads.h                          |  33 ++++++
 sysdeps/unix/sysv/linux/Versions                   | 113 ++++++++++++++++++
 sysdeps/unix/sysv/linux/arm/be/libanl.abilist      |   1 +
 sysdeps/unix/sysv/linux/arm/be/libc.abilist        |  52 +++++++++
 sysdeps/unix/sysv/linux/arm/be/libpthread.abilist  |  14 +++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist       |   5 +
 sysdeps/unix/sysv/linux/arm/le/libanl.abilist      |   1 +
 sysdeps/unix/sysv/linux/arm/le/libc.abilist        |  52 +++++++++
 sysdeps/unix/sysv/linux/arm/le/libpthread.abilist  |  14 +++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist       |   5 +
 sysdeps/unix/sysv/linux/arm/time64-compat.h        |   2 +
 sysdeps/unix/sysv/linux/bits/msq.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/sem.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/shm.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/time.h                |  10 ++
 sysdeps/unix/sysv/linux/csky/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/csky/libc.abilist          |  52 +++++++++
 sysdeps/unix/sysv/linux/csky/libpthread.abilist    |  14 +++
 sysdeps/unix/sysv/linux/csky/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/csky/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/features-time64.h          |  37 ++++++
 sysdeps/unix/sysv/linux/hppa/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/hppa/libc.abilist          |  52 +++++++++
 sysdeps/unix/sysv/linux/hppa/libpthread.abilist    |  14 +++
 sysdeps/unix/sysv/linux/hppa/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/hppa/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/i386/Makefile              |   2 +
 sysdeps/unix/sysv/linux/i386/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/i386/libc.abilist          |  52 +++++++++
 sysdeps/unix/sysv/linux/i386/libpthread.abilist    |  14 +++
 sysdeps/unix/sysv/linux/i386/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/i386/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/include/sys/msg.h          |   2 -
 sysdeps/unix/sysv/linux/include/sys/shm.h          |   2 -
 sysdeps/unix/sysv/linux/include/sys/timex.h        |   2 +
 .../unix/sysv/linux/m68k/coldfire/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist |  52 +++++++++
 .../sysv/linux/m68k/coldfire/libpthread.abilist    |  14 +++
 .../unix/sysv/linux/m68k/coldfire/librt.abilist    |   5 +
 sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist |   1 +
 sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist   |  52 +++++++++
 .../unix/sysv/linux/m68k/m680x0/libpthread.abilist |  14 +++
 sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist  |   5 +
 sysdeps/unix/sysv/linux/m68k/time64-compat.h       |   2 +
 .../unix/sysv/linux/microblaze/be/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/microblaze/be/libc.abilist |  52 +++++++++
 .../sysv/linux/microblaze/be/libpthread.abilist    |  14 +++
 .../unix/sysv/linux/microblaze/be/librt.abilist    |   5 +
 .../unix/sysv/linux/microblaze/le/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/microblaze/le/libc.abilist |  52 +++++++++
 .../sysv/linux/microblaze/le/libpthread.abilist    |  14 +++
 .../unix/sysv/linux/microblaze/le/librt.abilist    |   5 +
 sysdeps/unix/sysv/linux/microblaze/time64-compat.h |   2 +
 .../unix/sysv/linux/mips/mips32/fpu/libc.abilist   |  52 +++++++++
 sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist |   1 +
 .../unix/sysv/linux/mips/mips32/libpthread.abilist |  14 +++
 sysdeps/unix/sysv/linux/mips/mips32/librt.abilist  |   5 +
 .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist |  52 +++++++++
 .../unix/sysv/linux/mips/mips32/time64-compat.h    |   2 +
 .../unix/sysv/linux/mips/mips64/n32/libanl.abilist |   1 +
 .../unix/sysv/linux/mips/mips64/n32/libc.abilist   |  52 +++++++++
 .../sysv/linux/mips/mips64/n32/libpthread.abilist  |  14 +++
 .../unix/sysv/linux/mips/mips64/n32/librt.abilist  |   5 +
 .../sysv/linux/mips/mips64/n32/time64-compat.h     |   2 +
 sysdeps/unix/sysv/linux/nios2/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/nios2/libc.abilist         |  52 +++++++++
 sysdeps/unix/sysv/linux/nios2/libpthread.abilist   |  14 +++
 sysdeps/unix/sysv/linux/nios2/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/nios2/time64-compat.h      |   2 +
 .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist  |  52 +++++++++
 .../sysv/linux/powerpc/powerpc32/libanl.abilist    |   1 +
 .../linux/powerpc/powerpc32/libpthread.abilist     |  14 +++
 .../sysv/linux/powerpc/powerpc32/librt.abilist     |   5 +
 .../linux/powerpc/powerpc32/nofpu/libc.abilist     |  52 +++++++++
 .../sysv/linux/powerpc/powerpc32/time64-compat.h   |   2 +
 .../unix/sysv/linux/s390/s390-32/libanl.abilist    |   1 +
 sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist  |  52 +++++++++
 .../sysv/linux/s390/s390-32/libpthread.abilist     |  14 +++
 sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist |   5 +
 .../unix/sysv/linux/s390/s390-32/time64-compat.h   |   2 +
 sysdeps/unix/sysv/linux/semctl.c                   |   1 -
 sysdeps/unix/sysv/linux/sh/be/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/sh/be/libc.abilist         |  52 +++++++++
 sysdeps/unix/sysv/linux/sh/be/libpthread.abilist   |  14 +++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/sh/le/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/sh/le/libc.abilist         |  52 +++++++++
 sysdeps/unix/sysv/linux/sh/le/libpthread.abilist   |  14 +++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/sh/time64-compat.h         |   2 +
 .../unix/sysv/linux/sparc/sparc32/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist |  52 +++++++++
 .../sysv/linux/sparc/sparc32/libpthread.abilist    |  14 +++
 .../unix/sysv/linux/sparc/sparc32/librt.abilist    |   5 +
 .../unix/sysv/linux/sparc/sparc32/time64-compat.h  |   2 +
 sysdeps/unix/sysv/linux/sys/timerfd.h              |  22 ++++
 sysdeps/unix/sysv/linux/sys/timex.h                |  28 ++++-
 sysdeps/unix/sysv/linux/time64-compat.h            |   3 +
 sysvipc/sys/msg.h                                  |  10 ++
 sysvipc/sys/sem.h                                  |  21 ++++
 sysvipc/sys/shm.h                                  |  10 ++
 time/sys/time.h                                    |  71 ++++++++++++
 time/time.h                                        | 126 ++++++++++++++++++++-
 123 files changed, 2278 insertions(+), 28 deletions(-)

diff --git a/Makefile b/Makefile
index 71c7d8b5ec..2fd88294f5 100644
--- a/Makefile
+++ b/Makefile
@@ -68,7 +68,7 @@ endif # $(AUTOCONF) = no
 		   subdir_objs subdir_stubs subdir_testclean		\
 		   $(addprefix install-, no-libc.a bin lib data headers others)
 \f
-headers := limits.h values.h features.h gnu-versions.h \
+headers := limits.h values.h features.h features-time64.h gnu-versions.h \
 	   bits/xopen_lim.h gnu/libc-version.h stdc-predef.h \
 	   bits/libc-header-start.h
 
diff --git a/NEWS b/NEWS
index 37ba6ac0d0..7173d333cc 100644
--- a/NEWS
+++ b/NEWS
@@ -14,6 +14,10 @@ Major new features:
   constant on Linux.  MINSIGSTKSZ is redefined to sysconf(_SC_MINSIGSTKSZ)
   and SIGSTKSZ is redefined to sysconf (_SC_SIGSTKSZ).
 
+* Add support for 64 bit time_t support for ABIs with defaults to 32 bit
+  time_t.  This is enabled with the _TIME_BITS flag set to 64 and it
+  is support on Linux with a minimum version of 5.1.
+
 Deprecated and removed features, and other changes affecting compatibility:
 
   [Add deprecations, removals and changes affecting compatibility here]
diff --git a/include/features-time64.h b/include/features-time64.h
new file mode 100644
index 0000000000..06115b7c86
--- /dev/null
+++ b/include/features-time64.h
@@ -0,0 +1 @@
+#include_next <features-time64.h>
diff --git a/include/features.h b/include/features.h
index eb97470afa..9d39e11345 100644
--- a/include/features.h
+++ b/include/features.h
@@ -387,6 +387,8 @@
 # define __USE_FILE_OFFSET64	1
 #endif
 
+#include <features-time64.h>
+
 #if defined _DEFAULT_SOURCE
 # define __USE_MISC	1
 #endif
diff --git a/io/sys/poll.h b/io/sys/poll.h
index 2431dd1e14..5dfb721fe5 100644
--- a/io/sys/poll.h
+++ b/io/sys/poll.h
@@ -63,6 +63,17 @@ extern int poll (struct pollfd *__fds, nfds_t __nfds, int __timeout);
 extern int ppoll (struct pollfd *__fds, nfds_t __nfds,
 		  const struct timespec *__timeout,
 		  const __sigset_t *__ss);
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (ppoll, (struct pollfd *__fds, nfds_t __nfds,
+                               const struct timespec *__timeout,
+                               const __sigset_t *__ss),
+                       __ppoll64);
+#  else
+#  define ppoll __ppoll64
+#  endif
+# endif
 #endif
 
 __END_DECLS
diff --git a/io/sys/stat.h b/io/sys/stat.h
index 549375c087..b1729fda9f 100644
--- a/io/sys/stat.h
+++ b/io/sys/stat.h
@@ -209,15 +209,30 @@ extern int stat (const char *__restrict __file,
    that file descriptor FD is open on and put them in BUF.  */
 extern int fstat (int __fd, struct stat *__buf) __THROW __nonnull ((2));
 #else
-# ifdef __REDIRECT_NTH
+# ifdef __USE_TIME_BITS64
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
+				  struct stat *__restrict __buf),
+				  __stat64_time64)
+     __nonnull ((1, 2));
+extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf),
+				   __fstat64_time64)
+     __nonnull ((2));
+#  else
+#   define stat __stat64_time64
+#   define fstat __fstat64_time64
+#  endif
+# else
+#  ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
 				  struct stat *__restrict __buf), stat64)
      __nonnull ((1, 2));
 extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf), fstat64)
      __nonnull ((2));
-# else
-#  define stat stat64
-#  define fstat fstat64
+#  else
+#   define stat stat64
+#   define fstat fstat64
+#  endif
 # endif
 #endif
 #ifdef __USE_LARGEFILE64
@@ -235,13 +250,24 @@ extern int fstatat (int __fd, const char *__restrict __file,
 		    struct stat *__restrict __buf, int __flag)
      __THROW __nonnull ((2, 3));
 # else
-#  ifdef __REDIRECT_NTH
+#  ifdef __USE_TIME_BITS64
+#   ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
 				     struct stat *__restrict __buf,
 				     int __flag),
-			   fstatat64) __nonnull ((2, 3));
+			   __fstatat64_time64) __nonnull ((2, 3));
+#   else
+#    define fstatat __fstatat64_time64
+#   endif
 #  else
-#   define fstatat fstatat64
+#   ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
+				     struct stat *__restrict __buf,
+				     int __flag),
+			   fstatat64) __nonnull ((2, 3));
+#   else
+#    define fstatat fstatat64
+#   endif
 #  endif
 # endif
 
@@ -259,13 +285,24 @@ extern int fstatat64 (int __fd, const char *__restrict __file,
 extern int lstat (const char *__restrict __file,
 		  struct stat *__restrict __buf) __THROW __nonnull ((1, 2));
 # else
-#  ifdef __REDIRECT_NTH
+#  ifdef __USE_TIME_BITS64
+#   ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (lstat,
 			   (const char *__restrict __file,
-			    struct stat *__restrict __buf), lstat64)
+			    struct stat *__restrict __buf), __lstat64_time64)
      __nonnull ((1, 2));
+#   else
+#    define lstat __lstat64_time64
+#   endif
 #  else
-#   define lstat lstat64
+#   ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (lstat,
+			   (const char *__restrict __file,
+			    struct stat *__restrict __buf), lstat64)
+     __nonnull ((1, 2));
+#   else
+#    define lstat lstat64
+#   endif
 #  endif
 # endif
 # ifdef __USE_LARGEFILE64
@@ -355,17 +392,38 @@ extern int mkfifoat (int __fd, const char *__path, __mode_t __mode)
 #endif
 \f
 #ifdef __USE_ATFILE
+# ifndef __USE_TIME_BITS64
 /* Set file access and modification times relative to directory file
    descriptor.  */
 extern int utimensat (int __fd, const char *__path,
 		      const struct timespec __times[2],
 		      int __flags)
      __THROW __nonnull ((2));
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (utimensat, (int fd, const char *__path,
+                                       const struct timespec __times[2],
+                                       int flags),
+                           __utimensat64) __nonnull ((2));
+#  else
+#   define utimensat __utimensat64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_XOPEN2K8
+# ifndef __USE_TIME_BITS64
 /* Set file access and modification times of the file associated with FD.  */
 extern int futimens (int __fd, const struct timespec __times[2]) __THROW;
+
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (futimens, (int fd, const struct timespec __times[2]),
+                           __futimens64);
+#  else
+#   define futimens __futimens64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
diff --git a/io/utime.h b/io/utime.h
index c7612d0838..1a645a3fff 100644
--- a/io/utime.h
+++ b/io/utime.h
@@ -46,10 +46,21 @@ struct utimbuf
 
 /* Set the access and modification times of FILE to those given in
    *FILE_TIMES.  If FILE_TIMES is NULL, set them to the current time.  */
+#ifndef __USE_TIME_BITS64
 extern int utime (const char *__file,
 		  const struct utimbuf *__file_times)
      __THROW __nonnull ((1));
 
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (utime, (const char *__file,
+                                   const struct utimbuf *__file_times),
+                           __utime64);
+# else
+#  define utime __utime64
+# endif
+#endif
+
 __END_DECLS
 
 #endif /* utime.h */
diff --git a/manual/creature.texi b/manual/creature.texi
index 5090735e4f..606b73d184 100644
--- a/manual/creature.texi
+++ b/manual/creature.texi
@@ -165,6 +165,50 @@ This macro was introduced as part of the Large File Support extension
 (LFS).
 @end defvr
 
+@defvr Macro _TIME_BITS
+This macro determines the bit size of @code{time_t} (and therefore the
+bit size of all @code{time_t} derived types and the prototypes of all
+related functions).  If @code{_TIME_BITS} is undefined, the bit size of
+@code{time_t} is architecture dependent.
+
+Possible values of @code{_TIME_BITS}:
+@enumerate
+@item
+@code{_TIME_BITS=64} and port from the outset uses 64-bit
+@code{time_t} and word size equals to @w{64 bits} (e.g. x86_64) - no
+action
+
+@item
+@code{_TIME_BITS=32} and port from the outset uses 32-bit
+@code{time_t} and word size equals to @w{64 bits} (e.g. ARM) - no
+action
+
+@item
+@code{_TIME_BITS=64} and port from the outset uses 64-bit
+@code{time_t} and word size equals to @w{32 bits} (e.g. ARC, RV32)
+- no action
+
+@item
+@code{_TIME_BITS=64} and port from the outset uses 32-bit
+@code{time_t} and word size equals to @w{32 bits} (e.g. ARM)
+- the @code{time_t} is modified to be able to hold 64-bit time.
+
+@item
+For any other use case the compile-time error is emitted.
+@end enumerate
+
+The @code{_TIME_BITS} can be only used when @code{_FILE_OFFSET_BITS=64}
+is also defined.
+
+For the point @b{4} above, calls to proper syscalls depend on the
+Linux kernel version on which the system is running. For Linux kernel
+version above @b{5.1} syscalls supporting 64-bit time are used. Otherwise,
+a fallback code is used with legacy (i.e. 32-bit) syscalls.
+
+By using this macro certain ports gain support for 64-bit time and as
+a result become immune to Y2038 problem.
+@end defvr
+
 @defvr Macro _ISOC99_SOURCE
 @standards{GNU, (none)}
 If this macro is defined, features from ISO C99 are included.  Since
diff --git a/misc/sys/select.h b/misc/sys/select.h
index 188a7fe607..e9c0e8fc20 100644
--- a/misc/sys/select.h
+++ b/misc/sys/select.h
@@ -98,10 +98,23 @@ __BEGIN_DECLS
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+#ifndef __USE_TIME_BITS64
 extern int select (int __nfds, fd_set *__restrict __readfds,
 		   fd_set *__restrict __writefds,
 		   fd_set *__restrict __exceptfds,
 		   struct timeval *__restrict __timeout);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (select,
+                       (int __nfds, fd_set *__restrict __readfds,
+                        fd_set *__restrict __writefds,
+                        fd_set *__restrict __exceptfds,
+                        struct timeval *__restrict __timeout),
+                       __select64);
+# else
+#  define select __select64
+# endif
+#endif
 
 #ifdef __USE_XOPEN2K
 /* Same as above only that the TIMEOUT value is given with higher
@@ -110,11 +123,25 @@ extern int select (int __nfds, fd_set *__restrict __readfds,
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int pselect (int __nfds, fd_set *__restrict __readfds,
 		    fd_set *__restrict __writefds,
 		    fd_set *__restrict __exceptfds,
 		    const struct timespec *__restrict __timeout,
 		    const __sigset_t *__restrict __sigmask);
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (pselect,
+                       (int __nfds, fd_set *__restrict __readfds,
+                        fd_set *__restrict __writefds,
+                        fd_set *__restrict __exceptfds,
+                        const struct timespec *__restrict __timeout,
+                        const __sigset_t *__restrict __sigmask),
+                       __pselect64);
+#  else
+#   define pselect __pselect64
+#  endif
+# endif
 #endif
 
 
diff --git a/posix/sched.h b/posix/sched.h
index d8ce08a3ea..7dd97a49b2 100644
--- a/posix/sched.h
+++ b/posix/sched.h
@@ -74,8 +74,17 @@ extern int sched_get_priority_max (int __algorithm) __THROW;
 extern int sched_get_priority_min (int __algorithm) __THROW;
 
 /* Get the SCHED_RR interval for the named process.  */
+#ifndef __USE_TIME_BITS64
 extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __THROW;
-
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (sched_rr_get_interval,
+                           (__pid_t __pid, struct timespec *__t),
+                           __sched_rr_get_interval64);
+# else
+#  define sched_rr_get_interval __sched_rr_get_interval64
+# endif
+#endif
 
 #ifdef __USE_GNU
 /* Access macros for `cpu_set'.  */
diff --git a/posix/sys/wait.h b/posix/sys/wait.h
index 9e7bb7f154..5325bfa4d2 100644
--- a/posix/sys/wait.h
+++ b/posix/sys/wait.h
@@ -144,14 +144,34 @@ struct rusage;
    nil, store information about the child's resource usage there.  If the
    WUNTRACED bit is set in OPTIONS, return status for stopped children;
    otherwise don't.  */
+# ifndef __USE_TIME_BITS64
 extern __pid_t wait3 (int *__stat_loc, int __options,
 		      struct rusage * __usage) __THROWNL;
+# else
+#  ifdef __REDIRECT_NTHNL
+extern __pid_t __REDIRECT_NTHNL (wait3, (int *__stat_loc, int __options,
+                                         struct rusage * __usage),
+                                 __wait3_time64);
+#  else
+#   define wait3 __wait3_time64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_MISC
+# ifndef __USE_TIME_BITS64
 /* PID is like waitpid.  Other args are like wait3.  */
 extern __pid_t wait4 (__pid_t __pid, int *__stat_loc, int __options,
 		      struct rusage *__usage) __THROWNL;
+# else
+#  ifdef __REDIRECT_NTHNL
+extern __pid_t __REDIRECT_NTHNL (wait4, (__pid_t __pid, int *__stat_loc,
+                                         int __options, struct rusage *__usage),
+                                 __wait4_time64);
+#  else
+#   define wait4 __wait4_time64
+#  endif
+# endif
 #endif /* Use misc.  */
 
 
diff --git a/resolv/netdb.h b/resolv/netdb.h
index 1f36f25d4a..9b242ce3d1 100644
--- a/resolv/netdb.h
+++ b/resolv/netdb.h
@@ -701,6 +701,17 @@ extern int getaddrinfo_a (int __mode, struct gaicb *__list[__restrict_arr],
 extern int gai_suspend (const struct gaicb *const __list[], int __ent,
 			const struct timespec *__timeout);
 
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (gai_suspend, (const struct gaicb *const __list[],
+                                     int __ent,
+                                     const struct timespec *__timeout),
+                       __gai_suspend_time64);
+#  else
+#   define gai_suspend __gai_suspend_time64
+#  endif
+# endif
+
 /* Get the error status of the request REQ.  */
 extern int gai_error (struct gaicb *__req) __THROW;
 
diff --git a/resource/sys/resource.h b/resource/sys/resource.h
index d30379d085..551d25e275 100644
--- a/resource/sys/resource.h
+++ b/resource/sys/resource.h
@@ -88,6 +88,16 @@ extern int setrlimit64 (__rlimit_resource_t __resource,
    and put it in *USAGE.  Returns 0 for success, -1 for failure.  */
 extern int getrusage (__rusage_who_t __who, struct rusage *__usage) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (getrusage, (__rusage_who_t __who,
+                                       struct rusage *__usage),
+                           __getrusage64);
+# else
+# define getrusage __getrusage64
+# endif
+#endif
+
 /* Return the highest priority of any process specified by WHICH and WHO
    (see above); if WHO is zero, the current process, process group, or user
    (as specified by WHO) is used.  A lower priority number means higher
diff --git a/rt/aio.h b/rt/aio.h
index 3a107b2783..72cf626690 100644
--- a/rt/aio.h
+++ b/rt/aio.h
@@ -193,12 +193,17 @@ extern __ssize_t __REDIRECT_NTH (aio_return, (struct aiocb *__aiocbp),
 extern int __REDIRECT_NTH (aio_cancel,
 			   (int __fildes, struct aiocb *__aiocbp),
 			   aio_cancel64);
-
+#  ifdef __USE_TIME_BITS64
+extern int __REDIRECT_NTH (aio_suspend,
+			   (const struct aiocb *const __list[], int __nent,
+			    const struct timespec *__restrict __timeout),
+			   __aio_suspend_time64) __nonnull ((1));
+#  else
 extern int __REDIRECT_NTH (aio_suspend,
 			   (const struct aiocb *const __list[], int __nent,
 			    const struct timespec *__restrict __timeout),
 			   aio_suspend64) __nonnull ((1));
-
+#  endif
 extern int __REDIRECT_NTH (aio_fsync,
 			   (int __operation, struct aiocb *__aiocbp),
 			   aio_fsync64) __nonnull ((2));
@@ -210,7 +215,11 @@ extern int __REDIRECT_NTH (aio_fsync,
 #  define aio_error aio_error64
 #  define aio_return aio_return64
 #  define aio_cancel aio_cancel64
-#  define aio_suspend aio_suspend64
+#  ifdef __USE_TIME_BITS64
+#   define aio_suspend __aio_suspend_time64
+#  else
+#   define aio_suspend aio_suspend64
+#  endif
 #  define aio_fsync aio_fsync64
 # endif
 #endif
diff --git a/rt/mqueue.h b/rt/mqueue.h
index 8a62d99f50..e8a85637e4 100644
--- a/rt/mqueue.h
+++ b/rt/mqueue.h
@@ -71,6 +71,7 @@ extern int mq_send (mqd_t __mqdes, const char *__msg_ptr, size_t __msg_len,
 		    unsigned int __msg_prio) __nonnull ((2));
 
 #ifdef __USE_XOPEN2K
+# ifndef __USE_TIME_BITS64
 /* Receive the oldest from highest priority messages in message queue
    MQDES, stop waiting if ABS_TIMEOUT expires.  */
 extern ssize_t mq_timedreceive (mqd_t __mqdes, char *__restrict __msg_ptr,
@@ -85,6 +86,27 @@ extern int mq_timedsend (mqd_t __mqdes, const char *__msg_ptr,
 			 size_t __msg_len, unsigned int __msg_prio,
 			 const struct timespec *__abs_timeout)
   __nonnull ((2, 5));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (mq_timedreceive, (mqd_t __mqdes,
+                               char *__restrict __msg_ptr,
+                               size_t __msg_len,
+                               unsigned int *__restrict __msg_prio,
+                               const struct timespec *__restrict __abs_timeout),
+                       __mq_timedreceive_time64)
+  __nonnull ((2, 5));
+
+extern int __REDIRECT (mq_timedsend, (mqd_t __mqdes,
+                       const char *__msg_ptr, size_t __msg_len,
+                       unsigned int __msg_prio,
+                       const struct timespec *__abs_timeout),
+		       __mq_timedsend_time64)
+  __nonnull ((2, 5));
+#  else
+#   define mq_timedreceive __mq_timedreceive_time64
+#   define mq_timedsend __mq_timedsend_time64
+#  endif
+# endif
 #endif
 
 /* Define some inlines helping to catch common problems.  */
diff --git a/signal/signal.h b/signal/signal.h
index b17203c99c..5fd93382fc 100644
--- a/signal/signal.h
+++ b/signal/signal.h
@@ -269,10 +269,23 @@ extern int sigwaitinfo (const sigset_t *__restrict __set,
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+#  ifndef __USE_TIME_BITS64
 extern int sigtimedwait (const sigset_t *__restrict __set,
 			 siginfo_t *__restrict __info,
 			 const struct timespec *__restrict __timeout)
      __nonnull ((1));
+#  else
+#   ifdef __REDIRECT
+extern int __REDIRECT (sigtimedwait,
+                       (const sigset_t *__restrict __set,
+                        siginfo_t *__restrict __info,
+                        const struct timespec *__restrict __timeout),
+                       __sigtimedwait64)
+     __nonnull ((1));
+#   else
+#    define sigtimedwait __sigtimedwait64
+#   endif
+#  endif
 
 /* Send signal SIG to the process PID.  Associate data in VAL with the
    signal.  */
diff --git a/socket/sys/socket.h b/socket/sys/socket.h
index 949851a6ce..5577e75b80 100644
--- a/socket/sys/socket.h
+++ b/socket/sys/socket.h
@@ -196,9 +196,20 @@ extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags);
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
 		     unsigned int __vlen, int __flags,
 		     struct timespec *__tmo);
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (recvmmsg, (int __fd, struct mmsghdr *__vmessages,
+                                  unsigned int __vlen, int __flags,
+                                  struct timespec *__tmo),
+                       __recvmmsg64);
+#  else
+#   define recvmmsg __recvmmsg64
+#  endif
+# endif
 #endif
 
 
diff --git a/sysdeps/generic/features-time64.h b/sysdeps/generic/features-time64.h
new file mode 100644
index 0000000000..a5a677f837
--- /dev/null
+++ b/sysdeps/generic/features-time64.h
@@ -0,0 +1,19 @@
+/* Features part to handle 64-bit time_t support.  Generic 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/>.  */
+
+/* The generic configuration only support _TIME_BITS=32.  */
diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h
index a04a3a2754..8f3a41279f 100644
--- a/sysdeps/nptl/pthread.h
+++ b/sysdeps/nptl/pthread.h
@@ -221,6 +221,7 @@ extern int pthread_join (pthread_t __th, void **__thread_return);
    the thread in *THREAD_RETURN, if THREAD_RETURN is not NULL.  */
 extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __THROW;
 
+# ifndef __USE_TIME_BITS64
 /* Make calling thread wait for termination of the thread TH, but only
    until TIMEOUT.  The exit status of the thread is stored in
    *THREAD_RETURN, if THREAD_RETURN is not NULL.
@@ -240,6 +241,23 @@ extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
 extern int pthread_clockjoin_np (pthread_t __th, void **__thread_return,
                                  clockid_t __clockid,
 				 const struct timespec *__abstime);
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (pthread_timedjoin_np,
+                       (pthread_t __th, void **__thread_return,
+                        const struct timespec *__abstime),
+                       __pthread_timedjoin_np64);
+
+extern int __REDIRECT (pthread_clockjoin_np,
+                       (pthread_t __th, void **__thread_return,
+                        clockid_t __clockid,
+                        const struct timespec *__abstime),
+                       __pthread_clockjoin_np64);
+#  else
+#   define pthread_timedjoin_np __pthread_timedjoin_np64
+#   define pthread_clockjoin_np __pthread_clockjoin_np64
+#  endif
+# endif
 #endif
 
 /* Indicate that the thread TH is never to be joined with PTHREAD_JOIN.
@@ -773,16 +791,39 @@ extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
 
 #ifdef __USE_XOPEN2K
 /* Wait until lock becomes available, or specified time passes. */
+# ifndef __USE_TIME_BITS64
 extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
 				    const struct timespec *__restrict
 				    __abstime) __THROWNL __nonnull ((1, 2));
+# else
+#  ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_mutex_timedlock,
+                             (pthread_mutex_t *__restrict __mutex,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_mutex_timedlock64) __nonnull ((1, 2));
+#  else
+#   define pthread_mutex_timedlock __pthread_mutex_timedlock64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
+# ifndef __USE_TIME_BITS64
 extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex,
 				    clockid_t __clockid,
 				    const struct timespec *__restrict
 				    __abstime) __THROWNL __nonnull ((1, 3));
+# else
+#  ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_mutex_clocklock,
+                             (pthread_mutex_t *__restrict __mutex,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_mutex_clocklock64) __nonnull ((1, 3));
+#  else
+#   define pthread_mutex_clocklock __pthread_mutex_clocklock64
+#  endif
+# endif
 #endif
 
 /* Unlock a mutex.  */
@@ -919,16 +960,41 @@ extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
 
 # ifdef __USE_XOPEN2K
 /* Try to acquire read lock for RWLOCK or return after specfied time.  */
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 2));
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_timedrdlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_timedrdlock64)
+    __nonnull ((1, 2));
+#   else
+#    define pthread_rwlock_timedrdlock __pthread_rwlock_timedrdlock64
+#   endif
+#  endif
 # endif
 
 # ifdef __USE_GNU
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock,
 				       clockid_t __clockid,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 3));
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_clockrdlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_clockrdlock64)
+    __nonnull ((1, 3));
+#   else
+#    define pthread_rwlock_clockrdlock __pthread_rwlock_clockrdlock64
+#   endif
+#  endif
 # endif
 
 /* Acquire write lock for RWLOCK.  */
@@ -941,16 +1007,42 @@ extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
 
 # ifdef __USE_XOPEN2K
 /* Try to acquire write lock for RWLOCK or return after specfied time.  */
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 2));
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_timedwrlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_timedwrlock64)
+    __nonnull ((1, 2));
+#   else
+#    define pthread_rwlock_timedwrlock __pthread_rwlock_timedwrlock64
+#   endif
+#  endif
 # endif
 
 # ifdef __USE_GNU
+#  ifndef __USE_TIME_BITS64
 extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock,
 				       clockid_t __clockid,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 3));
+
+#  else
+#   ifdef __REDIRECT_NTHNL
+extern int __REDIRECT_NTHNL (pthread_rwlock_clockwrlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_clockwrlock64)
+    __nonnull ((1, 3));
+#   else
+#    define pthread_rwlock_clockwrlock __pthread_rwlock_clockwrlock64
+#   endif
+#  endif
 # endif
 
 /* Unlock RWLOCK.  */
@@ -1027,10 +1119,23 @@ extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
 				   pthread_mutex_t *__restrict __mutex,
 				   const struct timespec *__restrict __abstime)
      __nonnull ((1, 2, 3));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (pthread_cond_timedwait,
+                       (pthread_cond_t *__restrict __cond,
+                        pthread_mutex_t *__restrict __mutex,
+                        const struct timespec *__restrict __abstime),
+                       __pthread_cond_timedwait64)
+     __nonnull ((1, 2, 3));
+#  else
+#   define pthread_cond_timedwait __pthread_cond_timedwait64
+#  endif
+# endif
 
 # ifdef __USE_GNU
 /* Wait for condition variable COND to be signaled or broadcast until
@@ -1040,11 +1145,25 @@ extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
 
    This function is a cancellation point and therefore not marked with
    __THROW. */
+#  ifndef __USE_TIME_BITS64
 extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond,
 				   pthread_mutex_t *__restrict __mutex,
 				   __clockid_t __clock_id,
 				   const struct timespec *__restrict __abstime)
      __nonnull ((1, 2, 4));
+#  else
+#   ifdef __REDIRECT
+extern int __REDIRECT (pthread_cond_clockwait,
+                       (pthread_cond_t *__restrict __cond,
+                        pthread_mutex_t *__restrict __mutex,
+                        __clockid_t __clock_id,
+                        const struct timespec *__restrict __abstime),
+                       __pthread_cond_clockwait64)
+     __nonnull ((1, 2, 4));
+#   else
+#    define pthread_cond_clockwait __pthread_cond_clockwait64
+#   endif
+#  endif
 # endif
 
 /* Functions for handling condition variable attributes.  */
diff --git a/sysdeps/pthread/semaphore.h b/sysdeps/pthread/semaphore.h
index 7fb0e5c103..35780e7c4e 100644
--- a/sysdeps/pthread/semaphore.h
+++ b/sysdeps/pthread/semaphore.h
@@ -59,16 +59,41 @@ extern int sem_wait (sem_t *__sem) __nonnull ((1));
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+# ifndef __USE_TIME_BITS64
 extern int sem_timedwait (sem_t *__restrict __sem,
 			  const struct timespec *__restrict __abstime)
   __nonnull ((1, 2));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (sem_timedwait,
+                       (sem_t *__restrict __sem,
+                        const struct timespec *__restrict __abstime),
+                        __sem_timedwait64)
+  __nonnull ((1, 2));
+#  else
+#   define sem_timedwait __sem_timedwait64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
+# ifndef __USE_TIME_BITS64
 extern int sem_clockwait (sem_t *__restrict __sem,
 			  clockid_t clock,
 			  const struct timespec *__restrict __abstime)
   __nonnull ((1, 3));
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (sem_clockwait,
+                       (sem_t *__restrict __sem,
+                        clockid_t clock,
+                        const struct timespec *__restrict __abstime),
+                        __sem_clockwait64)
+  __nonnull ((1, 3));
+#  else
+#   define sem_clockwait __sem_clockwait64
+#  endif
+# endif
 #endif
 
 /* Test whether SEM is posted.  */
diff --git a/sysdeps/pthread/threads.h b/sysdeps/pthread/threads.h
index 46929a025e..bf251c9db4 100644
--- a/sysdeps/pthread/threads.h
+++ b/sysdeps/pthread/threads.h
@@ -88,8 +88,18 @@ extern thrd_t thrd_current (void);
    __TIME_POINT.  The current thread may resume if receives a signal.  In
    that case, if __REMAINING is not NULL, the remaining time is stored in
    the object pointed by it.  */
+#ifndef __USE_TIME_BITS64
 extern int thrd_sleep (const struct timespec *__time_point,
 		       struct timespec *__remaining);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (thrd_sleep, (const struct timespec *__time_point,
+                                    struct timespec *__remaining),
+                       __thrd_sleep64);
+# else
+#  define thrd_sleep __thrd_sleep64
+# endif
+#endif
 
 /* Terminate current thread execution, cleaning up any thread local
    storage and freeing resources.  Returns the value specified in __RES.  */
@@ -131,8 +141,19 @@ extern int mtx_lock (mtx_t *__mutex);
 /* Block the current thread until the mutex pointed by __MUTEX is unlocked
    or time pointed by __TIME_POINT is reached.  In case the mutex is unlock,
    the current thread will not be blocked.  */
+#ifndef __USE_TIME_BITS64
 extern int mtx_timedlock (mtx_t *__restrict __mutex,
 			  const struct timespec *__restrict __time_point);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (mtx_timedlock, (mtx_t *__restrict __mutex,
+                                       const struct timespec *__restrict
+                                       __time_point),
+                       __mtx_timedlock64);
+# else
+#  define mtx_timedlock __mtx_timedlock64
+# endif
+#endif
 
 /* Try to lock the mutex pointed by __MUTEX without blocking.  If the mutex
    is free the current threads takes control of it, otherwise it returns
@@ -171,9 +192,21 @@ extern int cnd_wait (cnd_t *__cond, mtx_t *__mutex);
 /* Block current thread on the condition variable until condition variable
    pointed by __COND is signaled or time pointed by __TIME_POINT is
    reached.  */
+#ifndef __USE_TIME_BITS64
 extern int cnd_timedwait (cnd_t *__restrict __cond,
 			  mtx_t *__restrict __mutex,
 			  const struct timespec *__restrict __time_point);
+#else
+# ifdef __REDIRECT
+extern int __REDIRECT (cnd_timedwait, (cnd_t *__restrict __cond,
+                                       mtx_t *__restrict __mutex,
+                                       const struct timespec *__restrict
+                                       __time_point),
+                       __cnd_timedwait64);
+# else
+#  define cnd_timedwait __cnd_timedwait64
+# endif
+#endif
 
 /* Destroy condition variable pointed by __cond and free all of its
    resources.  */
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index 257ccbd3b4..45d31a46bc 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -1,3 +1,4 @@
+%include <time64-compat.h>
 libc {
   GLIBC_2.0 {
     # functions used in inline functions or macros
@@ -168,6 +169,75 @@ libc {
     getdents64; gettid; tgkill;
   }
   GLIBC_2.32 {
+  }
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    # io
+    __ppoll64;
+    __utime64;
+    __stat64_time64;
+    __lstat64_time64;
+    __fstat64_time64;
+    __fstatat64_time64;
+    # misc
+    __futimes64;
+    __futimesat64;
+    __lutimes64;
+    __select64;
+    __utimes64;
+    # posix
+    __nanosleep64;
+    __pselec64;
+    __wait3_time64;
+    __wait4_time64;
+    # nptl
+    __thrd_sleep64;
+    # resouces
+    __getrusage64;
+    # signal
+    __sigtimedwait64;
+    # sysvipc
+    __msgctl64;
+    __semctl64;
+    __semtimedop64;
+    __shmctl64;
+    # time
+    ___adjtimex64;
+    __adjtime64;
+    __clock_adjtime64;
+    __clock_getres64;
+    __clock_gettime64;
+    __clock_nanosleep_time64;
+    __clock_settime64;
+    __ctime64;
+    __ctime64_r;
+    __difftime64;
+    __futimens64;
+    __localtime64;
+    __localtime64_r;
+    __getitimer64;
+    __gettimeofday64;
+    __gmtime64;
+    __gmtime64_r;
+    __mktime64;
+    __nanosleep64;
+    __setitimer64;
+    __settimeofday64;
+    __time64;
+    __timegm64;
+    __timespec_get64;
+    __utimensat64;
+     __utimes64;
+    # misc
+    __ntp_gettime64;
+    __ntp_gettimex64;
+    __pselect64;
+    __recvmmsg64;
+    __sched_rr_get_interval64;
+    __timerfd_gettime64;
+    __timerfd_settime64;
+%endif
   }
   GLIBC_PRIVATE {
     # functions used in other libraries
@@ -182,3 +252,46 @@ libc {
     __netlink_assert_response;
   }
 }
+
+libpthread {
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    __cnd_timedwait64;
+    __mtx_timedlock64;
+    __pthread_clockjoin_np64;
+    __pthread_cond_timedwait64;
+    __pthread_cond_clockwait64;
+    __pthread_mutex_timedlock64;
+    __pthread_mutex_clocklock64;
+    __pthread_rwlock_clockrdlock64;
+    __pthread_rwlock_clockwrlock64;
+    __pthread_rwlock_timedrdlock64;
+    __pthread_rwlock_timedwrlock64;
+    __pthread_timedjoin_np64;
+    __sem_clockwait64;
+    __sem_timedwait64;
+%endif
+  }
+}
+
+librt {
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    __aio_suspend_time64;
+    __mq_timedsend_time64;
+    __mq_timedreceive_time64;
+    __timer_gettime64;
+    __timer_settime64;
+%endif
+  }
+}
+
+libanl {
+%ifdef TIME64_NON_DEFAULT
+  GLIBC_2.34 {
+    __gai_suspend_time64;
+  }
+%endif
+}
diff --git a/sysdeps/unix/sysv/linux/arm/be/libanl.abilist b/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 8111b49085..d63e0dee75 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -155,7 +155,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index b6c26c7a50..3fe358cc31 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -33,6 +33,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libanl.abilist b/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 4dba1f2f46..1a0f0d1312 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -152,7 +152,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index b6c26c7a50..3fe358cc31 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -33,6 +33,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/arm/time64-compat.h b/sysdeps/unix/sysv/linux/arm/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/arm/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/bits/msq.h b/sysdeps/unix/sysv/linux/bits/msq.h
index 3313b69d78..7c9c479551 100644
--- a/sysdeps/unix/sysv/linux/bits/msq.h
+++ b/sysdeps/unix/sysv/linux/bits/msq.h
@@ -26,6 +26,7 @@ typedef __syscall_ulong_t msgqnum_t;
 typedef __syscall_ulong_t msglen_t;
 
 #include <bits/types/struct_msqid_ds.h>
+#include <bits/types/struct_msqid64_ds.h>
 
 /* Define options for message queue functions.  */
 #define MSG_NOERROR	010000	/* no error if message is too big */
diff --git a/sysdeps/unix/sysv/linux/bits/sem.h b/sysdeps/unix/sysv/linux/bits/sem.h
index ad13287e66..776524b876 100644
--- a/sysdeps/unix/sysv/linux/bits/sem.h
+++ b/sysdeps/unix/sysv/linux/bits/sem.h
@@ -22,6 +22,7 @@
 #include <sys/types.h>
 #include <bits/timesize.h>
 #include <bits/types/struct_semid_ds.h>
+#include <bits/types/struct_semid64_ds.h>
 
 /* Flags for `semop'.  */
 #define SEM_UNDO	0x1000		/* undo the operation on exit */
diff --git a/sysdeps/unix/sysv/linux/bits/shm.h b/sysdeps/unix/sysv/linux/bits/shm.h
index a50c79d7be..454fc3f366 100644
--- a/sysdeps/unix/sysv/linux/bits/shm.h
+++ b/sysdeps/unix/sysv/linux/bits/shm.h
@@ -43,6 +43,7 @@ __BEGIN_DECLS
 typedef __syscall_ulong_t shmatt_t;
 
 #include <bits/types/struct_shmid_ds.h>
+#include <bits/types/struct_shmid64_ds.h>
 
 #ifdef __USE_MISC
 
diff --git a/sysdeps/unix/sysv/linux/bits/time.h b/sysdeps/unix/sysv/linux/bits/time.h
index ee5a8b3ef4..d0c98a7864 100644
--- a/sysdeps/unix/sysv/linux/bits/time.h
+++ b/sysdeps/unix/sysv/linux/bits/time.h
@@ -77,6 +77,16 @@ __BEGIN_DECLS
 /* Tune a POSIX clock.  */
 extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (clock_adjtime, (__clockid_t __clock_id,
+                                           struct timex *__utx),
+                           __clock_adjtime64);
+# else
+# define clock_adjtime __clock_adjtime64
+# endif
+#endif
+
 __END_DECLS
 #endif /* use GNU */
 
diff --git a/sysdeps/unix/sysv/linux/csky/libanl.abilist b/sysdeps/unix/sysv/linux/csky/libanl.abilist
index 416a6f8ddb..01f2e6cbf0 100644
--- a/sysdeps/unix/sysv/linux/csky/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.29 gai_cancel F
 GLIBC_2.29 gai_error F
 GLIBC_2.29 gai_suspend F
 GLIBC_2.29 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index a5ff3d90ca..120a3fc1ce 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -2115,7 +2115,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index 6ce59276a7..51d5822091 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -211,3 +211,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index c6690ef7c1..b60deca65a 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.29 timer_delete F
 GLIBC_2.29 timer_getoverrun F
 GLIBC_2.29 timer_gettime F
 GLIBC_2.29 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/csky/time64-compat.h b/sysdeps/unix/sysv/linux/csky/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/csky/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/features-time64.h b/sysdeps/unix/sysv/linux/features-time64.h
new file mode 100644
index 0000000000..c6a0a1874c
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/features-time64.h
@@ -0,0 +1,37 @@
+/* Features part to handle 64-bit time_t support.
+   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/>.  */
+
+/* We need to know the word size in order to check the time size.  */
+#include <bits/wordsize.h>
+#include <bits/timesize.h>
+
+#if defined _TIME_BITS
+# if _TIME_BITS == 64
+#  if ! defined (_FILE_OFFSET_BITS) || _FILE_OFFSET_BITS != 64
+#   error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64"
+#  elif __TIMESIZE == 32
+#   define __USE_TIME_BITS64	1
+#  endif
+# elif _TIME_BITS == 32
+#  if __TIMESIZE > 32
+#   error "_TIME_BITS=32 is not compatible with __TIMESIZE > 32"
+#  endif
+# else
+#  error Invalid _TIME_BITS value (can only be 32 or 64 bits)
+# endif
+#endif
diff --git a/sysdeps/unix/sysv/linux/hppa/libanl.abilist b/sysdeps/unix/sysv/linux/hppa/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/hppa/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 89a0f11166..77c7d2faf3 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2074,7 +2074,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index cabc5af858..0cdb30a3c1 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -218,6 +218,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/hppa/time64-compat.h b/sysdeps/unix/sysv/linux/hppa/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/hppa/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/i386/Makefile b/sysdeps/unix/sysv/linux/i386/Makefile
index da716e2c1b..8d5efb4f65 100644
--- a/sysdeps/unix/sysv/linux/i386/Makefile
+++ b/sysdeps/unix/sysv/linux/i386/Makefile
@@ -1,6 +1,8 @@
 # The default ABI is 32.
 default-abi := 32
 
+extra-version := Versions-y2038
+
 ifeq ($(subdir),misc)
 sysdep_routines += ioperm iopl vm86
 
diff --git a/sysdeps/unix/sysv/linux/i386/libanl.abilist b/sysdeps/unix/sysv/linux/i386/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/i386/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index a7c408d18c..7d1a9691e7 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2241,7 +2241,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index 18177307c8..b3a825d60e 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -226,6 +226,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/i386/time64-compat.h b/sysdeps/unix/sysv/linux/i386/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/include/sys/msg.h b/sysdeps/unix/sysv/linux/include/sys/msg.h
index 522903f818..c460be0dc9 100644
--- a/sysdeps/unix/sysv/linux/include/sys/msg.h
+++ b/sysdeps/unix/sysv/linux/include/sys/msg.h
@@ -7,8 +7,6 @@ extern ssize_t __libc_msgrcv (int msqid, void *msgp, size_t msgsz,
 extern int __libc_msgsnd (int msqid, const void *msgp, size_t msgsz,
 			  int msgflg);
 
-# include <bits/types/struct_msqid64_ds.h>
-
 # if __TIMESIZE == 64
 #  define __msgctl64 __msgctl
 # else
diff --git a/sysdeps/unix/sysv/linux/include/sys/shm.h b/sysdeps/unix/sysv/linux/include/sys/shm.h
index 530a1cdfc9..85177a632d 100644
--- a/sysdeps/unix/sysv/linux/include/sys/shm.h
+++ b/sysdeps/unix/sysv/linux/include/sys/shm.h
@@ -3,8 +3,6 @@
 
 #ifndef _ISOMAC
 
-# include <bits/types/struct_shmid64_ds.h>
-
 # if __TIMESIZE == 64
 #  define __shmctl64 __shmctl
 # else
diff --git a/sysdeps/unix/sysv/linux/include/sys/timex.h b/sysdeps/unix/sysv/linux/include/sys/timex.h
index e136ed172e..c554248ed9 100644
--- a/sysdeps/unix/sysv/linux/include/sys/timex.h
+++ b/sysdeps/unix/sysv/linux/include/sys/timex.h
@@ -23,10 +23,12 @@
 
 # ifndef _ISOMAC
 
+extern int __adjtimex (struct timex *__ntx);
 libc_hidden_proto (__adjtimex)
 
 #  include <time.h>
 #  include <struct___timeval64.h>
+
 /* Local definition of 64 bit time supporting timex struct */
 #  if __TIMESIZE == 64
 #   define __timex64 timex
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index e1171a34aa..da00a3d3c3 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -156,7 +156,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index b6c26c7a50..3fe358cc31 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -33,6 +33,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index a521506506..3e0f00210f 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2186,7 +2186,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index 18177307c8..b3a825d60e 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -226,6 +226,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/m68k/time64-compat.h b/sysdeps/unix/sysv/linux/m68k/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/m68k/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
index 67c7554803..c06e33a1cf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.18 gai_cancel F
 GLIBC_2.18 gai_error F
 GLIBC_2.18 gai_suspend F
 GLIBC_2.18 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index aba642460c..9bed39a8e8 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2166,7 +2166,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index 60397187b6..855c469c63 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -218,3 +218,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index 889dfbc0ee..1b8fc10087 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timer_gettime F
 GLIBC_2.18 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
index 67c7554803..c06e33a1cf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.18 gai_cancel F
 GLIBC_2.18 gai_error F
 GLIBC_2.18 gai_suspend F
 GLIBC_2.18 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index d3d653d144..54d7c83dad 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2163,7 +2163,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index 60397187b6..855c469c63 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -218,3 +218,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 889dfbc0ee..1b8fc10087 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timer_gettime F
 GLIBC_2.18 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/time64-compat.h b/sysdeps/unix/sysv/linux/microblaze/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/microblaze/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index a4ce56c34f..77dcc8ab7d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2157,7 +2157,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index b35d7f19ca..887a32a376 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -227,6 +227,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index 1539c1cef9..c4dd28e3b2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 51fbf0b1e1..c41f85ce01 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2155,7 +2155,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h b/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 5642781479..4208f9df82 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2163,7 +2163,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
index b35d7f19ca..887a32a376 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
@@ -227,6 +227,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index 1539c1cef9..c4dd28e3b2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h b/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/nios2/libanl.abilist b/sysdeps/unix/sysv/linux/nios2/libanl.abilist
index 6ff9c2d94e..6b080bd075 100644
--- a/sysdeps/unix/sysv/linux/nios2/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.21 gai_cancel F
 GLIBC_2.21 gai_error F
 GLIBC_2.21 gai_suspend F
 GLIBC_2.21 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 848cb2e599..ff0bb57cb6 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2204,7 +2204,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 924ad6e451..18407317e6 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -218,3 +218,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index b4ae7a2dc2..2458614125 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.21 timer_delete F
 GLIBC_2.21 timer_getoverrun F
 GLIBC_2.21 timer_gettime F
 GLIBC_2.21 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/time64-compat.h b/sysdeps/unix/sysv/linux/nios2/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/nios2/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 93e83fa602..57f1fe012a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2213,7 +2213,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 13b41dafb6..711812931d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -228,6 +228,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index ec0b6d69b1..6c9fa9c098 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2246,7 +2246,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 7bc5c8866b..18886f943d 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2211,7 +2211,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 lastlog_read F
 GLIBC_2.34 lastlog_write F
 GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 0a60f1cca2..28db1e4b6d 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -228,6 +228,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h b/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/semctl.c b/sysdeps/unix/sysv/linux/semctl.c
index 1043b2b80d..bb2690d30f 100644
--- a/sysdeps/unix/sysv/linux/semctl.c
+++ b/sysdeps/unix/sysv/linux/semctl.c
@@ -21,7 +21,6 @@
 #include <ipc_priv.h>
 #include <sysdep.h>
 #include <shlib-compat.h>
-#include <bits/types/struct_semid64_ds.h>  /* For __semid64_ds.  */
 #include <linux/posix_types.h>             /* For __kernel_mode_t.  */
 
 /* The struct used to issue the syscall.  For architectures that assume
diff --git a/sysdeps/unix/sysv/linux/sh/be/libanl.abilist b/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 06143b0283..725952a763 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2081,7 +2081,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index cabc5af858..0cdb30a3c1 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -218,6 +218,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libanl.abilist b/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index eab2af349b..7f07b96287 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2078,7 +2078,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index cabc5af858..0cdb30a3c1 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -218,6 +218,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sh/time64-compat.h b/sysdeps/unix/sysv/linux/sh/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sh/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 4783a8fa97..a688b939a9 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2202,7 +2202,59 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __fstat64_time64 F
+GLIBC_2.34 __fstatat64_time64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __localtime64 F
+GLIBC_2.34 __localtime64_r F
+GLIBC_2.34 __lstat64_time64 F
 GLIBC_2.34 __libc_start_main F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __stat64_time64 F
+GLIBC_2.34 __thrd_sleep64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index 390b6384d0..b5f763d9fd 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -228,6 +228,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index 38f0aad791..fb2769e87b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -34,6 +34,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h b/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/sys/timerfd.h b/sysdeps/unix/sysv/linux/sys/timerfd.h
index 4ad64c2259..790b9d5be6 100644
--- a/sysdeps/unix/sysv/linux/sys/timerfd.h
+++ b/sysdeps/unix/sysv/linux/sys/timerfd.h
@@ -47,9 +47,31 @@ extern int timerfd_settime (int __ufd, int __flags,
 			    const struct itimerspec *__utmr,
 			    struct itimerspec *__otmr) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timerfd_settime,
+                           (int __ufd, int __flags,
+                            const struct itimerspec *__restrict __value,
+                            struct itimerspec *__restrict __ovalue),
+                           __timerfd_settime64);
+# else
+# define timerfd_settime __timerfd_settime64
+# endif
+#endif
+
 /* Return the next expiration time of UFD.  */
 extern int timerfd_gettime (int __ufd, struct itimerspec *__otmr) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timerfd_gettime, (int __ufd,
+                                             struct itimerspec *__otmr),
+                           __timerfd_gettime64);
+# else
+# define timerfd_gettime __timerfd_gettime64
+# endif
+#endif
+
 __END_DECLS
 
 #endif /* sys/timerfd.h */
diff --git a/sysdeps/unix/sysv/linux/sys/timex.h b/sysdeps/unix/sysv/linux/sys/timex.h
index 37931ff496..298f0ca6e7 100644
--- a/sysdeps/unix/sysv/linux/sys/timex.h
+++ b/sysdeps/unix/sysv/linux/sys/timex.h
@@ -54,17 +54,33 @@ struct ntptimeval
 
 __BEGIN_DECLS
 
-extern int __adjtimex (struct timex *__ntx) __THROW;
+#ifndef __USE_TIME_BITS64
 extern int adjtimex (struct timex *__ntx) __THROW;
 
-#ifdef __REDIRECT_NTH
+# ifdef __REDIRECT_NTH
 extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv),
-			   ntp_gettimex);
+                           __ntp_gettime64);
+# else
+#  define ntp_gettime ntp_gettimex
+# endif
+extern int ntp_adjtime (struct timex *__tntx) __THROW;
 #else
-extern int ntp_gettimex (struct ntptimeval *__ntv) __THROW;
-# define ntp_gettime ntp_gettimex
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (adjtimex, (struct timex *__ntx),
+                           ___adjtimex64);
+extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv),
+                           __ntp_gettime64);
+extern int __REDIRECT_NTH (ntp_gettimex, (struct ntptimeval *__ntv),
+                           __ntp_gettimex64);
+extern int __REDIRECT_NTH (ntp_adjtime, (struct timex *__ntx),
+                           ___adjtimex64);
+# else
+#  define adjtimex ___adjtimex64
+#  define ntp_adjtime ___adjtimex64
+#  define ntp_gettime __ntp_gettime64
+#  define ntp_gettimex __ntp_gettimex64
+# endif
 #endif
-extern int ntp_adjtime (struct timex *__tntx) __THROW;
 
 __END_DECLS
 
diff --git a/sysdeps/unix/sysv/linux/time64-compat.h b/sysdeps/unix/sysv/linux/time64-compat.h
new file mode 100644
index 0000000000..e44b6b68e3
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/time64-compat.h
@@ -0,0 +1,3 @@
+/* Header included by Versions to generate the 64 bit time_t compat symbols.
+   Legacy ABIs with default 32 bit time support define TIME64_NON_DEFAULT to
+   generate the 64 bit symbols.  */
diff --git a/sysvipc/sys/msg.h b/sysvipc/sys/msg.h
index 9ddedf5e15..f31a43757d 100644
--- a/sysvipc/sys/msg.h
+++ b/sysvipc/sys/msg.h
@@ -58,7 +58,17 @@ struct msgbuf
 __BEGIN_DECLS
 
 /* Message queue control operation.  */
+#ifndef __USE_TIME_BITS64
 extern int msgctl (int __msqid, int __cmd, struct msqid_ds *__buf) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (msgctl,
+                           (int __msqid, int __cmd, struct msqid_ds *__buf),
+                           __msgctl64);
+# else
+#  define msgctl __msgctl64
+# endif
+#endif
 
 /* Get messages queue.  */
 extern int msgget (key_t __key, int __msgflg) __THROW;
diff --git a/sysvipc/sys/sem.h b/sysvipc/sys/sem.h
index 03b65dff21..4eb4c51bbe 100644
--- a/sysvipc/sys/sem.h
+++ b/sysvipc/sys/sem.h
@@ -48,7 +48,17 @@ struct sembuf
 __BEGIN_DECLS
 
 /* Semaphore control operation.  */
+#ifndef __USE_TIME_BITS64
 extern int semctl (int __semid, int __semnum, int __cmd, ...) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (semctl,
+                           (int __semid, int __semnum, int __cmd, ...),
+                           __semctl64);
+# else
+#  define semctl __semctl64
+# endif
+#endif
 
 /* Get semaphore.  */
 extern int semget (key_t __key, int __nsems, int __semflg) __THROW;
@@ -58,8 +68,19 @@ extern int semop (int __semid, struct sembuf *__sops, size_t __nsops) __THROW;
 
 #ifdef __USE_GNU
 /* Operate on semaphore with timeout.  */
+# ifndef __USE_TIME_BITS64
 extern int semtimedop (int __semid, struct sembuf *__sops, size_t __nsops,
 		       const struct timespec *__timeout) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (semtimedop, (int __semid, struct sembuf *__sops,
+                                        size_t __nsops,
+                                        const struct timespec *__timeout),
+                           __semtimedop64);
+#  else
+#   define semtimedop __semtimedop64
+#  endif
+# endif
 #endif
 
 __END_DECLS
diff --git a/sysvipc/sys/shm.h b/sysvipc/sys/shm.h
index 7506ba67bf..b09e0497e6 100644
--- a/sysvipc/sys/shm.h
+++ b/sysvipc/sys/shm.h
@@ -46,7 +46,17 @@ __BEGIN_DECLS
    facility.  The definition is found in XPG4.2.  */
 
 /* Shared memory control operation.  */
+#ifndef __USE_TIME_BITS64
 extern int shmctl (int __shmid, int __cmd, struct shmid_ds *__buf) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (shmctl,
+                           (int __shmid, int __cmd, struct shmid_ds *__buf),
+                           __shmctl64);
+# else
+#  define shmctl __shmctl64
+# endif
+#endif
 
 /* Get shared memory segment.  */
 extern int shmget (key_t __key, size_t __size, int __shmflg) __THROW;
diff --git a/time/sys/time.h b/time/sys/time.h
index 42f91f186b..d21411c0b4 100644
--- a/time/sys/time.h
+++ b/time/sys/time.h
@@ -63,10 +63,21 @@ struct timezone
    use localtime etc. instead.
    This function itself is semi-obsolete;
    most callers should use time or clock_gettime instead. */
+#ifndef __USE_TIME_BITS64
 extern int gettimeofday (struct timeval *__restrict __tv,
 			 void *__restrict __tz) __THROW __nonnull ((1));
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (gettimeofday, (struct timeval *__restrict __tv,
+                                          void *__restrict __tz),
+                           __gettimeofday64) __nonnull ((1));
+# else
+#  define gettimeofday __gettimeofday64
+# endif
+#endif
 
 #ifdef __USE_MISC
+# ifndef __USE_TIME_BITS64
 /* Set the current time of day and timezone information.
    This call is restricted to the super-user.
    Setting the timezone in this way is obsolete, but we don't yet
@@ -82,6 +93,20 @@ extern int settimeofday (const struct timeval *__tv,
    This call is restricted to the super-user.  */
 extern int adjtime (const struct timeval *__delta,
 		    struct timeval *__olddelta) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (settimeofday, (const struct timeval *__tv,
+                                          const struct timezone *__tz),
+                           __settimeofday64);
+
+extern int __REDIRECT_NTH (adjtime, (const struct timeval *__delta,
+                                     struct timeval *__olddelta),
+                           __adjtime64);
+#  else
+#   define settimeofday __settimeofday64
+#   define adjtime __adjtime64
+#  endif
+# endif
 #endif
 
 
@@ -118,6 +143,7 @@ typedef enum __itimer_which __itimer_which_t;
 typedef int __itimer_which_t;
 #endif
 
+#ifndef __USE_TIME_BITS64
 /* Set *VALUE to the current setting of timer WHICH.
    Return 0 on success, -1 on errors.  */
 extern int getitimer (__itimer_which_t __which,
@@ -136,21 +162,66 @@ extern int setitimer (__itimer_which_t __which,
 extern int utimes (const char *__file, const struct timeval __tvp[2])
      __THROW __nonnull ((1));
 
+#else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (getitimer, (__itimer_which_t __which,
+                                       struct itimerval *__value),
+                           __getitimer64);
+
+extern int __REDIRECT_NTH (setitimer, (__itimer_which_t __which,
+                                       const struct itimerval *__restrict __new,
+                                       struct itimerval *__restrict __old),
+                           __setitimer64);
+
+extern int __REDIRECT_NTH (utimes, (const char *__file,
+                                    const struct timeval __tvp[2]),
+                           __utimes64) __nonnull ((1));
+# else
+#  define getitimer __getitimer64
+#  define setitimer __setitimer64
+#  define utimes __utimes64
+# endif
+#endif
+
 #ifdef __USE_MISC
+# ifndef __USE_TIME_BITS64
 /* Same as `utimes', but does not follow symbolic links.  */
 extern int lutimes (const char *__file, const struct timeval __tvp[2])
      __THROW __nonnull ((1));
 
 /* Same as `utimes', but takes an open file descriptor instead of a name.  */
 extern int futimes (int __fd, const struct timeval __tvp[2]) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (lutimes, (const char *__file,
+                                     const struct timeval __tvp[2]),
+                           __lutimes64) __nonnull ((1));
+
+extern int __REDIRECT_NTH (futimes, (int __fd, const struct timeval __tvp[2]),
+                           __futimes64);
+#  else
+#   define lutimes __lutimes64
+#   define futimes __futimes64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
+# ifndef __USE_TIME_BITS64
 /* Change the access time of FILE relative to FD to TVP[0] and the
    modification time of FILE to TVP[1].  If TVP is a null pointer, use
    the current time instead.  Returns 0 on success, -1 on errors.  */
 extern int futimesat (int __fd, const char *__file,
 		      const struct timeval __tvp[2]) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (futimesat, (int __fd, const char *__file,
+                                       const struct timeval __tvp[2]),
+                           __futimesat64);
+#  else
+#   define futimesat __futimesat64
+#  endif
+# endif
 #endif
 
 
diff --git a/time/time.h b/time/time.h
index 3bf206be0b..57f910d5bd 100644
--- a/time/time.h
+++ b/time/time.h
@@ -71,6 +71,7 @@ __BEGIN_DECLS
    The result / CLOCKS_PER_SEC is program time in seconds.  */
 extern clock_t clock (void) __THROW;
 
+#ifndef __USE_TIME_BITS64
 /* Return the current time and put it in *TIMER if TIMER is not NULL.  */
 extern time_t time (time_t *__timer) __THROW;
 
@@ -80,7 +81,18 @@ extern double difftime (time_t __time1, time_t __time0)
 
 /* Return the `time_t' representation of TP and normalize TP.  */
 extern time_t mktime (struct tm *__tp) __THROW;
-
+#else
+# ifdef __REDIRECT_NTH
+extern time_t __REDIRECT_NTH (time, (time_t *__timer), __time64);
+extern double __REDIRECT_NTH (difftime, (time_t __time1, time_t __time0),
+                              __difftime64) __attribute__ ((__const__));
+extern time_t __REDIRECT_NTH (mktime, (struct tm *__tp), __mktime64);
+# else
+#  define time __time64
+#  define difftime __difftime64
+#  define mktime __mktime64
+# endif
+#endif
 
 /* Format TP into S according to FORMAT.
    Write no more than MAXSIZE characters and return the number
@@ -114,6 +126,7 @@ extern char *strptime_l (const char *__restrict __s,
 #endif
 
 
+#ifndef __USE_TIME_BITS64
 /* Return the `struct tm' representation of *TIMER
    in Universal Coordinated Time (aka Greenwich Mean Time).  */
 extern struct tm *gmtime (const time_t *__timer) __THROW;
@@ -122,7 +135,20 @@ extern struct tm *gmtime (const time_t *__timer) __THROW;
    of *TIMER in the local timezone.  */
 extern struct tm *localtime (const time_t *__timer) __THROW;
 
+#else
+# ifdef __REDIRECT_NTH
+extern struct tm*__REDIRECT_NTH (gmtime, (const time_t *__timer), __gmtime64);
+extern struct tm *__REDIRECT_NTH (localtime, (const time_t *__timer),
+				  __localtime64);
+# else
+#  define gmtime __gmtime64
+#  define localtime __localtime64
+# endif
+#endif
+
+
 #if defined __USE_POSIX || __GLIBC_USE (ISOC2X)
+# ifndef __USE_TIME_BITS64
 /* Return the `struct tm' representation of *TIMER in UTC,
    using *TP to store the result.  */
 extern struct tm *gmtime_r (const time_t *__restrict __timer,
@@ -132,6 +158,20 @@ extern struct tm *gmtime_r (const time_t *__restrict __timer,
    using *TP to store the result.  */
 extern struct tm *localtime_r (const time_t *__restrict __timer,
 			       struct tm *__restrict __tp) __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern struct tm*__REDIRECT_NTH (gmtime_r, (const time_t *__restrict __timer,
+                                            struct tm *__restrict __tp),
+                                 __gmtime64_r);
+
+extern struct tm*__REDIRECT_NTH (localtime_r, (const time_t *__restrict __t,
+                                               struct tm *__restrict __tp),
+                                 __localtime64_r);
+#  else
+#   define gmtime_r __gmtime64_r
+#   define localtime_r __localtime_r
+#  endif
+# endif
 #endif	/* POSIX || C2X */
 
 /* Return a string of the form "Day Mon dd hh:mm:ss yyyy\n"
@@ -139,7 +179,15 @@ extern struct tm *localtime_r (const time_t *__restrict __timer,
 extern char *asctime (const struct tm *__tp) __THROW;
 
 /* Equivalent to `asctime (localtime (timer))'.  */
+#ifndef __USE_TIME_BITS64
 extern char *ctime (const time_t *__timer) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern char *__REDIRECT_NTH (ctime, (const time_t *__timer), __ctime64);
+# else
+#  define ctime __ctime64
+# endif
+#endif
 
 #if defined __USE_POSIX || __GLIBC_USE (ISOC2X)
 /* Reentrant versions of the above functions.  */
@@ -150,8 +198,18 @@ extern char *asctime_r (const struct tm *__restrict __tp,
 			char *__restrict __buf) __THROW;
 
 /* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'.  */
+#ifndef __USE_TIME_BITS64
 extern char *ctime_r (const time_t *__restrict __timer,
 		      char *__restrict __buf) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern char *__REDIRECT_NTH (ctime_r, (const time_t *__restrict __timer,
+                                       char *__restrict __buf), __ctime64_r);
+# else
+#  define ctime_r __ctime64_r
+# endif
+#endif
+
 #endif	/* POSIX || C2X */
 
 
@@ -187,7 +245,15 @@ extern long int timezone;
    localtime package.  These are included only for compatibility.  */
 
 /* Like `mktime', but for TP represents Universal Time, not local time.  */
+#ifndef __USE_TIME_BITS64
 extern time_t timegm (struct tm *__tp) __THROW;
+#else
+# ifdef __REDIRECT_NTH
+extern time_t __REDIRECT_NTH (timegm, (struct tm *__tp), __timegm64);
+# else
+#  define timegm __timegm64
+# endif
+#endif
 
 /* Another name for `mktime'.  */
 extern time_t timelocal (struct tm *__tp) __THROW;
@@ -198,6 +264,7 @@ extern int dysize (int __year) __THROW  __attribute__ ((__const__));
 
 
 #ifdef __USE_POSIX199309
+# ifndef __USE_TIME_BITS64
 /* Pause execution for a number of nanoseconds.
 
    This function is a cancellation point and therefore not marked with
@@ -205,7 +272,6 @@ extern int dysize (int __year) __THROW  __attribute__ ((__const__));
 extern int nanosleep (const struct timespec *__requested_time,
 		      struct timespec *__remaining);
 
-
 /* Get resolution of clock CLOCK_ID.  */
 extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __THROW;
 
@@ -215,15 +281,46 @@ extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW;
 /* Set clock CLOCK_ID to value TP.  */
 extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp)
      __THROW;
+# else
+#  ifdef __REDIRECT
+extern int __REDIRECT (nanosleep, (const struct timespec *__requested_time,
+                                   struct timespec *__remaining),
+                       __nanosleep64);
+extern int __REDIRECT_NTH (clock_getres, (clockid_t __clock_id,
+                                          struct timespec *__res),
+                           __clock_getres64);
+extern int __REDIRECT_NTH (clock_gettime, (clockid_t __clock_id, struct
+                                           timespec *__tp), __clock_gettime64);
+extern int __REDIRECT_NTH (clock_settime, (clockid_t __clock_id, const struct
+                                           timespec *__tp), __clock_settime64);
+#  else
+#   define nanosleep __nanosleep64
+#   define clock_getres __clock_getres64
+#   define clock_gettime __clock_gettime64
+#   define clock_settime __clock_settime64
+#  endif
+# endif
+
 
 # ifdef __USE_XOPEN2K
 /* High-resolution sleep with the specified clock.
 
    This function is a cancellation point and therefore not marked with
    __THROW.  */
+#  ifndef __USE_TIME_BITS64
 extern int clock_nanosleep (clockid_t __clock_id, int __flags,
 			    const struct timespec *__req,
 			    struct timespec *__rem);
+#  else
+#   ifdef __REDIRECT
+extern int __REDIRECT (clock_nanosleep, (clockid_t __clock_id, int __flags,
+                                         const struct timespec *__req,
+                                         struct timespec *__rem),
+                       __clock_nanosleep_time64);
+#   else
+#    define clock_nanosleep __clock_nanosleep_time64
+#   endif
+#  endif
 
 /* Return clock ID for CPU-time clock.  */
 extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __THROW;
@@ -239,6 +336,7 @@ extern int timer_create (clockid_t __clock_id,
 extern int timer_delete (timer_t __timerid) __THROW;
 
 /* Set timer TIMERID to VALUE, returning old value in OVALUE.  */
+# ifndef __USE_TIME_BITS64
 extern int timer_settime (timer_t __timerid, int __flags,
 			  const struct itimerspec *__restrict __value,
 			  struct itimerspec *__restrict __ovalue) __THROW;
@@ -246,6 +344,21 @@ extern int timer_settime (timer_t __timerid, int __flags,
 /* Get current value of timer TIMERID and store it in VALUE.  */
 extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
      __THROW;
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (timer_settime, (timer_t __timerid, int __flags,
+     const struct itimerspec *__restrict __value,
+     struct itimerspec *__restrict __ovalue),
+                          __timer_settime64);
+
+extern int __REDIRECT_NTH (timer_gettime, (timer_t __timerid,
+                                           struct itimerspec *__value),
+                           __timer_gettime64);
+#  else
+#   define timer_settime __timer_settime64
+#   define timer_gettime __timer_gettime64
+#  endif
+# endif
 
 /* Get expiration overrun for timer TIMERID.  */
 extern int timer_getoverrun (timer_t __timerid) __THROW;
@@ -253,9 +366,18 @@ extern int timer_getoverrun (timer_t __timerid) __THROW;
 
 
 #ifdef __USE_ISOC11
+# ifndef __USE_TIME_BITS64
 /* Set TS to calendar time based in time base BASE.  */
 extern int timespec_get (struct timespec *__ts, int __base)
      __THROW __nonnull ((1));
+# else
+#  ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (timespec_get, (struct timespec *__ts, int __base),
+                           __timespec_get64) __nonnull ((1));
+#  else
+#   define timespec_get __timespec_get64
+#  endif
+# endif
 #endif


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [glibc/azanella/y2038] y2038: Add support for 64 bit time on legacy ABIs
@ 2021-02-23 20:41 Adhemerval Zanella
  0 siblings, 0 replies; 10+ messages in thread
From: Adhemerval Zanella @ 2021-02-23 20:41 UTC (permalink / raw)
  To: glibc-cvs

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=178e18a1130555175108b91b66c68e111faea56d

commit 178e18a1130555175108b91b66c68e111faea56d
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Wed Feb 17 13:35:19 2021 -0300

    y2038: Add support for 64 bit time on legacy ABIs
    
    A new build flag, _TIME_BITS, enables the usage of the newer 64 bit
    time symbols for legacy ABI (where 32 bit time_t is default).  The 64
    bit time support is only enabled if LFS (_FILE_OFFSET_BITS=64) is
    also used.
    
    Different than LFS support, the y2038 symbols are added only for the
    required ABIs (armhf, csky, hppa, i386, m68k, microblaze, mips32,
    mips64-n32, nios2, powerpc32, sparc32, s390-32, and sh).  The ABIs with
    64 bit time support are unchanged, both for symbol and types
    redirection.
    
    On Linux apropoer 64 bit time support requires a minimum of kernel
    version v5.1.  Otherwise, the 32 bit fallbacks are used and might
    results in error with overflow return code (EOVERFLOW).
    
    The i686-gnu does not yet support 64 bit time, and trying to build
    it using -D_TIME_BITS=64 results in an error.
    
    This patch also converts following implemetations to support 64 bit
    time:
    
      * libc:
        - adjtimex
        - adjtime
        - clock_adjtime
        - clock_getres
        - clock_gettime
        - clock_nanosleep_time
        - clock_settime
        - ctime
        - ctime_r
        - difftime
        - futimens
        - futimes
        - futimesat
        - getitimer
        - getrusage
        - gettimeofday
        - gmtime
        - gmtime
        - lutimes
        - mktime
        - msgctl
        - nanosleep
        - ntp_gettime
        - ntp_gettimex
        - ppoll
        - pselect
        - recvmmsg
        - sched_rr_get_interval
        - select
        - semctl
        - semtimedop
        - setitimer
        - settimeofday
        - shmctl
        - sigtimedwait
        - time
        - timegm
        - timerfd_gettime
        - timerfd_settime
        - timespec_get
        - utime
        - utimensat
        - utimes
        - wait3
        - wait4
    
      * libpthread:
        - mtx_timedlock
        - pthread_clockjoin_np
        - pthread_cond_clockwait
        - pthread_cond_timedwait
        - pthread_mutex_clocklock
        - pthread_mutex_timedlock
        - pthread_rwlock_clockrdlock
        - pthread_rwlock_clockwrlock
        - pthread_rwlock_timedrdlock
        - pthread_rwlock_timedwrlock
        - pthread_timedjoin_np
        - sem_clockwait
        - sem_timedwait
    
      * librt:
        - aio_suspend_time
        - mq_timedreceive_time
        - mq_timedsend_time
        - timer_gettime
        - timer_settime
    
      * libanl:
        - gai_suspend

Diff:
---
 Makefile                                           |   2 +-
 NEWS                                               |   4 +
 include/features-time64.h                          |  37 ++++++
 include/features.h                                 |   2 +
 io/sys/poll.h                                      |  11 ++
 io/sys/stat.h                                      |  20 +++
 io/utime.h                                         |  10 ++
 manual/creature.texi                               |  44 +++++++
 misc/sys/select.h                                  |  27 ++++
 posix/sched.h                                      |   9 ++
 posix/sys/wait.h                                   |  20 +++
 resolv/netdb.h                                     |  11 ++
 resource/sys/resource.h                            |  10 ++
 rt/aio.h                                           |  25 +++-
 rt/mqueue.h                                        |  27 ++++
 signal/signal.h                                    |  12 ++
 socket/sys/socket.h                                |  11 ++
 sysdeps/mach/hurd/bits/features-time64.h           |  21 +++
 sysdeps/nptl/pthread.h                             | 117 +++++++++++++++++
 sysdeps/pthread/semaphore.h                        |  23 ++++
 sysdeps/pthread/threads.h                          |  33 +++++
 sysdeps/unix/sysv/linux/Versions                   | 106 +++++++++++++++
 sysdeps/unix/sysv/linux/arm/be/libanl.abilist      |   1 +
 sysdeps/unix/sysv/linux/arm/be/libc.abilist        |  45 +++++++
 sysdeps/unix/sysv/linux/arm/be/libpthread.abilist  |  14 ++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist       |   5 +
 sysdeps/unix/sysv/linux/arm/le/libanl.abilist      |   1 +
 sysdeps/unix/sysv/linux/arm/le/libc.abilist        |  45 +++++++
 sysdeps/unix/sysv/linux/arm/le/libpthread.abilist  |  14 ++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist       |   5 +
 sysdeps/unix/sysv/linux/arm/time64-compat.h        |   2 +
 sysdeps/unix/sysv/linux/bits/msq.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/sem.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/shm.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/time.h                |  10 ++
 sysdeps/unix/sysv/linux/csky/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/csky/libc.abilist          |  45 +++++++
 sysdeps/unix/sysv/linux/csky/libpthread.abilist    |  14 ++
 sysdeps/unix/sysv/linux/csky/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/csky/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/hppa/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/hppa/libc.abilist          |  45 +++++++
 sysdeps/unix/sysv/linux/hppa/libpthread.abilist    |  14 ++
 sysdeps/unix/sysv/linux/hppa/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/hppa/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/i386/Makefile              |   2 +
 sysdeps/unix/sysv/linux/i386/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/i386/libc.abilist          |  45 +++++++
 sysdeps/unix/sysv/linux/i386/libpthread.abilist    |  14 ++
 sysdeps/unix/sysv/linux/i386/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/i386/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/include/sys/msg.h          |   2 -
 sysdeps/unix/sysv/linux/include/sys/shm.h          |   2 -
 sysdeps/unix/sysv/linux/include/sys/timex.h        |   1 +
 .../unix/sysv/linux/m68k/coldfire/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist |  45 +++++++
 .../sysv/linux/m68k/coldfire/libpthread.abilist    |  14 ++
 .../unix/sysv/linux/m68k/coldfire/librt.abilist    |   5 +
 sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist |   1 +
 sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist   |  45 +++++++
 .../unix/sysv/linux/m68k/m680x0/libpthread.abilist |  14 ++
 sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist  |   5 +
 sysdeps/unix/sysv/linux/m68k/time64-compat.h       |   2 +
 .../unix/sysv/linux/microblaze/be/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/microblaze/be/libc.abilist |  45 +++++++
 .../sysv/linux/microblaze/be/libpthread.abilist    |  14 ++
 .../unix/sysv/linux/microblaze/be/librt.abilist    |   5 +
 .../unix/sysv/linux/microblaze/le/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/microblaze/le/libc.abilist |  45 +++++++
 .../sysv/linux/microblaze/le/libpthread.abilist    |  14 ++
 .../unix/sysv/linux/microblaze/le/librt.abilist    |   5 +
 sysdeps/unix/sysv/linux/microblaze/time64-compat.h |   2 +
 .../unix/sysv/linux/mips/mips32/fpu/libc.abilist   |  45 +++++++
 sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist |   1 +
 .../unix/sysv/linux/mips/mips32/libpthread.abilist |  14 ++
 sysdeps/unix/sysv/linux/mips/mips32/librt.abilist  |   5 +
 .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist |  45 +++++++
 .../unix/sysv/linux/mips/mips32/time64-compat.h    |   2 +
 .../unix/sysv/linux/mips/mips64/n32/libanl.abilist |   1 +
 .../unix/sysv/linux/mips/mips64/n32/libc.abilist   |  45 +++++++
 .../sysv/linux/mips/mips64/n32/libpthread.abilist  |  14 ++
 .../unix/sysv/linux/mips/mips64/n32/librt.abilist  |   5 +
 .../sysv/linux/mips/mips64/n32/time64-compat.h     |   2 +
 sysdeps/unix/sysv/linux/nios2/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/nios2/libc.abilist         |  45 +++++++
 sysdeps/unix/sysv/linux/nios2/libpthread.abilist   |  14 ++
 sysdeps/unix/sysv/linux/nios2/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/nios2/time64-compat.h      |   2 +
 .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist  |  45 +++++++
 .../sysv/linux/powerpc/powerpc32/libanl.abilist    |   1 +
 .../linux/powerpc/powerpc32/libpthread.abilist     |  14 ++
 .../sysv/linux/powerpc/powerpc32/librt.abilist     |   5 +
 .../linux/powerpc/powerpc32/nofpu/libc.abilist     |  45 +++++++
 .../sysv/linux/powerpc/powerpc32/time64-compat.h   |   2 +
 .../unix/sysv/linux/s390/s390-32/libanl.abilist    |   1 +
 sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist  |  45 +++++++
 .../sysv/linux/s390/s390-32/libpthread.abilist     |  14 ++
 sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist |   5 +
 .../unix/sysv/linux/s390/s390-32/time64-compat.h   |   2 +
 sysdeps/unix/sysv/linux/semctl.c                   |   1 -
 sysdeps/unix/sysv/linux/sh/be/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/sh/be/libc.abilist         |  45 +++++++
 sysdeps/unix/sysv/linux/sh/be/libpthread.abilist   |  14 ++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/sh/le/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/sh/le/libc.abilist         |  45 +++++++
 sysdeps/unix/sysv/linux/sh/le/libpthread.abilist   |  14 ++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/sh/time64-compat.h         |   2 +
 .../unix/sysv/linux/sparc/sparc32/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist |  45 +++++++
 .../sysv/linux/sparc/sparc32/libpthread.abilist    |  14 ++
 .../unix/sysv/linux/sparc/sparc32/librt.abilist    |   5 +
 .../unix/sysv/linux/sparc/sparc32/time64-compat.h  |   2 +
 sysdeps/unix/sysv/linux/sys/timerfd.h              |  22 ++++
 sysdeps/unix/sysv/linux/sys/timex.h                |  37 +++++-
 sysdeps/unix/sysv/linux/time64-compat.h            |   3 +
 sysvipc/sys/msg.h                                  |  10 ++
 sysvipc/sys/sem.h                                  |  21 +++
 sysvipc/sys/shm.h                                  |  10 ++
 time/bits/types/struct_timespec.h                  |   1 +
 time/sys/time.h                                    |  91 +++++++++++++
 time/time.h                                        | 146 +++++++++++++++++++++
 123 files changed, 2153 insertions(+), 12 deletions(-)

diff --git a/Makefile b/Makefile
index 71c7d8b5ec..2fd88294f5 100644
--- a/Makefile
+++ b/Makefile
@@ -68,7 +68,7 @@ endif # $(AUTOCONF) = no
 		   subdir_objs subdir_stubs subdir_testclean		\
 		   $(addprefix install-, no-libc.a bin lib data headers others)
 \f
-headers := limits.h values.h features.h gnu-versions.h \
+headers := limits.h values.h features.h features-time64.h gnu-versions.h \
 	   bits/xopen_lim.h gnu/libc-version.h stdc-predef.h \
 	   bits/libc-header-start.h
 
diff --git a/NEWS b/NEWS
index 85e84fe536..1b42b864c5 100644
--- a/NEWS
+++ b/NEWS
@@ -14,6 +14,10 @@ Major new features:
   constant on Linux.  MINSIGSTKSZ is redefined to sysconf(_SC_MINSIGSTKSZ)
   and SIGSTKSZ is redefined to sysconf (_SC_SIGSTKSZ).
 
+* Add support for 64 bit time_t support for ABIs with defaults to 32 bit
+  time_t.  This is enabled with the _TIME_BITS flag set to 64 and it
+  is support on Linux with a minimum version of 5.1.
+
 Deprecated and removed features, and other changes affecting compatibility:
 
   [Add deprecations, removals and changes affecting compatibility here]
diff --git a/include/features-time64.h b/include/features-time64.h
new file mode 100644
index 0000000000..c6a0a1874c
--- /dev/null
+++ b/include/features-time64.h
@@ -0,0 +1,37 @@
+/* Features part to handle 64-bit time_t support.
+   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/>.  */
+
+/* We need to know the word size in order to check the time size.  */
+#include <bits/wordsize.h>
+#include <bits/timesize.h>
+
+#if defined _TIME_BITS
+# if _TIME_BITS == 64
+#  if ! defined (_FILE_OFFSET_BITS) || _FILE_OFFSET_BITS != 64
+#   error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64"
+#  elif __TIMESIZE == 32
+#   define __USE_TIME_BITS64	1
+#  endif
+# elif _TIME_BITS == 32
+#  if __TIMESIZE > 32
+#   error "_TIME_BITS=32 is not compatible with __TIMESIZE > 32"
+#  endif
+# else
+#  error Invalid _TIME_BITS value (can only be 32 or 64 bits)
+# endif
+#endif
diff --git a/include/features.h b/include/features.h
index eb97470afa..9d39e11345 100644
--- a/include/features.h
+++ b/include/features.h
@@ -387,6 +387,8 @@
 # define __USE_FILE_OFFSET64	1
 #endif
 
+#include <features-time64.h>
+
 #if defined _DEFAULT_SOURCE
 # define __USE_MISC	1
 #endif
diff --git a/io/sys/poll.h b/io/sys/poll.h
index 2431dd1e14..5dfb721fe5 100644
--- a/io/sys/poll.h
+++ b/io/sys/poll.h
@@ -63,6 +63,17 @@ extern int poll (struct pollfd *__fds, nfds_t __nfds, int __timeout);
 extern int ppoll (struct pollfd *__fds, nfds_t __nfds,
 		  const struct timespec *__timeout,
 		  const __sigset_t *__ss);
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (ppoll, (struct pollfd *__fds, nfds_t __nfds,
+                               const struct timespec *__timeout,
+                               const __sigset_t *__ss),
+                       __ppoll64);
+#  else
+#  define ppoll __ppoll64
+#  endif
+# endif
 #endif
 
 __END_DECLS
diff --git a/io/sys/stat.h b/io/sys/stat.h
index 549375c087..d71fc202c7 100644
--- a/io/sys/stat.h
+++ b/io/sys/stat.h
@@ -361,11 +361,31 @@ extern int utimensat (int __fd, const char *__path,
 		      const struct timespec __times[2],
 		      int __flags)
      __THROW __nonnull ((2));
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (utimensat, (int fd, const char *__path,
+                                       const struct timespec __times[2],
+                                       int flags),
+                           __utimensat64) __nonnull ((2));
+#  else
+#  define utimensat __utimensat64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_XOPEN2K8
 /* Set file access and modification times of the file associated with FD.  */
 extern int futimens (int __fd, const struct timespec __times[2]) __THROW;
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (futimens, (int fd, const struct timespec __times[2]),
+                           __futimens64);
+#  else
+#  define futimens __futimens64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
diff --git a/io/utime.h b/io/utime.h
index c7612d0838..c1ebf08fe6 100644
--- a/io/utime.h
+++ b/io/utime.h
@@ -50,6 +50,16 @@ extern int utime (const char *__file,
 		  const struct utimbuf *__file_times)
      __THROW __nonnull ((1));
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (utime, (const char *__file,
+                                   const struct utimbuf *__file_times),
+                           __utime64);
+# else
+# define utime __utime64
+# endif
+#endif
+
 __END_DECLS
 
 #endif /* utime.h */
diff --git a/manual/creature.texi b/manual/creature.texi
index 5090735e4f..606b73d184 100644
--- a/manual/creature.texi
+++ b/manual/creature.texi
@@ -165,6 +165,50 @@ This macro was introduced as part of the Large File Support extension
 (LFS).
 @end defvr
 
+@defvr Macro _TIME_BITS
+This macro determines the bit size of @code{time_t} (and therefore the
+bit size of all @code{time_t} derived types and the prototypes of all
+related functions).  If @code{_TIME_BITS} is undefined, the bit size of
+@code{time_t} is architecture dependent.
+
+Possible values of @code{_TIME_BITS}:
+@enumerate
+@item
+@code{_TIME_BITS=64} and port from the outset uses 64-bit
+@code{time_t} and word size equals to @w{64 bits} (e.g. x86_64) - no
+action
+
+@item
+@code{_TIME_BITS=32} and port from the outset uses 32-bit
+@code{time_t} and word size equals to @w{64 bits} (e.g. ARM) - no
+action
+
+@item
+@code{_TIME_BITS=64} and port from the outset uses 64-bit
+@code{time_t} and word size equals to @w{32 bits} (e.g. ARC, RV32)
+- no action
+
+@item
+@code{_TIME_BITS=64} and port from the outset uses 32-bit
+@code{time_t} and word size equals to @w{32 bits} (e.g. ARM)
+- the @code{time_t} is modified to be able to hold 64-bit time.
+
+@item
+For any other use case the compile-time error is emitted.
+@end enumerate
+
+The @code{_TIME_BITS} can be only used when @code{_FILE_OFFSET_BITS=64}
+is also defined.
+
+For the point @b{4} above, calls to proper syscalls depend on the
+Linux kernel version on which the system is running. For Linux kernel
+version above @b{5.1} syscalls supporting 64-bit time are used. Otherwise,
+a fallback code is used with legacy (i.e. 32-bit) syscalls.
+
+By using this macro certain ports gain support for 64-bit time and as
+a result become immune to Y2038 problem.
+@end defvr
+
 @defvr Macro _ISOC99_SOURCE
 @standards{GNU, (none)}
 If this macro is defined, features from ISO C99 are included.  Since
diff --git a/misc/sys/select.h b/misc/sys/select.h
index 188a7fe607..fa3ed326f8 100644
--- a/misc/sys/select.h
+++ b/misc/sys/select.h
@@ -103,6 +103,19 @@ extern int select (int __nfds, fd_set *__restrict __readfds,
 		   fd_set *__restrict __exceptfds,
 		   struct timeval *__restrict __timeout);
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT)
+extern int __REDIRECT (select,
+                       (int __nfds, fd_set *__restrict __readfds,
+                        fd_set *__restrict __writefds,
+                        fd_set *__restrict __exceptfds,
+                        struct timeval *__restrict __timeout),
+                       __select64);
+# else
+#  define select __select64
+# endif
+#endif
+
 #ifdef __USE_XOPEN2K
 /* Same as above only that the TIMEOUT value is given with higher
    resolution and a sigmask which is been set temporarily.  This version
@@ -115,6 +128,20 @@ extern int pselect (int __nfds, fd_set *__restrict __readfds,
 		    fd_set *__restrict __exceptfds,
 		    const struct timespec *__restrict __timeout,
 		    const __sigset_t *__restrict __sigmask);
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (pselect,
+                       (int __nfds, fd_set *__restrict __readfds,
+                        fd_set *__restrict __writefds,
+                        fd_set *__restrict __exceptfds,
+                        const struct timespec *__restrict __timeout,
+                        const __sigset_t *__restrict __sigmask),
+                       __pselect64);
+#  else
+#   define pselect __pselect64
+#  endif
+# endif
 #endif
 
 
diff --git a/posix/sched.h b/posix/sched.h
index d8ce08a3ea..37a92e7cde 100644
--- a/posix/sched.h
+++ b/posix/sched.h
@@ -76,6 +76,15 @@ extern int sched_get_priority_min (int __algorithm) __THROW;
 /* Get the SCHED_RR interval for the named process.  */
 extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (sched_rr_get_interval,
+                           (__pid_t __pid, struct timespec *__t),
+                           __sched_rr_get_interval64);
+# else
+# define sched_rr_get_interval __sched_rr_get_interval64
+# endif
+#endif
 
 #ifdef __USE_GNU
 /* Access macros for `cpu_set'.  */
diff --git a/posix/sys/wait.h b/posix/sys/wait.h
index 9e7bb7f154..c56257a1d4 100644
--- a/posix/sys/wait.h
+++ b/posix/sys/wait.h
@@ -146,12 +146,32 @@ struct rusage;
    otherwise don't.  */
 extern __pid_t wait3 (int *__stat_loc, int __options,
 		      struct rusage * __usage) __THROWNL;
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT_NTHNL)
+extern __pid_t __REDIRECT_NTHNL (wait3, (int *__stat_loc, int __options,
+                                         struct rusage * __usage),
+                                 __wait3_time64);
+#  else
+#  define wait3 __wait3_time64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_MISC
 /* PID is like waitpid.  Other args are like wait3.  */
 extern __pid_t wait4 (__pid_t __pid, int *__stat_loc, int __options,
 		      struct rusage *__usage) __THROWNL;
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT_NTHNL)
+extern __pid_t __REDIRECT_NTHNL (wait4, (__pid_t __pid, int *__stat_loc,
+                                         int __options, struct rusage *__usage),
+                                 __wait4_time64);
+#  else
+#  define wait4 __wait4_time64
+#  endif
+# endif
 #endif /* Use misc.  */
 
 
diff --git a/resolv/netdb.h b/resolv/netdb.h
index 1f36f25d4a..9b242ce3d1 100644
--- a/resolv/netdb.h
+++ b/resolv/netdb.h
@@ -701,6 +701,17 @@ extern int getaddrinfo_a (int __mode, struct gaicb *__list[__restrict_arr],
 extern int gai_suspend (const struct gaicb *const __list[], int __ent,
 			const struct timespec *__timeout);
 
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (gai_suspend, (const struct gaicb *const __list[],
+                                     int __ent,
+                                     const struct timespec *__timeout),
+                       __gai_suspend_time64);
+#  else
+#   define gai_suspend __gai_suspend_time64
+#  endif
+# endif
+
 /* Get the error status of the request REQ.  */
 extern int gai_error (struct gaicb *__req) __THROW;
 
diff --git a/resource/sys/resource.h b/resource/sys/resource.h
index d30379d085..551d25e275 100644
--- a/resource/sys/resource.h
+++ b/resource/sys/resource.h
@@ -88,6 +88,16 @@ extern int setrlimit64 (__rlimit_resource_t __resource,
    and put it in *USAGE.  Returns 0 for success, -1 for failure.  */
 extern int getrusage (__rusage_who_t __who, struct rusage *__usage) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (getrusage, (__rusage_who_t __who,
+                                       struct rusage *__usage),
+                           __getrusage64);
+# else
+# define getrusage __getrusage64
+# endif
+#endif
+
 /* Return the highest priority of any process specified by WHICH and WHO
    (see above); if WHO is zero, the current process, process group, or user
    (as specified by WHO) is used.  A lower priority number means higher
diff --git a/rt/aio.h b/rt/aio.h
index 3a107b2783..23ace51c75 100644
--- a/rt/aio.h
+++ b/rt/aio.h
@@ -193,12 +193,17 @@ extern __ssize_t __REDIRECT_NTH (aio_return, (struct aiocb *__aiocbp),
 extern int __REDIRECT_NTH (aio_cancel,
 			   (int __fildes, struct aiocb *__aiocbp),
 			   aio_cancel64);
-
+#  ifdef __USE_TIME_BITS64
+extern int __REDIRECT_NTH (aio_suspend,
+			   (const struct aiocb *const __list[], int __nent,
+			    const struct timespec *__restrict __timeout),
+			   __aio_suspend_time64) __nonnull ((1));
+#  else
 extern int __REDIRECT_NTH (aio_suspend,
 			   (const struct aiocb *const __list[], int __nent,
 			    const struct timespec *__restrict __timeout),
 			   aio_suspend64) __nonnull ((1));
-
+#  endif
 extern int __REDIRECT_NTH (aio_fsync,
 			   (int __operation, struct aiocb *__aiocbp),
 			   aio_fsync64) __nonnull ((2));
@@ -210,7 +215,11 @@ extern int __REDIRECT_NTH (aio_fsync,
 #  define aio_error aio_error64
 #  define aio_return aio_return64
 #  define aio_cancel aio_cancel64
-#  define aio_suspend aio_suspend64
+#  ifdef __USE_TIME_BITS64
+#   define aio_suspend __aio_suspend_time64
+#  else
+#   define aio_suspend aio_suspend64
+#  endif
 #  define aio_fsync aio_fsync64
 # endif
 #endif
@@ -234,6 +243,16 @@ extern int aio_cancel64 (int __fildes, struct aiocb64 *__aiocbp) __THROW;
 extern int aio_suspend64 (const struct aiocb64 *const __list[], int __nent,
 			  const struct timespec *__restrict __timeout)
   __THROW __nonnull ((1));
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (aio_suspend64,
+			   (const struct aiocb *const __list[], int __nent,
+			    const struct timespec *__restrict __timeout),
+			   __aio_suspend_time64) __nonnull ((1));
+#  else
+#   define aio_suspend64 __aio_suspend_time64
+#  endif
+# endif
 
 extern int aio_fsync64 (int __operation, struct aiocb64 *__aiocbp)
   __THROW __nonnull ((2));
diff --git a/rt/mqueue.h b/rt/mqueue.h
index 8a62d99f50..44ccd5fe2d 100644
--- a/rt/mqueue.h
+++ b/rt/mqueue.h
@@ -71,6 +71,7 @@ extern int mq_send (mqd_t __mqdes, const char *__msg_ptr, size_t __msg_len,
 		    unsigned int __msg_prio) __nonnull ((2));
 
 #ifdef __USE_XOPEN2K
+# ifndef __USE_TIME_BITS64
 /* Receive the oldest from highest priority messages in message queue
    MQDES, stop waiting if ABS_TIMEOUT expires.  */
 extern ssize_t mq_timedreceive (mqd_t __mqdes, char *__restrict __msg_ptr,
@@ -79,12 +80,38 @@ extern ssize_t mq_timedreceive (mqd_t __mqdes, char *__restrict __msg_ptr,
 				const struct timespec *__restrict __abs_timeout)
   __nonnull ((2, 5));
 
+# else
+#  if defined(__REDIRECT)
+extern int __REDIRECT (mq_timedreceive, (mqd_t __mqdes,
+                               char *__restrict __msg_ptr,
+                               size_t __msg_len,
+                               unsigned int *__restrict __msg_prio,
+                               const struct timespec *__restrict __abs_timeout),
+                       __mq_timedreceive_time64)
+  __nonnull ((2, 5));
+#  else
+#   define mq_timedreceive __mq_timedreceive_time64
+#  endif
+# endif
+
 /* Add message pointed by MSG_PTR to message queue MQDES, stop blocking
    on full message queue if ABS_TIMEOUT expires.  */
 extern int mq_timedsend (mqd_t __mqdes, const char *__msg_ptr,
 			 size_t __msg_len, unsigned int __msg_prio,
 			 const struct timespec *__abs_timeout)
   __nonnull ((2, 5));
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (mq_timedsend, (mqd_t __mqdes,
+                       const char *__msg_ptr, size_t __msg_len,
+                       unsigned int __msg_prio,
+                       const struct timespec *__abs_timeout),
+     __mq_timedsend_time64);
+#  else
+#   define mq_timedsend __mq_timedsend_time64
+#  endif
+# endif
 #endif
 
 /* Define some inlines helping to catch common problems.  */
diff --git a/signal/signal.h b/signal/signal.h
index b17203c99c..d0c4042c50 100644
--- a/signal/signal.h
+++ b/signal/signal.h
@@ -274,6 +274,18 @@ extern int sigtimedwait (const sigset_t *__restrict __set,
 			 const struct timespec *__restrict __timeout)
      __nonnull ((1));
 
+#  ifdef __USE_TIME_BITS64
+#   if defined(__REDIRECT)
+extern int __REDIRECT (sigtimedwait,
+                       (const sigset_t *__restrict __set,
+                        siginfo_t *__restrict __info,
+                        const struct timespec *__restrict __timeout),
+                       __sigtimedwait64);
+#   else
+#    define sigtimedwait __sigtimedwait64
+#   endif
+#  endif
+
 /* Send signal SIG to the process PID.  Associate data in VAL with the
    signal.  */
 extern int sigqueue (__pid_t __pid, int __sig, const union sigval __val)
diff --git a/socket/sys/socket.h b/socket/sys/socket.h
index 949851a6ce..310a8aa239 100644
--- a/socket/sys/socket.h
+++ b/socket/sys/socket.h
@@ -199,6 +199,17 @@ extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags);
 extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
 		     unsigned int __vlen, int __flags,
 		     struct timespec *__tmo);
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (recvmmsg, (int __fd, struct mmsghdr *__vmessages,
+                                  unsigned int __vlen, int __flags,
+                                  struct timespec *__tmo),
+                       __recvmmsg64);
+#  else
+#   define recvmmsg __recvmmsg64
+#  endif
+# endif
 #endif
 
 
diff --git a/sysdeps/mach/hurd/bits/features-time64.h b/sysdeps/mach/hurd/bits/features-time64.h
new file mode 100644
index 0000000000..005689aa69
--- /dev/null
+++ b/sysdeps/mach/hurd/bits/features-time64.h
@@ -0,0 +1,21 @@
+/* Features part to handle 64-bit time_t support.  Hurd 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/>.  */
+
+#if defined _TIME_BITS && _TIME_BITS != 32
+# error "i686-gnu (HURD) only support _TIME_BITS=32"
+#endif
diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h
index a04a3a2754..8cc2bfbdd9 100644
--- a/sysdeps/nptl/pthread.h
+++ b/sysdeps/nptl/pthread.h
@@ -230,6 +230,17 @@ extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __THROW;
 extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
 				 const struct timespec *__abstime);
 
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (pthread_timedjoin_np,
+                       (pthread_t __th, void **__thread_return,
+                        const struct timespec *__abstime),
+                       __pthread_timedjoin_np64);
+#  else
+#  define pthread_timedjoin_np __pthread_timedjoin_np64
+#  endif
+# endif
+
 /* Make calling thread wait for termination of the thread TH, but only
    until TIMEOUT measured against the clock specified by CLOCKID.  The
    exit status of the thread is stored in *THREAD_RETURN, if
@@ -240,6 +251,18 @@ extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
 extern int pthread_clockjoin_np (pthread_t __th, void **__thread_return,
                                  clockid_t __clockid,
 				 const struct timespec *__abstime);
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (pthread_clockjoin_np,
+                       (pthread_t __th, void **__thread_return,
+                        clockid_t __clockid,
+                        const struct timespec *__abstime),
+                       __pthread_clockjoin_np64);
+#  else
+#  define pthread_clockjoin_np __pthread_clockjoin_np64
+#  endif
+# endif
 #endif
 
 /* Indicate that the thread TH is never to be joined with PTHREAD_JOIN.
@@ -776,6 +799,17 @@ extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
 extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
 				    const struct timespec *__restrict
 				    __abstime) __THROWNL __nonnull ((1, 2));
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT_NTHNL)
+extern int __REDIRECT_NTHNL (pthread_mutex_timedlock,
+                             (pthread_mutex_t *__restrict __mutex,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_mutex_timedlock64);
+#  else
+#   define pthread_mutex_timedlock __pthread_mutex_timedlock64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
@@ -783,6 +817,18 @@ extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex,
 				    clockid_t __clockid,
 				    const struct timespec *__restrict
 				    __abstime) __THROWNL __nonnull ((1, 3));
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT_NTHNL)
+extern int __REDIRECT_NTHNL (pthread_mutex_clocklock,
+                             (pthread_mutex_t *__restrict __mutex,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_mutex_clocklock64);
+#  else
+#   define pthread_mutex_clocklock __pthread_mutex_clocklock64
+#  endif
+# endif
 #endif
 
 /* Unlock a mutex.  */
@@ -922,6 +968,17 @@ extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
 extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 2));
+
+#  ifdef __USE_TIME_BITS64
+#   if defined(__REDIRECT_NTHNL)
+extern int __REDIRECT_NTHNL (pthread_rwlock_timedrdlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_timedrdlock64);
+#   else
+#    define pthread_rwlock_timedrdlock __pthread_rwlock_timedrdlock64
+#   endif
+#  endif
 # endif
 
 # ifdef __USE_GNU
@@ -929,6 +986,18 @@ extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock,
 				       clockid_t __clockid,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 3));
+
+#  ifdef __USE_TIME_BITS64
+#   if defined(__REDIRECT_NTHNL)
+extern int __REDIRECT_NTHNL (pthread_rwlock_clockrdlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_clockrdlock64);
+#   else
+#    define pthread_rwlock_clockrdlock __pthread_rwlock_clockrdlock64
+#   endif
+#  endif
 # endif
 
 /* Acquire write lock for RWLOCK.  */
@@ -944,6 +1013,17 @@ extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
 extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 2));
+
+#  ifdef __USE_TIME_BITS64
+#   if defined(__REDIRECT_NTHNL)
+extern int __REDIRECT_NTHNL (pthread_rwlock_timedwrlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_timedwrlock64);
+#   else
+#    define pthread_rwlock_timedwrlock __pthread_rwlock_timedwrlock64
+#   endif
+#  endif
 # endif
 
 # ifdef __USE_GNU
@@ -951,6 +1031,18 @@ extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock,
 				       clockid_t __clockid,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 3));
+
+#  ifdef __USE_TIME_BITS64
+#   if defined(__REDIRECT_NTHNL)
+extern int __REDIRECT_NTHNL (pthread_rwlock_clockwrlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_clockwrlock64);
+#   else
+#    define pthread_rwlock_clockwrlock __pthread_rwlock_clockwrlock64
+#   endif
+#  endif
 # endif
 
 /* Unlock RWLOCK.  */
@@ -1032,6 +1124,18 @@ extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
 				   const struct timespec *__restrict __abstime)
      __nonnull ((1, 2, 3));
 
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (pthread_cond_timedwait,
+                       (pthread_cond_t *__restrict __cond,
+                        pthread_mutex_t *__restrict __mutex,
+                        const struct timespec *__restrict __abstime),
+                       __pthread_cond_timedwait64);
+#  else
+#  define pthread_cond_timedwait __pthread_cond_timedwait64
+#  endif
+# endif
+
 # ifdef __USE_GNU
 /* Wait for condition variable COND to be signaled or broadcast until
    ABSTIME measured by the specified clock. MUTEX is assumed to be
@@ -1045,6 +1149,19 @@ extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond,
 				   __clockid_t __clock_id,
 				   const struct timespec *__restrict __abstime)
      __nonnull ((1, 2, 4));
+
+#  ifdef __USE_TIME_BITS64
+#   if defined(__REDIRECT)
+extern int __REDIRECT (pthread_cond_clockwait,
+                       (pthread_cond_t *__restrict __cond,
+                        pthread_mutex_t *__restrict __mutex,
+                        __clockid_t __clock_id,
+                        const struct timespec *__restrict __abstime),
+                       __pthread_cond_clockwait64);
+#   else
+#   define pthread_cond_clockwait __pthread_cond_clockwait64
+#   endif
+#  endif
 # endif
 
 /* Functions for handling condition variable attributes.  */
diff --git a/sysdeps/pthread/semaphore.h b/sysdeps/pthread/semaphore.h
index 7fb0e5c103..e0ee16f804 100644
--- a/sysdeps/pthread/semaphore.h
+++ b/sysdeps/pthread/semaphore.h
@@ -62,6 +62,17 @@ extern int sem_wait (sem_t *__sem) __nonnull ((1));
 extern int sem_timedwait (sem_t *__restrict __sem,
 			  const struct timespec *__restrict __abstime)
   __nonnull ((1, 2));
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (sem_timedwait,
+                       (sem_t *__restrict __sem,
+                        const struct timespec *__restrict __abstime),
+                        __sem_timedwait64);
+#  else
+#   define sem_timedwait __sem_timedwait64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
@@ -69,6 +80,18 @@ extern int sem_clockwait (sem_t *__restrict __sem,
 			  clockid_t clock,
 			  const struct timespec *__restrict __abstime)
   __nonnull ((1, 3));
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (sem_clockwait,
+                       (sem_t *__restrict __sem,
+                        clockid_t clock,
+                        const struct timespec *__restrict __abstime),
+                        __sem_clockwait64);
+#  else
+#   define sem_clockwait __sem_clockwait64
+#  endif
+# endif
 #endif
 
 /* Test whether SEM is posted.  */
diff --git a/sysdeps/pthread/threads.h b/sysdeps/pthread/threads.h
index 46929a025e..288e6f48e4 100644
--- a/sysdeps/pthread/threads.h
+++ b/sysdeps/pthread/threads.h
@@ -91,6 +91,16 @@ extern thrd_t thrd_current (void);
 extern int thrd_sleep (const struct timespec *__time_point,
 		       struct timespec *__remaining);
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT)
+extern int __REDIRECT (thrd_sleep, (const struct timespec *__time_point,
+                                    struct timespec *__remaining),
+                       __thrd_sleep64);
+# else
+#  define thrd_sleep __thrd_sleep64
+# endif
+#endif
+
 /* Terminate current thread execution, cleaning up any thread local
    storage and freeing resources.  Returns the value specified in __RES.  */
 extern void thrd_exit (int __res) __attribute__ ((__noreturn__));
@@ -134,6 +144,17 @@ extern int mtx_lock (mtx_t *__mutex);
 extern int mtx_timedlock (mtx_t *__restrict __mutex,
 			  const struct timespec *__restrict __time_point);
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT)
+extern int __REDIRECT (mtx_timedlock, (mtx_t *__restrict __mutex,
+                                       const struct timespec *__restrict
+                                       __time_point),
+                       __mtx_timedlock64);
+# else
+#  define mtx_timedlock __mtx_timedlock64
+# endif
+#endif
+
 /* Try to lock the mutex pointed by __MUTEX without blocking.  If the mutex
    is free the current threads takes control of it, otherwise it returns
    immediately.  */
@@ -175,6 +196,18 @@ extern int cnd_timedwait (cnd_t *__restrict __cond,
 			  mtx_t *__restrict __mutex,
 			  const struct timespec *__restrict __time_point);
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT)
+extern int __REDIRECT (cnd_timedwait, (cnd_t *__restrict __cond,
+                                       mtx_t *__restrict __mutex,
+                                       const struct timespec *__restrict
+                                       __time_point),
+                       __cnd_timedwait64);
+# else
+#  define cnd_timedwait __cnd_timedwait64
+# endif
+#endif
+
 /* Destroy condition variable pointed by __cond and free all of its
    resources.  */
 extern void cnd_destroy (cnd_t *__COND);
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index 257ccbd3b4..c23a55c90e 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -1,3 +1,4 @@
+%include <time64-compat.h>
 libc {
   GLIBC_2.0 {
     # functions used in inline functions or macros
@@ -168,6 +169,67 @@ libc {
     getdents64; gettid; tgkill;
   }
   GLIBC_2.32 {
+  }
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    # io
+    __ppoll64;
+    __utime64;
+    # misc
+    __futimes64;
+    __futimesat64;
+    __lutimes64;
+    __select64;
+    __utimes64;
+    # posix
+    __nanosleep64;
+    __pselec64;
+    __wait3_time64;
+    __wait4_time64;
+    # resouces
+    __getrusage64;
+    # signal
+    __sigtimedwait64;
+    # sysvipc
+    __msgctl64;
+    __semctl64;
+    __semtimedop64;
+    __shmctl64;
+    # time
+    ___adjtimex64;
+    __adjtime64;
+    __clock_adjtime64;
+    __clock_getres64;
+    __clock_gettime64;
+    __clock_nanosleep_time64;
+    __clock_settime64;
+    __ctime64;
+    __ctime64_r;
+    __difftime64;
+    __futimens64;
+    __getitimer64;
+    __gettimeofday64;
+    __gmtime64;
+    __gmtime64_r;
+    __mktime64;
+    __nanosleep64;
+    __setitimer64;
+    __settimeofday64;
+    __time64;
+    __timegm64;
+    __timespec_get64;
+    __utimensat64;
+     __utimes64;
+    # misc
+    __ntp_gettime64;
+    __ntp_gettimex64;
+    __pselect64;
+    __recvmmsg64;
+    __sched_rr_get_interval64;
+    __timerfd_gettime64;
+    __timerfd_settime64;
+%endif
   }
   GLIBC_PRIVATE {
     # functions used in other libraries
@@ -182,3 +244,47 @@ libc {
     __netlink_assert_response;
   }
 }
+
+libpthread {
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    __cnd_timedwait64;
+    __mtx_timedlock64;
+    __pthread_clockjoin_np64;
+    __pthread_cond_timedwait64;
+    __pthread_cond_clockwait64;
+    __pthread_mutex_timedlock64;
+    __pthread_mutex_clocklock64;
+    __pthread_rwlock_clockrdlock64;
+    __pthread_rwlock_clockwrlock64;
+    __pthread_rwlock_timedrdlock64;
+    __pthread_rwlock_timedwrlock64;
+    __pthread_timedjoin_np64;
+    __sem_clockwait64;
+    __sem_timedwait64;
+    __thrd_sleep64;
+%endif
+  }
+}
+
+librt {
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    __aio_suspend_time64;
+    __mq_timedsend_time64;
+    __mq_timedreceive_time64;
+    __timer_gettime64;
+    __timer_settime64;
+%endif
+  }
+}
+
+libanl {
+%ifdef TIME64_NON_DEFAULT
+  GLIBC_2.34 {
+    __gai_suspend_time64;
+  }
+%endif
+}
diff --git a/sysdeps/unix/sysv/linux/arm/be/libanl.abilist b/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index eb3e165ce8..b985b1e1ff 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -155,6 +155,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index b6c26c7a50..3fe358cc31 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -33,6 +33,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libanl.abilist b/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 2e7dbbe7df..cba02c3ce8 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -152,6 +152,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index b6c26c7a50..3fe358cc31 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -33,6 +33,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/arm/time64-compat.h b/sysdeps/unix/sysv/linux/arm/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/arm/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/bits/msq.h b/sysdeps/unix/sysv/linux/bits/msq.h
index 3313b69d78..7c9c479551 100644
--- a/sysdeps/unix/sysv/linux/bits/msq.h
+++ b/sysdeps/unix/sysv/linux/bits/msq.h
@@ -26,6 +26,7 @@ typedef __syscall_ulong_t msgqnum_t;
 typedef __syscall_ulong_t msglen_t;
 
 #include <bits/types/struct_msqid_ds.h>
+#include <bits/types/struct_msqid64_ds.h>
 
 /* Define options for message queue functions.  */
 #define MSG_NOERROR	010000	/* no error if message is too big */
diff --git a/sysdeps/unix/sysv/linux/bits/sem.h b/sysdeps/unix/sysv/linux/bits/sem.h
index ad13287e66..776524b876 100644
--- a/sysdeps/unix/sysv/linux/bits/sem.h
+++ b/sysdeps/unix/sysv/linux/bits/sem.h
@@ -22,6 +22,7 @@
 #include <sys/types.h>
 #include <bits/timesize.h>
 #include <bits/types/struct_semid_ds.h>
+#include <bits/types/struct_semid64_ds.h>
 
 /* Flags for `semop'.  */
 #define SEM_UNDO	0x1000		/* undo the operation on exit */
diff --git a/sysdeps/unix/sysv/linux/bits/shm.h b/sysdeps/unix/sysv/linux/bits/shm.h
index a50c79d7be..454fc3f366 100644
--- a/sysdeps/unix/sysv/linux/bits/shm.h
+++ b/sysdeps/unix/sysv/linux/bits/shm.h
@@ -43,6 +43,7 @@ __BEGIN_DECLS
 typedef __syscall_ulong_t shmatt_t;
 
 #include <bits/types/struct_shmid_ds.h>
+#include <bits/types/struct_shmid64_ds.h>
 
 #ifdef __USE_MISC
 
diff --git a/sysdeps/unix/sysv/linux/bits/time.h b/sysdeps/unix/sysv/linux/bits/time.h
index ee5a8b3ef4..d0c98a7864 100644
--- a/sysdeps/unix/sysv/linux/bits/time.h
+++ b/sysdeps/unix/sysv/linux/bits/time.h
@@ -77,6 +77,16 @@ __BEGIN_DECLS
 /* Tune a POSIX clock.  */
 extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (clock_adjtime, (__clockid_t __clock_id,
+                                           struct timex *__utx),
+                           __clock_adjtime64);
+# else
+# define clock_adjtime __clock_adjtime64
+# endif
+#endif
+
 __END_DECLS
 #endif /* use GNU */
 
diff --git a/sysdeps/unix/sysv/linux/csky/libanl.abilist b/sysdeps/unix/sysv/linux/csky/libanl.abilist
index 416a6f8ddb..01f2e6cbf0 100644
--- a/sysdeps/unix/sysv/linux/csky/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.29 gai_cancel F
 GLIBC_2.29 gai_error F
 GLIBC_2.29 gai_suspend F
 GLIBC_2.29 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index fd4fb4a9a9..7296e50db1 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -2115,6 +2115,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index 6ce59276a7..51d5822091 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -211,3 +211,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index c6690ef7c1..b60deca65a 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.29 timer_delete F
 GLIBC_2.29 timer_getoverrun F
 GLIBC_2.29 timer_gettime F
 GLIBC_2.29 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/csky/time64-compat.h b/sysdeps/unix/sysv/linux/csky/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/csky/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/hppa/libanl.abilist b/sysdeps/unix/sysv/linux/hppa/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/hppa/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 8530ed550d..0f82e3fe94 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2074,6 +2074,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index cabc5af858..0cdb30a3c1 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -218,6 +218,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/hppa/time64-compat.h b/sysdeps/unix/sysv/linux/hppa/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/hppa/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/i386/Makefile b/sysdeps/unix/sysv/linux/i386/Makefile
index da716e2c1b..8d5efb4f65 100644
--- a/sysdeps/unix/sysv/linux/i386/Makefile
+++ b/sysdeps/unix/sysv/linux/i386/Makefile
@@ -1,6 +1,8 @@
 # The default ABI is 32.
 default-abi := 32
 
+extra-version := Versions-y2038
+
 ifeq ($(subdir),misc)
 sysdep_routines += ioperm iopl vm86
 
diff --git a/sysdeps/unix/sysv/linux/i386/libanl.abilist b/sysdeps/unix/sysv/linux/i386/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/i386/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 51b3d94801..70384f6e7f 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2241,6 +2241,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index 18177307c8..b3a825d60e 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -226,6 +226,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/i386/time64-compat.h b/sysdeps/unix/sysv/linux/i386/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/include/sys/msg.h b/sysdeps/unix/sysv/linux/include/sys/msg.h
index 522903f818..c460be0dc9 100644
--- a/sysdeps/unix/sysv/linux/include/sys/msg.h
+++ b/sysdeps/unix/sysv/linux/include/sys/msg.h
@@ -7,8 +7,6 @@ extern ssize_t __libc_msgrcv (int msqid, void *msgp, size_t msgsz,
 extern int __libc_msgsnd (int msqid, const void *msgp, size_t msgsz,
 			  int msgflg);
 
-# include <bits/types/struct_msqid64_ds.h>
-
 # if __TIMESIZE == 64
 #  define __msgctl64 __msgctl
 # else
diff --git a/sysdeps/unix/sysv/linux/include/sys/shm.h b/sysdeps/unix/sysv/linux/include/sys/shm.h
index 530a1cdfc9..85177a632d 100644
--- a/sysdeps/unix/sysv/linux/include/sys/shm.h
+++ b/sysdeps/unix/sysv/linux/include/sys/shm.h
@@ -3,8 +3,6 @@
 
 #ifndef _ISOMAC
 
-# include <bits/types/struct_shmid64_ds.h>
-
 # if __TIMESIZE == 64
 #  define __shmctl64 __shmctl
 # else
diff --git a/sysdeps/unix/sysv/linux/include/sys/timex.h b/sysdeps/unix/sysv/linux/include/sys/timex.h
index e136ed172e..6cf33269e5 100644
--- a/sysdeps/unix/sysv/linux/include/sys/timex.h
+++ b/sysdeps/unix/sysv/linux/include/sys/timex.h
@@ -27,6 +27,7 @@ libc_hidden_proto (__adjtimex)
 
 #  include <time.h>
 #  include <struct___timeval64.h>
+
 /* Local definition of 64 bit time supporting timex struct */
 #  if __TIMESIZE == 64
 #   define __timex64 timex
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 113d895744..c061b4d1d3 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -156,6 +156,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index b6c26c7a50..3fe358cc31 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -33,6 +33,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index b446ee38fd..bf7452cadd 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2186,6 +2186,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index 18177307c8..b3a825d60e 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -226,6 +226,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/m68k/time64-compat.h b/sysdeps/unix/sysv/linux/m68k/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/m68k/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
index 67c7554803..c06e33a1cf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.18 gai_cancel F
 GLIBC_2.18 gai_error F
 GLIBC_2.18 gai_suspend F
 GLIBC_2.18 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index b5b5ed8fea..8bb54c23ff 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2166,6 +2166,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index 60397187b6..855c469c63 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -218,3 +218,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index 889dfbc0ee..1b8fc10087 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timer_gettime F
 GLIBC_2.18 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
index 67c7554803..c06e33a1cf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.18 gai_cancel F
 GLIBC_2.18 gai_error F
 GLIBC_2.18 gai_suspend F
 GLIBC_2.18 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 794cdb5069..9eca6783c1 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2163,6 +2163,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index 60397187b6..855c469c63 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -218,3 +218,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 889dfbc0ee..1b8fc10087 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timer_gettime F
 GLIBC_2.18 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/time64-compat.h b/sysdeps/unix/sysv/linux/microblaze/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/microblaze/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index ab50ed5c78..f7c9fb1979 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2157,6 +2157,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index b35d7f19ca..887a32a376 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -227,6 +227,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index 1539c1cef9..c4dd28e3b2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index e64ccb03b0..081934d6e7 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2155,6 +2155,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h b/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 688336b729..b3f50abc22 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2163,6 +2163,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
index b35d7f19ca..887a32a376 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
@@ -227,6 +227,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
index 1539c1cef9..c4dd28e3b2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h b/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/nios2/libanl.abilist b/sysdeps/unix/sysv/linux/nios2/libanl.abilist
index 6ff9c2d94e..6b080bd075 100644
--- a/sysdeps/unix/sysv/linux/nios2/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.21 gai_cancel F
 GLIBC_2.21 gai_error F
 GLIBC_2.21 gai_suspend F
 GLIBC_2.21 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 522c733a27..f2779fd725 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2204,6 +2204,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 924ad6e451..18407317e6 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -218,3 +218,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index b4ae7a2dc2..2458614125 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.21 timer_delete F
 GLIBC_2.21 timer_getoverrun F
 GLIBC_2.21 timer_gettime F
 GLIBC_2.21 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/time64-compat.h b/sysdeps/unix/sysv/linux/nios2/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/nios2/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 99bc2a0df6..4231ae0df2 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2213,6 +2213,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 13b41dafb6..711812931d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -228,6 +228,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 156b336bfe..bdf73c4663 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2246,6 +2246,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 00d9eba7cd..5716784ff8 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2211,6 +2211,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 lastlog_read F
 GLIBC_2.34 lastlog_write F
 GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 0a60f1cca2..28db1e4b6d 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -228,6 +228,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h b/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/semctl.c b/sysdeps/unix/sysv/linux/semctl.c
index 1043b2b80d..bb2690d30f 100644
--- a/sysdeps/unix/sysv/linux/semctl.c
+++ b/sysdeps/unix/sysv/linux/semctl.c
@@ -21,7 +21,6 @@
 #include <ipc_priv.h>
 #include <sysdep.h>
 #include <shlib-compat.h>
-#include <bits/types/struct_semid64_ds.h>  /* For __semid64_ds.  */
 #include <linux/posix_types.h>             /* For __kernel_mode_t.  */
 
 /* The struct used to issue the syscall.  For architectures that assume
diff --git a/sysdeps/unix/sysv/linux/sh/be/libanl.abilist b/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 84d050ff2f..5cdbf3dd8f 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2081,6 +2081,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index cabc5af858..0cdb30a3c1 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -218,6 +218,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libanl.abilist b/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index da6cf58a8c..d791e4499b 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2078,6 +2078,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index cabc5af858..0cdb30a3c1 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -218,6 +218,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sh/time64-compat.h b/sysdeps/unix/sysv/linux/sh/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sh/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index a678baade9..de199a4617 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2202,6 +2202,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index 390b6384d0..b5f763d9fd 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -228,6 +228,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index 38f0aad791..fb2769e87b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -34,6 +34,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h b/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/sys/timerfd.h b/sysdeps/unix/sysv/linux/sys/timerfd.h
index 4ad64c2259..790b9d5be6 100644
--- a/sysdeps/unix/sysv/linux/sys/timerfd.h
+++ b/sysdeps/unix/sysv/linux/sys/timerfd.h
@@ -47,9 +47,31 @@ extern int timerfd_settime (int __ufd, int __flags,
 			    const struct itimerspec *__utmr,
 			    struct itimerspec *__otmr) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timerfd_settime,
+                           (int __ufd, int __flags,
+                            const struct itimerspec *__restrict __value,
+                            struct itimerspec *__restrict __ovalue),
+                           __timerfd_settime64);
+# else
+# define timerfd_settime __timerfd_settime64
+# endif
+#endif
+
 /* Return the next expiration time of UFD.  */
 extern int timerfd_gettime (int __ufd, struct itimerspec *__otmr) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timerfd_gettime, (int __ufd,
+                                             struct itimerspec *__otmr),
+                           __timerfd_gettime64);
+# else
+# define timerfd_gettime __timerfd_gettime64
+# endif
+#endif
+
 __END_DECLS
 
 #endif /* sys/timerfd.h */
diff --git a/sysdeps/unix/sysv/linux/sys/timex.h b/sysdeps/unix/sysv/linux/sys/timex.h
index 37931ff496..033eaa9305 100644
--- a/sysdeps/unix/sysv/linux/sys/timex.h
+++ b/sysdeps/unix/sysv/linux/sys/timex.h
@@ -57,15 +57,46 @@ __BEGIN_DECLS
 extern int __adjtimex (struct timex *__ntx) __THROW;
 extern int adjtimex (struct timex *__ntx) __THROW;
 
-#ifdef __REDIRECT_NTH
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (adjtimex, (struct timex *__ntx),
+                           ___adjtimex64);
+# else
+# define adjtimex ___adjtimex64
+# endif
+#endif
+
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
 extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv),
-			   ntp_gettimex);
+                           __ntp_gettime64);
+extern int __REDIRECT_NTH (ntp_gettimex, (struct ntptimeval *__ntv),
+                           __ntp_gettimex64);
+# else
+# define ntp_gettime __ntp_gettime64
+# define ntp_gettimex __ntp_gettimex64
+# endif
 #else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv),
+			   ntp_gettimex);
+# else
 extern int ntp_gettimex (struct ntptimeval *__ntv) __THROW;
-# define ntp_gettime ntp_gettimex
+#  define ntp_gettime ntp_gettimex
+# endif
 #endif
+
 extern int ntp_adjtime (struct timex *__tntx) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (ntp_adjtime, (struct timex *__ntx),
+                           ___adjtimex64);
+# else
+# define ntp_adjtime ___adjtimex64
+# endif
+#endif
+
 __END_DECLS
 
 #endif /* sys/timex.h */
diff --git a/sysdeps/unix/sysv/linux/time64-compat.h b/sysdeps/unix/sysv/linux/time64-compat.h
new file mode 100644
index 0000000000..d7d5e1ec15
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/time64-compat.h
@@ -0,0 +1,3 @@
+/* Header user by Versions to generate the 64 bit time_t symbols.
+   Legacy ABIs with default 32 bit time support defined TIME64_NON_DEFAULT
+   to generate the newer 64 bit time symbols.  */
diff --git a/sysvipc/sys/msg.h b/sysvipc/sys/msg.h
index 9ddedf5e15..effe8212e4 100644
--- a/sysvipc/sys/msg.h
+++ b/sysvipc/sys/msg.h
@@ -60,6 +60,16 @@ __BEGIN_DECLS
 /* Message queue control operation.  */
 extern int msgctl (int __msqid, int __cmd, struct msqid_ds *__buf) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (msgctl,
+                           (int __msqid, int __cmd, struct msqid_ds *__buf),
+                           __msgctl64);
+# else
+# define msgctl __msgctl64
+# endif
+#endif
+
 /* Get messages queue.  */
 extern int msgget (key_t __key, int __msgflg) __THROW;
 
diff --git a/sysvipc/sys/sem.h b/sysvipc/sys/sem.h
index 03b65dff21..2dc68cc85d 100644
--- a/sysvipc/sys/sem.h
+++ b/sysvipc/sys/sem.h
@@ -50,6 +50,16 @@ __BEGIN_DECLS
 /* Semaphore control operation.  */
 extern int semctl (int __semid, int __semnum, int __cmd, ...) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (semctl,
+                           (int __semid, int __semnum, int __cmd, ...),
+                           __semctl64);
+# else
+# define semctl __semctl64
+# endif
+#endif
+
 /* Get semaphore.  */
 extern int semget (key_t __key, int __nsems, int __semflg) __THROW;
 
@@ -60,6 +70,17 @@ extern int semop (int __semid, struct sembuf *__sops, size_t __nsops) __THROW;
 /* Operate on semaphore with timeout.  */
 extern int semtimedop (int __semid, struct sembuf *__sops, size_t __nsops,
 		       const struct timespec *__timeout) __THROW;
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (semtimedop, (int __semid, struct sembuf *__sops,
+                                        size_t __nsops,
+                                        const struct timespec *__timeout),
+                           __semtimedop64);
+#  else
+#  define semtimedop __semtimedop64
+#  endif
+# endif
 #endif
 
 __END_DECLS
diff --git a/sysvipc/sys/shm.h b/sysvipc/sys/shm.h
index 7506ba67bf..630770c0b2 100644
--- a/sysvipc/sys/shm.h
+++ b/sysvipc/sys/shm.h
@@ -48,6 +48,16 @@ __BEGIN_DECLS
 /* Shared memory control operation.  */
 extern int shmctl (int __shmid, int __cmd, struct shmid_ds *__buf) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (shmctl,
+                           (int __shmid, int __cmd, struct shmid_ds *__buf),
+                           __shmctl64);
+# else
+# define shmctl __shmctl64
+# endif
+#endif
+
 /* Get shared memory segment.  */
 extern int shmget (key_t __key, size_t __size, int __shmflg) __THROW;
 
diff --git a/time/bits/types/struct_timespec.h b/time/bits/types/struct_timespec.h
index 4fe47a0d25..1df298eb98 100644
--- a/time/bits/types/struct_timespec.h
+++ b/time/bits/types/struct_timespec.h
@@ -5,6 +5,7 @@
 #include <bits/endian.h>
 #include <bits/types/time_t.h>
 
+
 /* POSIX.1b structure for a time value.  This is like a `struct timeval' but
    has nanoseconds instead of microseconds.  */
 struct timespec
diff --git a/time/sys/time.h b/time/sys/time.h
index 42f91f186b..b1019c74d9 100644
--- a/time/sys/time.h
+++ b/time/sys/time.h
@@ -66,6 +66,16 @@ struct timezone
 extern int gettimeofday (struct timeval *__restrict __tv,
 			 void *__restrict __tz) __THROW __nonnull ((1));
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (gettimeofday, (struct timeval *__restrict __tv,
+                                          void *__restrict __tz),
+                           __gettimeofday64);
+# else
+# define gettimeofday __gettimeofday64
+# endif
+#endif
+
 #ifdef __USE_MISC
 /* Set the current time of day and timezone information.
    This call is restricted to the super-user.
@@ -76,12 +86,33 @@ extern int settimeofday (const struct timeval *__tv,
 			 const struct timezone *__tz)
      __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (settimeofday, (const struct timeval *__tv,
+                                          const struct timezone *__tz),
+                           __settimeofday64);
+# else
+# define settimeofday __settimeofday64
+# endif
+#endif
+
 /* Adjust the current time of day by the amount in DELTA.
    If OLDDELTA is not NULL, it is filled in with the amount
    of time adjustment remaining to be done from the last `adjtime' call.
    This call is restricted to the super-user.  */
 extern int adjtime (const struct timeval *__delta,
 		    struct timeval *__olddelta) __THROW;
+
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (adjtime, (const struct timeval *__delta,
+                                     struct timeval *__olddelta),
+                           __adjtime64);
+# else
+# define adjtime __adjtime64
+# endif
+#endif
+
 #endif
 
 
@@ -123,6 +154,16 @@ typedef int __itimer_which_t;
 extern int getitimer (__itimer_which_t __which,
 		      struct itimerval *__value) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (getitimer, (__itimer_which_t __which,
+                                       struct itimerval *__value),
+                           __getitimer64);
+# else
+# define getitimer __getitimer64
+# endif
+#endif
+
 /* Set the timer WHICH to *NEW.  If OLD is not NULL,
    set *OLD to the old value of timer WHICH.
    Returns 0 on success, -1 on errors.  */
@@ -130,19 +171,59 @@ extern int setitimer (__itimer_which_t __which,
 		      const struct itimerval *__restrict __new,
 		      struct itimerval *__restrict __old) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (setitimer, (__itimer_which_t __which,
+                                       const struct itimerval *__restrict __new,
+                                       struct itimerval *__restrict __old),
+                           __setitimer64);
+# else
+# define setitimer __setitimer64
+# endif
+#endif
+
 /* Change the access time of FILE to TVP[0] and the modification time of
    FILE to TVP[1].  If TVP is a null pointer, use the current time instead.
    Returns 0 on success, -1 on errors.  */
 extern int utimes (const char *__file, const struct timeval __tvp[2])
      __THROW __nonnull ((1));
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (utimes, (const char *__file,
+                                    const struct timeval __tvp[2]),
+                           __utimes64);
+# else
+# define utimes __utimes64
+# endif
+#endif
+
 #ifdef __USE_MISC
 /* Same as `utimes', but does not follow symbolic links.  */
 extern int lutimes (const char *__file, const struct timeval __tvp[2])
      __THROW __nonnull ((1));
 
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (lutimes, (const char *__file,
+                                     const struct timeval __tvp[2]),
+                           __lutimes64);
+#  else
+#   define lutimes __lutimes64
+#  endif
+# endif
+
 /* Same as `utimes', but takes an open file descriptor instead of a name.  */
 extern int futimes (int __fd, const struct timeval __tvp[2]) __THROW;
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (futimes, (int __fd, const struct timeval __tvp[2]),
+                           __futimes64);
+#  else
+#   define futimes __futimes64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
@@ -151,6 +232,16 @@ extern int futimes (int __fd, const struct timeval __tvp[2]) __THROW;
    the current time instead.  Returns 0 on success, -1 on errors.  */
 extern int futimesat (int __fd, const char *__file,
 		      const struct timeval __tvp[2]) __THROW;
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (futimesat, (int __fd, const char *__file,
+                                       const struct timeval __tvp[2]),
+                           __futimesat64);
+#  else
+#   define futimesat __futimesat64
+#  endif
+# endif
 #endif
 
 
diff --git a/time/time.h b/time/time.h
index 3bf206be0b..ac11ce7db4 100644
--- a/time/time.h
+++ b/time/time.h
@@ -74,13 +74,37 @@ extern clock_t clock (void) __THROW;
 /* Return the current time and put it in *TIMER if TIMER is not NULL.  */
 extern time_t time (time_t *__timer) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern time_t __REDIRECT_NTH (time, (time_t *__timer), __time64);
+# else
+#  define time __time64
+# endif
+#endif
+
 /* Return the difference between TIME1 and TIME0.  */
 extern double difftime (time_t __time1, time_t __time0)
      __THROW __attribute__ ((__const__));
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern double __REDIRECT_NTH (difftime, (time_t __time1, time_t __time0),
+                              __difftime64);
+# else
+#  define difftime __difftime64
+# endif
+#endif
+
 /* Return the `time_t' representation of TP and normalize TP.  */
 extern time_t mktime (struct tm *__tp) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern time_t __REDIRECT_NTH (mktime, (struct tm *__tp), __mktime64);
+# else
+#  define mktime __mktime64
+# endif
+#endif
 
 /* Format TP into S according to FORMAT.
    Write no more than MAXSIZE characters and return the number
@@ -118,6 +142,14 @@ extern char *strptime_l (const char *__restrict __s,
    in Universal Coordinated Time (aka Greenwich Mean Time).  */
 extern struct tm *gmtime (const time_t *__timer) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern struct tm*__REDIRECT_NTH (gmtime, (const time_t *__timer), __gmtime64);
+# else
+#  define gmtime __gmtime64
+# endif
+#endif
+
 /* Return the `struct tm' representation
    of *TIMER in the local timezone.  */
 extern struct tm *localtime (const time_t *__timer) __THROW;
@@ -128,6 +160,16 @@ extern struct tm *localtime (const time_t *__timer) __THROW;
 extern struct tm *gmtime_r (const time_t *__restrict __timer,
 			    struct tm *__restrict __tp) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern struct tm*__REDIRECT_NTH (gmtime_r, (const time_t *__restrict __timer,
+                                            struct tm *__restrict __tp),
+                                 __gmtime64_r);
+# else
+#  define gmtime_r __gmtime64_r
+# endif
+#endif
+
 /* Return the `struct tm' representation of *TIMER in local time,
    using *TP to store the result.  */
 extern struct tm *localtime_r (const time_t *__restrict __timer,
@@ -141,6 +183,14 @@ extern char *asctime (const struct tm *__tp) __THROW;
 /* Equivalent to `asctime (localtime (timer))'.  */
 extern char *ctime (const time_t *__timer) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern char *__REDIRECT_NTH (ctime, (const time_t *__timer), __ctime64);
+# else
+#  define ctime __ctime64
+# endif
+#endif
+
 #if defined __USE_POSIX || __GLIBC_USE (ISOC2X)
 /* Reentrant versions of the above functions.  */
 
@@ -152,6 +202,16 @@ extern char *asctime_r (const struct tm *__restrict __tp,
 /* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'.  */
 extern char *ctime_r (const time_t *__restrict __timer,
 		      char *__restrict __buf) __THROW;
+
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern char *__REDIRECT_NTH (ctime_r, (const time_t *__restrict __timer,
+                                       char *__restrict __buf), __ctime64_r);
+# else
+#  define ctime_r __ctime64_r
+# endif
+#endif
+
 #endif	/* POSIX || C2X */
 
 
@@ -189,6 +249,14 @@ extern long int timezone;
 /* Like `mktime', but for TP represents Universal Time, not local time.  */
 extern time_t timegm (struct tm *__tp) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern time_t __REDIRECT_NTH (timegm, (struct tm *__tp), __timegm64);
+# else
+#  define timegm __timegm64
+# endif
+#endif
+
 /* Another name for `mktime'.  */
 extern time_t timelocal (struct tm *__tp) __THROW;
 
@@ -205,17 +273,54 @@ extern int dysize (int __year) __THROW  __attribute__ ((__const__));
 extern int nanosleep (const struct timespec *__requested_time,
 		      struct timespec *__remaining);
 
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (nanosleep, (const struct timespec *__requested_time,
+                                   struct timespec *__remaining),
+                       __nanosleep64);
+#  else
+#   define nanosleep __nanosleep64
+#  endif
+# endif
 
 /* Get resolution of clock CLOCK_ID.  */
 extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (clock_getres, (clockid_t __clock_id,
+                                          struct timespec *__res),
+                           __clock_getres64);
+# else
+#  define clock_getres __clock_getres64
+# endif
+#endif
+
 /* Get current value of clock CLOCK_ID and store it in TP.  */
 extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (clock_gettime, (clockid_t __clock_id, struct
+                                           timespec *__tp), __clock_gettime64);
+# else
+#  define clock_gettime __clock_gettime64
+# endif
+#endif
+
 /* Set clock CLOCK_ID to value TP.  */
 extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp)
      __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (clock_settime, (clockid_t __clock_id, const struct
+                                           timespec *__tp), __clock_settime64);
+# else
+#  define clock_settime __clock_settime64
+# endif
+#endif
+
 # ifdef __USE_XOPEN2K
 /* High-resolution sleep with the specified clock.
 
@@ -225,6 +330,17 @@ extern int clock_nanosleep (clockid_t __clock_id, int __flags,
 			    const struct timespec *__req,
 			    struct timespec *__rem);
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT)
+extern int __REDIRECT (clock_nanosleep, (clockid_t __clock_id, int __flags,
+                                         const struct timespec *__req,
+                                         struct timespec *__rem),
+                       __clock_nanosleep_time64);
+# else
+#  define clock_nanosleep __clock_nanosleep_time64
+# endif
+#endif
+
 /* Return clock ID for CPU-time clock.  */
 extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __THROW;
 # endif
@@ -243,10 +359,31 @@ extern int timer_settime (timer_t __timerid, int __flags,
 			  const struct itimerspec *__restrict __value,
 			  struct itimerspec *__restrict __ovalue) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timer_settime, (timer_t __timerid, int __flags,
+     const struct itimerspec *__restrict __value,
+     struct itimerspec *__restrict __ovalue),
+                          __timer_settime64);
+# else
+#  define timer_settime __timer_settime64
+# endif
+#endif
+
 /* Get current value of timer TIMERID and store it in VALUE.  */
 extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
      __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timer_gettime, (timer_t __timerid,
+                                           struct itimerspec *__value),
+                           __timer_gettime64) __nonnull ((1));
+# else
+#  define timer_gettime __timer_gettime64
+# endif
+#endif
+
 /* Get expiration overrun for timer TIMERID.  */
 extern int timer_getoverrun (timer_t __timerid) __THROW;
 #endif
@@ -256,6 +393,15 @@ extern int timer_getoverrun (timer_t __timerid) __THROW;
 /* Set TS to calendar time based in time base BASE.  */
 extern int timespec_get (struct timespec *__ts, int __base)
      __THROW __nonnull ((1));
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timespec_get, (struct timespec *__ts, int __base),
+                           __timespec_get64);
+#  else
+#   define timespec_get __timespec_get64
+#  endif
+# endif
 #endif


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [glibc/azanella/y2038] y2038: Add support for 64 bit time on legacy ABIs
@ 2021-02-23 12:39 Adhemerval Zanella
  0 siblings, 0 replies; 10+ messages in thread
From: Adhemerval Zanella @ 2021-02-23 12:39 UTC (permalink / raw)
  To: glibc-cvs

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a2731e40fbe42c7c8f2d03c3981a6b42f7aa4b6d

commit a2731e40fbe42c7c8f2d03c3981a6b42f7aa4b6d
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Wed Feb 17 13:35:19 2021 -0300

    y2038: Add support for 64 bit time on legacy ABIs
    
    A new build flag, _TIME_BITS, enables the usage of the newer 64 bit
    time symbols for legacy ABI (where 32 bit time_t is default).  The 64
    bit time support is only enabled if LFS (_FILE_OFFSET_BITS=64) is
    also used.
    
    Different than LFS support, the y2038 symbols are added only for the
    required ABIs (armhf, csky, hppa, i386, m68k, microblaze, mips32,
    mips64-n32, nios2, powerpc32, sparc32, s390-32, and sh).  The ABIs with
    64 bit time support are unchanged, both for symbol and types
    redirection.
    
    On Linux apropoer 64 bit time support requires a minimum of kernel
    version v5.1.  Otherwise, the 32 bit fallbacks are used and might
    results in error with overflow return code (EOVERFLOW).
    
    The i686-gnu does not yet support 64 bit time, and trying to build
    it using -D_TIME_BITS=64 results in an error.
    
    This patch also converts following implemetations to support 64 bit
    time:
    
      * libc:
        - adjtimex
        - adjtime
        - clock_adjtime
        - clock_getres
        - clock_gettime
        - clock_nanosleep_time
        - clock_settime
        - ctime
        - ctime_r
        - difftime
        - futimens
        - futimes
        - futimesat
        - getitimer
        - getrusage
        - gettimeofday
        - gmtime
        - gmtime
        - lutimes
        - mktime
        - msgctl
        - nanosleep
        - ntp_gettime
        - ntp_gettimex
        - ppoll
        - pselect
        - recvmmsg
        - sched_rr_get_interval
        - select
        - semctl
        - semtimedop
        - setitimer
        - settimeofday
        - shmctl
        - sigtimedwait
        - time
        - timegm
        - timerfd_gettime
        - timerfd_settime
        - timespec_get
        - utime
        - utimensat
        - utimes
        - wait3
        - wait4
    
      * libpthread:
        - mtx_timedlock
        - pthread_clockjoin_np
        - pthread_cond_clockwait
        - pthread_cond_timedwait
        - pthread_mutex_clocklock
        - pthread_mutex_timedlock
        - pthread_rwlock_clockrdlock
        - pthread_rwlock_clockwrlock
        - pthread_rwlock_timedrdlock
        - pthread_rwlock_timedwrlock
        - pthread_timedjoin_np
        - sem_clockwait
        - sem_timedwait
    
      * librt:
        - aio_suspend_time
        - mq_timedreceive_time
        - mq_timedsend_time
        - timer_gettime
        - timer_settime
    
      * libanl:
        - gai_suspend

Diff:
---
 Makefile                                           |   2 +-
 NEWS                                               |   4 +
 include/features-time64.h                          |  37 ++++++
 include/features.h                                 |   2 +
 io/sys/poll.h                                      |  11 ++
 io/sys/stat.h                                      |  20 +++
 io/utime.h                                         |  10 ++
 manual/creature.texi                               |  44 +++++++
 misc/sys/select.h                                  |  27 ++++
 posix/sched.h                                      |   9 ++
 posix/sys/wait.h                                   |  20 +++
 resolv/netdb.h                                     |  11 ++
 resource/sys/resource.h                            |  10 ++
 rt/aio.h                                           |  25 +++-
 rt/mqueue.h                                        |  27 ++++
 signal/signal.h                                    |  12 ++
 socket/sys/socket.h                                |  11 ++
 sysdeps/mach/hurd/bits/features-time64.h           |  21 +++
 sysdeps/nptl/pthread.h                             | 117 +++++++++++++++++
 sysdeps/pthread/semaphore.h                        |  23 ++++
 sysdeps/pthread/threads.h                          |  33 +++++
 sysdeps/unix/sysv/linux/Versions                   | 106 +++++++++++++++
 sysdeps/unix/sysv/linux/arm/be/libanl.abilist      |   1 +
 sysdeps/unix/sysv/linux/arm/be/libc.abilist        |  45 +++++++
 sysdeps/unix/sysv/linux/arm/be/libpthread.abilist  |  14 ++
 sysdeps/unix/sysv/linux/arm/be/librt.abilist       |   5 +
 sysdeps/unix/sysv/linux/arm/le/libanl.abilist      |   1 +
 sysdeps/unix/sysv/linux/arm/le/libc.abilist        |  45 +++++++
 sysdeps/unix/sysv/linux/arm/le/libpthread.abilist  |  14 ++
 sysdeps/unix/sysv/linux/arm/le/librt.abilist       |   5 +
 sysdeps/unix/sysv/linux/arm/time64-compat.h        |   2 +
 sysdeps/unix/sysv/linux/bits/msq.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/sem.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/shm.h                 |   1 +
 sysdeps/unix/sysv/linux/bits/time.h                |  10 ++
 sysdeps/unix/sysv/linux/csky/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/csky/libc.abilist          |  45 +++++++
 sysdeps/unix/sysv/linux/csky/libpthread.abilist    |  14 ++
 sysdeps/unix/sysv/linux/csky/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/csky/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/hppa/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/hppa/libc.abilist          |  45 +++++++
 sysdeps/unix/sysv/linux/hppa/libpthread.abilist    |  14 ++
 sysdeps/unix/sysv/linux/hppa/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/hppa/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/i386/Makefile              |   2 +
 sysdeps/unix/sysv/linux/i386/libanl.abilist        |   1 +
 sysdeps/unix/sysv/linux/i386/libc.abilist          |  45 +++++++
 sysdeps/unix/sysv/linux/i386/libpthread.abilist    |  14 ++
 sysdeps/unix/sysv/linux/i386/librt.abilist         |   5 +
 sysdeps/unix/sysv/linux/i386/time64-compat.h       |   2 +
 sysdeps/unix/sysv/linux/include/sys/msg.h          |   2 -
 sysdeps/unix/sysv/linux/include/sys/shm.h          |   2 -
 sysdeps/unix/sysv/linux/include/sys/timex.h        |   1 +
 .../unix/sysv/linux/m68k/coldfire/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist |  45 +++++++
 .../sysv/linux/m68k/coldfire/libpthread.abilist    |  14 ++
 .../unix/sysv/linux/m68k/coldfire/librt.abilist    |   5 +
 sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist |   1 +
 sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist   |  45 +++++++
 .../unix/sysv/linux/m68k/m680x0/libpthread.abilist |  14 ++
 sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist  |   5 +
 sysdeps/unix/sysv/linux/m68k/time64-compat.h       |   2 +
 .../unix/sysv/linux/microblaze/be/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/microblaze/be/libc.abilist |  45 +++++++
 .../sysv/linux/microblaze/be/libpthread.abilist    |  14 ++
 .../unix/sysv/linux/microblaze/be/librt.abilist    |   5 +
 .../unix/sysv/linux/microblaze/le/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/microblaze/le/libc.abilist |  45 +++++++
 .../sysv/linux/microblaze/le/libpthread.abilist    |  14 ++
 .../unix/sysv/linux/microblaze/le/librt.abilist    |   5 +
 sysdeps/unix/sysv/linux/microblaze/time64-compat.h |   2 +
 .../unix/sysv/linux/mips/mips32/fpu/libc.abilist   |  45 +++++++
 sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist |   1 +
 .../unix/sysv/linux/mips/mips32/libpthread.abilist |  14 ++
 sysdeps/unix/sysv/linux/mips/mips32/librt.abilist  |   5 +
 .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist |  45 +++++++
 .../unix/sysv/linux/mips/mips32/time64-compat.h    |   2 +
 sysdeps/unix/sysv/linux/mips/mips64/librt.abilist  |   5 +
 .../unix/sysv/linux/mips/mips64/n32/libanl.abilist |   1 +
 .../unix/sysv/linux/mips/mips64/n32/libc.abilist   |  45 +++++++
 .../sysv/linux/mips/mips64/n32/libpthread.abilist  |  14 ++
 .../sysv/linux/mips/mips64/n32/time64-compat.h     |   2 +
 sysdeps/unix/sysv/linux/nios2/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/nios2/libc.abilist         |  45 +++++++
 sysdeps/unix/sysv/linux/nios2/libpthread.abilist   |  14 ++
 sysdeps/unix/sysv/linux/nios2/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/nios2/time64-compat.h      |   2 +
 .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist  |  45 +++++++
 .../sysv/linux/powerpc/powerpc32/libanl.abilist    |   1 +
 .../linux/powerpc/powerpc32/libpthread.abilist     |  14 ++
 .../sysv/linux/powerpc/powerpc32/librt.abilist     |   5 +
 .../linux/powerpc/powerpc32/nofpu/libc.abilist     |  45 +++++++
 .../sysv/linux/powerpc/powerpc32/time64-compat.h   |   2 +
 .../unix/sysv/linux/s390/s390-32/libanl.abilist    |   1 +
 sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist  |  45 +++++++
 .../sysv/linux/s390/s390-32/libpthread.abilist     |  14 ++
 sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist |   5 +
 .../unix/sysv/linux/s390/s390-32/time64-compat.h   |   2 +
 sysdeps/unix/sysv/linux/semctl.c                   |   1 -
 sysdeps/unix/sysv/linux/sh/be/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/sh/be/libc.abilist         |  45 +++++++
 sysdeps/unix/sysv/linux/sh/be/libpthread.abilist   |  14 ++
 sysdeps/unix/sysv/linux/sh/be/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/sh/le/libanl.abilist       |   1 +
 sysdeps/unix/sysv/linux/sh/le/libc.abilist         |  45 +++++++
 sysdeps/unix/sysv/linux/sh/le/libpthread.abilist   |  14 ++
 sysdeps/unix/sysv/linux/sh/le/librt.abilist        |   5 +
 sysdeps/unix/sysv/linux/sh/time64-compat.h         |   2 +
 .../unix/sysv/linux/sparc/sparc32/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist |  45 +++++++
 .../sysv/linux/sparc/sparc32/libpthread.abilist    |  14 ++
 .../unix/sysv/linux/sparc/sparc32/librt.abilist    |   5 +
 .../unix/sysv/linux/sparc/sparc32/time64-compat.h  |   2 +
 sysdeps/unix/sysv/linux/sys/timerfd.h              |  22 ++++
 sysdeps/unix/sysv/linux/sys/timex.h                |  37 +++++-
 sysdeps/unix/sysv/linux/time64-compat.h            |   3 +
 sysvipc/sys/msg.h                                  |  10 ++
 sysvipc/sys/sem.h                                  |  21 +++
 sysvipc/sys/shm.h                                  |  10 ++
 time/bits/types/struct_timespec.h                  |   1 +
 time/sys/time.h                                    |  91 +++++++++++++
 time/time.h                                        | 146 +++++++++++++++++++++
 123 files changed, 2153 insertions(+), 12 deletions(-)

diff --git a/Makefile b/Makefile
index 71c7d8b5ec..2fd88294f5 100644
--- a/Makefile
+++ b/Makefile
@@ -68,7 +68,7 @@ endif # $(AUTOCONF) = no
 		   subdir_objs subdir_stubs subdir_testclean		\
 		   $(addprefix install-, no-libc.a bin lib data headers others)
 \f
-headers := limits.h values.h features.h gnu-versions.h \
+headers := limits.h values.h features.h features-time64.h gnu-versions.h \
 	   bits/xopen_lim.h gnu/libc-version.h stdc-predef.h \
 	   bits/libc-header-start.h
 
diff --git a/NEWS b/NEWS
index 85e84fe536..1b42b864c5 100644
--- a/NEWS
+++ b/NEWS
@@ -14,6 +14,10 @@ Major new features:
   constant on Linux.  MINSIGSTKSZ is redefined to sysconf(_SC_MINSIGSTKSZ)
   and SIGSTKSZ is redefined to sysconf (_SC_SIGSTKSZ).
 
+* Add support for 64 bit time_t support for ABIs with defaults to 32 bit
+  time_t.  This is enabled with the _TIME_BITS flag set to 64 and it
+  is support on Linux with a minimum version of 5.1.
+
 Deprecated and removed features, and other changes affecting compatibility:
 
   [Add deprecations, removals and changes affecting compatibility here]
diff --git a/include/features-time64.h b/include/features-time64.h
new file mode 100644
index 0000000000..c6a0a1874c
--- /dev/null
+++ b/include/features-time64.h
@@ -0,0 +1,37 @@
+/* Features part to handle 64-bit time_t support.
+   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/>.  */
+
+/* We need to know the word size in order to check the time size.  */
+#include <bits/wordsize.h>
+#include <bits/timesize.h>
+
+#if defined _TIME_BITS
+# if _TIME_BITS == 64
+#  if ! defined (_FILE_OFFSET_BITS) || _FILE_OFFSET_BITS != 64
+#   error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64"
+#  elif __TIMESIZE == 32
+#   define __USE_TIME_BITS64	1
+#  endif
+# elif _TIME_BITS == 32
+#  if __TIMESIZE > 32
+#   error "_TIME_BITS=32 is not compatible with __TIMESIZE > 32"
+#  endif
+# else
+#  error Invalid _TIME_BITS value (can only be 32 or 64 bits)
+# endif
+#endif
diff --git a/include/features.h b/include/features.h
index eb97470afa..9d39e11345 100644
--- a/include/features.h
+++ b/include/features.h
@@ -387,6 +387,8 @@
 # define __USE_FILE_OFFSET64	1
 #endif
 
+#include <features-time64.h>
+
 #if defined _DEFAULT_SOURCE
 # define __USE_MISC	1
 #endif
diff --git a/io/sys/poll.h b/io/sys/poll.h
index 2431dd1e14..5dfb721fe5 100644
--- a/io/sys/poll.h
+++ b/io/sys/poll.h
@@ -63,6 +63,17 @@ extern int poll (struct pollfd *__fds, nfds_t __nfds, int __timeout);
 extern int ppoll (struct pollfd *__fds, nfds_t __nfds,
 		  const struct timespec *__timeout,
 		  const __sigset_t *__ss);
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (ppoll, (struct pollfd *__fds, nfds_t __nfds,
+                               const struct timespec *__timeout,
+                               const __sigset_t *__ss),
+                       __ppoll64);
+#  else
+#  define ppoll __ppoll64
+#  endif
+# endif
 #endif
 
 __END_DECLS
diff --git a/io/sys/stat.h b/io/sys/stat.h
index 549375c087..d71fc202c7 100644
--- a/io/sys/stat.h
+++ b/io/sys/stat.h
@@ -361,11 +361,31 @@ extern int utimensat (int __fd, const char *__path,
 		      const struct timespec __times[2],
 		      int __flags)
      __THROW __nonnull ((2));
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (utimensat, (int fd, const char *__path,
+                                       const struct timespec __times[2],
+                                       int flags),
+                           __utimensat64) __nonnull ((2));
+#  else
+#  define utimensat __utimensat64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_XOPEN2K8
 /* Set file access and modification times of the file associated with FD.  */
 extern int futimens (int __fd, const struct timespec __times[2]) __THROW;
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (futimens, (int fd, const struct timespec __times[2]),
+                           __futimens64);
+#  else
+#  define futimens __futimens64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
diff --git a/io/utime.h b/io/utime.h
index c7612d0838..c1ebf08fe6 100644
--- a/io/utime.h
+++ b/io/utime.h
@@ -50,6 +50,16 @@ extern int utime (const char *__file,
 		  const struct utimbuf *__file_times)
      __THROW __nonnull ((1));
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (utime, (const char *__file,
+                                   const struct utimbuf *__file_times),
+                           __utime64);
+# else
+# define utime __utime64
+# endif
+#endif
+
 __END_DECLS
 
 #endif /* utime.h */
diff --git a/manual/creature.texi b/manual/creature.texi
index 5090735e4f..606b73d184 100644
--- a/manual/creature.texi
+++ b/manual/creature.texi
@@ -165,6 +165,50 @@ This macro was introduced as part of the Large File Support extension
 (LFS).
 @end defvr
 
+@defvr Macro _TIME_BITS
+This macro determines the bit size of @code{time_t} (and therefore the
+bit size of all @code{time_t} derived types and the prototypes of all
+related functions).  If @code{_TIME_BITS} is undefined, the bit size of
+@code{time_t} is architecture dependent.
+
+Possible values of @code{_TIME_BITS}:
+@enumerate
+@item
+@code{_TIME_BITS=64} and port from the outset uses 64-bit
+@code{time_t} and word size equals to @w{64 bits} (e.g. x86_64) - no
+action
+
+@item
+@code{_TIME_BITS=32} and port from the outset uses 32-bit
+@code{time_t} and word size equals to @w{64 bits} (e.g. ARM) - no
+action
+
+@item
+@code{_TIME_BITS=64} and port from the outset uses 64-bit
+@code{time_t} and word size equals to @w{32 bits} (e.g. ARC, RV32)
+- no action
+
+@item
+@code{_TIME_BITS=64} and port from the outset uses 32-bit
+@code{time_t} and word size equals to @w{32 bits} (e.g. ARM)
+- the @code{time_t} is modified to be able to hold 64-bit time.
+
+@item
+For any other use case the compile-time error is emitted.
+@end enumerate
+
+The @code{_TIME_BITS} can be only used when @code{_FILE_OFFSET_BITS=64}
+is also defined.
+
+For the point @b{4} above, calls to proper syscalls depend on the
+Linux kernel version on which the system is running. For Linux kernel
+version above @b{5.1} syscalls supporting 64-bit time are used. Otherwise,
+a fallback code is used with legacy (i.e. 32-bit) syscalls.
+
+By using this macro certain ports gain support for 64-bit time and as
+a result become immune to Y2038 problem.
+@end defvr
+
 @defvr Macro _ISOC99_SOURCE
 @standards{GNU, (none)}
 If this macro is defined, features from ISO C99 are included.  Since
diff --git a/misc/sys/select.h b/misc/sys/select.h
index 188a7fe607..fa3ed326f8 100644
--- a/misc/sys/select.h
+++ b/misc/sys/select.h
@@ -103,6 +103,19 @@ extern int select (int __nfds, fd_set *__restrict __readfds,
 		   fd_set *__restrict __exceptfds,
 		   struct timeval *__restrict __timeout);
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT)
+extern int __REDIRECT (select,
+                       (int __nfds, fd_set *__restrict __readfds,
+                        fd_set *__restrict __writefds,
+                        fd_set *__restrict __exceptfds,
+                        struct timeval *__restrict __timeout),
+                       __select64);
+# else
+#  define select __select64
+# endif
+#endif
+
 #ifdef __USE_XOPEN2K
 /* Same as above only that the TIMEOUT value is given with higher
    resolution and a sigmask which is been set temporarily.  This version
@@ -115,6 +128,20 @@ extern int pselect (int __nfds, fd_set *__restrict __readfds,
 		    fd_set *__restrict __exceptfds,
 		    const struct timespec *__restrict __timeout,
 		    const __sigset_t *__restrict __sigmask);
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (pselect,
+                       (int __nfds, fd_set *__restrict __readfds,
+                        fd_set *__restrict __writefds,
+                        fd_set *__restrict __exceptfds,
+                        const struct timespec *__restrict __timeout,
+                        const __sigset_t *__restrict __sigmask),
+                       __pselect64);
+#  else
+#   define pselect __pselect64
+#  endif
+# endif
 #endif
 
 
diff --git a/posix/sched.h b/posix/sched.h
index d8ce08a3ea..37a92e7cde 100644
--- a/posix/sched.h
+++ b/posix/sched.h
@@ -76,6 +76,15 @@ extern int sched_get_priority_min (int __algorithm) __THROW;
 /* Get the SCHED_RR interval for the named process.  */
 extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (sched_rr_get_interval,
+                           (__pid_t __pid, struct timespec *__t),
+                           __sched_rr_get_interval64);
+# else
+# define sched_rr_get_interval __sched_rr_get_interval64
+# endif
+#endif
 
 #ifdef __USE_GNU
 /* Access macros for `cpu_set'.  */
diff --git a/posix/sys/wait.h b/posix/sys/wait.h
index 9e7bb7f154..c56257a1d4 100644
--- a/posix/sys/wait.h
+++ b/posix/sys/wait.h
@@ -146,12 +146,32 @@ struct rusage;
    otherwise don't.  */
 extern __pid_t wait3 (int *__stat_loc, int __options,
 		      struct rusage * __usage) __THROWNL;
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT_NTHNL)
+extern __pid_t __REDIRECT_NTHNL (wait3, (int *__stat_loc, int __options,
+                                         struct rusage * __usage),
+                                 __wait3_time64);
+#  else
+#  define wait3 __wait3_time64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_MISC
 /* PID is like waitpid.  Other args are like wait3.  */
 extern __pid_t wait4 (__pid_t __pid, int *__stat_loc, int __options,
 		      struct rusage *__usage) __THROWNL;
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT_NTHNL)
+extern __pid_t __REDIRECT_NTHNL (wait4, (__pid_t __pid, int *__stat_loc,
+                                         int __options, struct rusage *__usage),
+                                 __wait4_time64);
+#  else
+#  define wait4 __wait4_time64
+#  endif
+# endif
 #endif /* Use misc.  */
 
 
diff --git a/resolv/netdb.h b/resolv/netdb.h
index 1f36f25d4a..9b242ce3d1 100644
--- a/resolv/netdb.h
+++ b/resolv/netdb.h
@@ -701,6 +701,17 @@ extern int getaddrinfo_a (int __mode, struct gaicb *__list[__restrict_arr],
 extern int gai_suspend (const struct gaicb *const __list[], int __ent,
 			const struct timespec *__timeout);
 
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (gai_suspend, (const struct gaicb *const __list[],
+                                     int __ent,
+                                     const struct timespec *__timeout),
+                       __gai_suspend_time64);
+#  else
+#   define gai_suspend __gai_suspend_time64
+#  endif
+# endif
+
 /* Get the error status of the request REQ.  */
 extern int gai_error (struct gaicb *__req) __THROW;
 
diff --git a/resource/sys/resource.h b/resource/sys/resource.h
index d30379d085..551d25e275 100644
--- a/resource/sys/resource.h
+++ b/resource/sys/resource.h
@@ -88,6 +88,16 @@ extern int setrlimit64 (__rlimit_resource_t __resource,
    and put it in *USAGE.  Returns 0 for success, -1 for failure.  */
 extern int getrusage (__rusage_who_t __who, struct rusage *__usage) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (getrusage, (__rusage_who_t __who,
+                                       struct rusage *__usage),
+                           __getrusage64);
+# else
+# define getrusage __getrusage64
+# endif
+#endif
+
 /* Return the highest priority of any process specified by WHICH and WHO
    (see above); if WHO is zero, the current process, process group, or user
    (as specified by WHO) is used.  A lower priority number means higher
diff --git a/rt/aio.h b/rt/aio.h
index 3a107b2783..23ace51c75 100644
--- a/rt/aio.h
+++ b/rt/aio.h
@@ -193,12 +193,17 @@ extern __ssize_t __REDIRECT_NTH (aio_return, (struct aiocb *__aiocbp),
 extern int __REDIRECT_NTH (aio_cancel,
 			   (int __fildes, struct aiocb *__aiocbp),
 			   aio_cancel64);
-
+#  ifdef __USE_TIME_BITS64
+extern int __REDIRECT_NTH (aio_suspend,
+			   (const struct aiocb *const __list[], int __nent,
+			    const struct timespec *__restrict __timeout),
+			   __aio_suspend_time64) __nonnull ((1));
+#  else
 extern int __REDIRECT_NTH (aio_suspend,
 			   (const struct aiocb *const __list[], int __nent,
 			    const struct timespec *__restrict __timeout),
 			   aio_suspend64) __nonnull ((1));
-
+#  endif
 extern int __REDIRECT_NTH (aio_fsync,
 			   (int __operation, struct aiocb *__aiocbp),
 			   aio_fsync64) __nonnull ((2));
@@ -210,7 +215,11 @@ extern int __REDIRECT_NTH (aio_fsync,
 #  define aio_error aio_error64
 #  define aio_return aio_return64
 #  define aio_cancel aio_cancel64
-#  define aio_suspend aio_suspend64
+#  ifdef __USE_TIME_BITS64
+#   define aio_suspend __aio_suspend_time64
+#  else
+#   define aio_suspend aio_suspend64
+#  endif
 #  define aio_fsync aio_fsync64
 # endif
 #endif
@@ -234,6 +243,16 @@ extern int aio_cancel64 (int __fildes, struct aiocb64 *__aiocbp) __THROW;
 extern int aio_suspend64 (const struct aiocb64 *const __list[], int __nent,
 			  const struct timespec *__restrict __timeout)
   __THROW __nonnull ((1));
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (aio_suspend64,
+			   (const struct aiocb *const __list[], int __nent,
+			    const struct timespec *__restrict __timeout),
+			   __aio_suspend_time64) __nonnull ((1));
+#  else
+#   define aio_suspend64 __aio_suspend_time64
+#  endif
+# endif
 
 extern int aio_fsync64 (int __operation, struct aiocb64 *__aiocbp)
   __THROW __nonnull ((2));
diff --git a/rt/mqueue.h b/rt/mqueue.h
index 8a62d99f50..44ccd5fe2d 100644
--- a/rt/mqueue.h
+++ b/rt/mqueue.h
@@ -71,6 +71,7 @@ extern int mq_send (mqd_t __mqdes, const char *__msg_ptr, size_t __msg_len,
 		    unsigned int __msg_prio) __nonnull ((2));
 
 #ifdef __USE_XOPEN2K
+# ifndef __USE_TIME_BITS64
 /* Receive the oldest from highest priority messages in message queue
    MQDES, stop waiting if ABS_TIMEOUT expires.  */
 extern ssize_t mq_timedreceive (mqd_t __mqdes, char *__restrict __msg_ptr,
@@ -79,12 +80,38 @@ extern ssize_t mq_timedreceive (mqd_t __mqdes, char *__restrict __msg_ptr,
 				const struct timespec *__restrict __abs_timeout)
   __nonnull ((2, 5));
 
+# else
+#  if defined(__REDIRECT)
+extern int __REDIRECT (mq_timedreceive, (mqd_t __mqdes,
+                               char *__restrict __msg_ptr,
+                               size_t __msg_len,
+                               unsigned int *__restrict __msg_prio,
+                               const struct timespec *__restrict __abs_timeout),
+                       __mq_timedreceive_time64)
+  __nonnull ((2, 5));
+#  else
+#   define mq_timedreceive __mq_timedreceive_time64
+#  endif
+# endif
+
 /* Add message pointed by MSG_PTR to message queue MQDES, stop blocking
    on full message queue if ABS_TIMEOUT expires.  */
 extern int mq_timedsend (mqd_t __mqdes, const char *__msg_ptr,
 			 size_t __msg_len, unsigned int __msg_prio,
 			 const struct timespec *__abs_timeout)
   __nonnull ((2, 5));
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (mq_timedsend, (mqd_t __mqdes,
+                       const char *__msg_ptr, size_t __msg_len,
+                       unsigned int __msg_prio,
+                       const struct timespec *__abs_timeout),
+     __mq_timedsend_time64);
+#  else
+#   define mq_timedsend __mq_timedsend_time64
+#  endif
+# endif
 #endif
 
 /* Define some inlines helping to catch common problems.  */
diff --git a/signal/signal.h b/signal/signal.h
index b17203c99c..d0c4042c50 100644
--- a/signal/signal.h
+++ b/signal/signal.h
@@ -274,6 +274,18 @@ extern int sigtimedwait (const sigset_t *__restrict __set,
 			 const struct timespec *__restrict __timeout)
      __nonnull ((1));
 
+#  ifdef __USE_TIME_BITS64
+#   if defined(__REDIRECT)
+extern int __REDIRECT (sigtimedwait,
+                       (const sigset_t *__restrict __set,
+                        siginfo_t *__restrict __info,
+                        const struct timespec *__restrict __timeout),
+                       __sigtimedwait64);
+#   else
+#    define sigtimedwait __sigtimedwait64
+#   endif
+#  endif
+
 /* Send signal SIG to the process PID.  Associate data in VAL with the
    signal.  */
 extern int sigqueue (__pid_t __pid, int __sig, const union sigval __val)
diff --git a/socket/sys/socket.h b/socket/sys/socket.h
index 949851a6ce..310a8aa239 100644
--- a/socket/sys/socket.h
+++ b/socket/sys/socket.h
@@ -199,6 +199,17 @@ extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags);
 extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
 		     unsigned int __vlen, int __flags,
 		     struct timespec *__tmo);
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (recvmmsg, (int __fd, struct mmsghdr *__vmessages,
+                                  unsigned int __vlen, int __flags,
+                                  struct timespec *__tmo),
+                       __recvmmsg64);
+#  else
+#   define recvmmsg __recvmmsg64
+#  endif
+# endif
 #endif
 
 
diff --git a/sysdeps/mach/hurd/bits/features-time64.h b/sysdeps/mach/hurd/bits/features-time64.h
new file mode 100644
index 0000000000..005689aa69
--- /dev/null
+++ b/sysdeps/mach/hurd/bits/features-time64.h
@@ -0,0 +1,21 @@
+/* Features part to handle 64-bit time_t support.  Hurd 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/>.  */
+
+#if defined _TIME_BITS && _TIME_BITS != 32
+# error "i686-gnu (HURD) only support _TIME_BITS=32"
+#endif
diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h
index a04a3a2754..8cc2bfbdd9 100644
--- a/sysdeps/nptl/pthread.h
+++ b/sysdeps/nptl/pthread.h
@@ -230,6 +230,17 @@ extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __THROW;
 extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
 				 const struct timespec *__abstime);
 
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (pthread_timedjoin_np,
+                       (pthread_t __th, void **__thread_return,
+                        const struct timespec *__abstime),
+                       __pthread_timedjoin_np64);
+#  else
+#  define pthread_timedjoin_np __pthread_timedjoin_np64
+#  endif
+# endif
+
 /* Make calling thread wait for termination of the thread TH, but only
    until TIMEOUT measured against the clock specified by CLOCKID.  The
    exit status of the thread is stored in *THREAD_RETURN, if
@@ -240,6 +251,18 @@ extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
 extern int pthread_clockjoin_np (pthread_t __th, void **__thread_return,
                                  clockid_t __clockid,
 				 const struct timespec *__abstime);
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (pthread_clockjoin_np,
+                       (pthread_t __th, void **__thread_return,
+                        clockid_t __clockid,
+                        const struct timespec *__abstime),
+                       __pthread_clockjoin_np64);
+#  else
+#  define pthread_clockjoin_np __pthread_clockjoin_np64
+#  endif
+# endif
 #endif
 
 /* Indicate that the thread TH is never to be joined with PTHREAD_JOIN.
@@ -776,6 +799,17 @@ extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
 extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
 				    const struct timespec *__restrict
 				    __abstime) __THROWNL __nonnull ((1, 2));
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT_NTHNL)
+extern int __REDIRECT_NTHNL (pthread_mutex_timedlock,
+                             (pthread_mutex_t *__restrict __mutex,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_mutex_timedlock64);
+#  else
+#   define pthread_mutex_timedlock __pthread_mutex_timedlock64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
@@ -783,6 +817,18 @@ extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex,
 				    clockid_t __clockid,
 				    const struct timespec *__restrict
 				    __abstime) __THROWNL __nonnull ((1, 3));
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT_NTHNL)
+extern int __REDIRECT_NTHNL (pthread_mutex_clocklock,
+                             (pthread_mutex_t *__restrict __mutex,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_mutex_clocklock64);
+#  else
+#   define pthread_mutex_clocklock __pthread_mutex_clocklock64
+#  endif
+# endif
 #endif
 
 /* Unlock a mutex.  */
@@ -922,6 +968,17 @@ extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
 extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 2));
+
+#  ifdef __USE_TIME_BITS64
+#   if defined(__REDIRECT_NTHNL)
+extern int __REDIRECT_NTHNL (pthread_rwlock_timedrdlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_timedrdlock64);
+#   else
+#    define pthread_rwlock_timedrdlock __pthread_rwlock_timedrdlock64
+#   endif
+#  endif
 # endif
 
 # ifdef __USE_GNU
@@ -929,6 +986,18 @@ extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock,
 				       clockid_t __clockid,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 3));
+
+#  ifdef __USE_TIME_BITS64
+#   if defined(__REDIRECT_NTHNL)
+extern int __REDIRECT_NTHNL (pthread_rwlock_clockrdlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_clockrdlock64);
+#   else
+#    define pthread_rwlock_clockrdlock __pthread_rwlock_clockrdlock64
+#   endif
+#  endif
 # endif
 
 /* Acquire write lock for RWLOCK.  */
@@ -944,6 +1013,17 @@ extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
 extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 2));
+
+#  ifdef __USE_TIME_BITS64
+#   if defined(__REDIRECT_NTHNL)
+extern int __REDIRECT_NTHNL (pthread_rwlock_timedwrlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_timedwrlock64);
+#   else
+#    define pthread_rwlock_timedwrlock __pthread_rwlock_timedwrlock64
+#   endif
+#  endif
 # endif
 
 # ifdef __USE_GNU
@@ -951,6 +1031,18 @@ extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock,
 				       clockid_t __clockid,
 				       const struct timespec *__restrict
 				       __abstime) __THROWNL __nonnull ((1, 3));
+
+#  ifdef __USE_TIME_BITS64
+#   if defined(__REDIRECT_NTHNL)
+extern int __REDIRECT_NTHNL (pthread_rwlock_clockwrlock,
+                             (pthread_rwlock_t *__restrict __rwlock,
+                              clockid_t __clockid,
+                              const struct timespec *__restrict __abstime),
+                             __pthread_rwlock_clockwrlock64);
+#   else
+#    define pthread_rwlock_clockwrlock __pthread_rwlock_clockwrlock64
+#   endif
+#  endif
 # endif
 
 /* Unlock RWLOCK.  */
@@ -1032,6 +1124,18 @@ extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
 				   const struct timespec *__restrict __abstime)
      __nonnull ((1, 2, 3));
 
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (pthread_cond_timedwait,
+                       (pthread_cond_t *__restrict __cond,
+                        pthread_mutex_t *__restrict __mutex,
+                        const struct timespec *__restrict __abstime),
+                       __pthread_cond_timedwait64);
+#  else
+#  define pthread_cond_timedwait __pthread_cond_timedwait64
+#  endif
+# endif
+
 # ifdef __USE_GNU
 /* Wait for condition variable COND to be signaled or broadcast until
    ABSTIME measured by the specified clock. MUTEX is assumed to be
@@ -1045,6 +1149,19 @@ extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond,
 				   __clockid_t __clock_id,
 				   const struct timespec *__restrict __abstime)
      __nonnull ((1, 2, 4));
+
+#  ifdef __USE_TIME_BITS64
+#   if defined(__REDIRECT)
+extern int __REDIRECT (pthread_cond_clockwait,
+                       (pthread_cond_t *__restrict __cond,
+                        pthread_mutex_t *__restrict __mutex,
+                        __clockid_t __clock_id,
+                        const struct timespec *__restrict __abstime),
+                       __pthread_cond_clockwait64);
+#   else
+#   define pthread_cond_clockwait __pthread_cond_clockwait64
+#   endif
+#  endif
 # endif
 
 /* Functions for handling condition variable attributes.  */
diff --git a/sysdeps/pthread/semaphore.h b/sysdeps/pthread/semaphore.h
index 7fb0e5c103..e0ee16f804 100644
--- a/sysdeps/pthread/semaphore.h
+++ b/sysdeps/pthread/semaphore.h
@@ -62,6 +62,17 @@ extern int sem_wait (sem_t *__sem) __nonnull ((1));
 extern int sem_timedwait (sem_t *__restrict __sem,
 			  const struct timespec *__restrict __abstime)
   __nonnull ((1, 2));
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (sem_timedwait,
+                       (sem_t *__restrict __sem,
+                        const struct timespec *__restrict __abstime),
+                        __sem_timedwait64);
+#  else
+#   define sem_timedwait __sem_timedwait64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
@@ -69,6 +80,18 @@ extern int sem_clockwait (sem_t *__restrict __sem,
 			  clockid_t clock,
 			  const struct timespec *__restrict __abstime)
   __nonnull ((1, 3));
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (sem_clockwait,
+                       (sem_t *__restrict __sem,
+                        clockid_t clock,
+                        const struct timespec *__restrict __abstime),
+                        __sem_clockwait64);
+#  else
+#   define sem_clockwait __sem_clockwait64
+#  endif
+# endif
 #endif
 
 /* Test whether SEM is posted.  */
diff --git a/sysdeps/pthread/threads.h b/sysdeps/pthread/threads.h
index 46929a025e..288e6f48e4 100644
--- a/sysdeps/pthread/threads.h
+++ b/sysdeps/pthread/threads.h
@@ -91,6 +91,16 @@ extern thrd_t thrd_current (void);
 extern int thrd_sleep (const struct timespec *__time_point,
 		       struct timespec *__remaining);
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT)
+extern int __REDIRECT (thrd_sleep, (const struct timespec *__time_point,
+                                    struct timespec *__remaining),
+                       __thrd_sleep64);
+# else
+#  define thrd_sleep __thrd_sleep64
+# endif
+#endif
+
 /* Terminate current thread execution, cleaning up any thread local
    storage and freeing resources.  Returns the value specified in __RES.  */
 extern void thrd_exit (int __res) __attribute__ ((__noreturn__));
@@ -134,6 +144,17 @@ extern int mtx_lock (mtx_t *__mutex);
 extern int mtx_timedlock (mtx_t *__restrict __mutex,
 			  const struct timespec *__restrict __time_point);
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT)
+extern int __REDIRECT (mtx_timedlock, (mtx_t *__restrict __mutex,
+                                       const struct timespec *__restrict
+                                       __time_point),
+                       __mtx_timedlock64);
+# else
+#  define mtx_timedlock __mtx_timedlock64
+# endif
+#endif
+
 /* Try to lock the mutex pointed by __MUTEX without blocking.  If the mutex
    is free the current threads takes control of it, otherwise it returns
    immediately.  */
@@ -175,6 +196,18 @@ extern int cnd_timedwait (cnd_t *__restrict __cond,
 			  mtx_t *__restrict __mutex,
 			  const struct timespec *__restrict __time_point);
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT)
+extern int __REDIRECT (cnd_timedwait, (cnd_t *__restrict __cond,
+                                       mtx_t *__restrict __mutex,
+                                       const struct timespec *__restrict
+                                       __time_point),
+                       __cnd_timedwait64);
+# else
+#  define cnd_timedwait __cnd_timedwait64
+# endif
+#endif
+
 /* Destroy condition variable pointed by __cond and free all of its
    resources.  */
 extern void cnd_destroy (cnd_t *__COND);
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index c35f783e2a..47e6339ab0 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -1,3 +1,4 @@
+%include <time64-compat.h>
 libc {
   GLIBC_2.0 {
     # functions used in inline functions or macros
@@ -168,6 +169,67 @@ libc {
     getdents64; gettid; tgkill;
   }
   GLIBC_2.32 {
+  }
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    # io
+    __ppoll64;
+    __utime64;
+    # misc
+    __futimes64;
+    __futimesat64;
+    __lutimes64;
+    __select64;
+    __utimes64;
+    # posix
+    __nanosleep64;
+    __pselec64;
+    __wait3_time64;
+    __wait4_time64;
+    # resouces
+    __getrusage64;
+    # signal
+    __sigtimedwait64;
+    # sysvipc
+    __msgctl64;
+    __semctl64;
+    __semtimedop64;
+    __shmctl64;
+    # time
+    ___adjtimex64;
+    __adjtime64;
+    __clock_adjtime64;
+    __clock_getres64;
+    __clock_gettime64;
+    __clock_nanosleep_time64;
+    __clock_settime64;
+    __ctime64;
+    __ctime64_r;
+    __difftime64;
+    __futimens64;
+    __getitimer64;
+    __gettimeofday64;
+    __gmtime64;
+    __gmtime64_r;
+    __mktime64;
+    __nanosleep64;
+    __setitimer64;
+    __settimeofday64;
+    __time64;
+    __timegm64;
+    __timespec_get64;
+    __utimensat64;
+     __utimes64;
+    # misc
+    __ntp_gettime64;
+    __ntp_gettimex64;
+    __pselect64;
+    __recvmmsg64;
+    __sched_rr_get_interval64;
+    __timerfd_gettime64;
+    __timerfd_settime64;
+%endif
   }
   GLIBC_PRIVATE {
     # functions used in other libraries
@@ -181,3 +243,47 @@ libc {
     __netlink_assert_response;
   }
 }
+
+libpthread {
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    __cnd_timedwait64;
+    __mtx_timedlock64;
+    __pthread_clockjoin_np64;
+    __pthread_cond_timedwait64;
+    __pthread_cond_clockwait64;
+    __pthread_mutex_timedlock64;
+    __pthread_mutex_clocklock64;
+    __pthread_rwlock_clockrdlock64;
+    __pthread_rwlock_clockwrlock64;
+    __pthread_rwlock_timedrdlock64;
+    __pthread_rwlock_timedwrlock64;
+    __pthread_timedjoin_np64;
+    __sem_clockwait64;
+    __sem_timedwait64;
+    __thrd_sleep64;
+%endif
+  }
+}
+
+librt {
+  GLIBC_2.34 {
+%ifdef TIME64_NON_DEFAULT
+    # 64 bit time_t support
+    __aio_suspend_time64;
+    __mq_timedsend_time64;
+    __mq_timedreceive_time64;
+    __timer_gettime64;
+    __timer_settime64;
+%endif
+  }
+}
+
+libanl {
+%ifdef TIME64_NON_DEFAULT
+  GLIBC_2.34 {
+    __gai_suspend_time64;
+  }
+%endif
+}
diff --git a/sysdeps/unix/sysv/linux/arm/be/libanl.abilist b/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index eb3e165ce8..b985b1e1ff 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -155,6 +155,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index b6c26c7a50..3fe358cc31 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -33,6 +33,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libanl.abilist b/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 2e7dbbe7df..cba02c3ce8 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -152,6 +152,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index b6c26c7a50..3fe358cc31 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -33,6 +33,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/arm/time64-compat.h b/sysdeps/unix/sysv/linux/arm/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/arm/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/bits/msq.h b/sysdeps/unix/sysv/linux/bits/msq.h
index 3313b69d78..7c9c479551 100644
--- a/sysdeps/unix/sysv/linux/bits/msq.h
+++ b/sysdeps/unix/sysv/linux/bits/msq.h
@@ -26,6 +26,7 @@ typedef __syscall_ulong_t msgqnum_t;
 typedef __syscall_ulong_t msglen_t;
 
 #include <bits/types/struct_msqid_ds.h>
+#include <bits/types/struct_msqid64_ds.h>
 
 /* Define options for message queue functions.  */
 #define MSG_NOERROR	010000	/* no error if message is too big */
diff --git a/sysdeps/unix/sysv/linux/bits/sem.h b/sysdeps/unix/sysv/linux/bits/sem.h
index ad13287e66..776524b876 100644
--- a/sysdeps/unix/sysv/linux/bits/sem.h
+++ b/sysdeps/unix/sysv/linux/bits/sem.h
@@ -22,6 +22,7 @@
 #include <sys/types.h>
 #include <bits/timesize.h>
 #include <bits/types/struct_semid_ds.h>
+#include <bits/types/struct_semid64_ds.h>
 
 /* Flags for `semop'.  */
 #define SEM_UNDO	0x1000		/* undo the operation on exit */
diff --git a/sysdeps/unix/sysv/linux/bits/shm.h b/sysdeps/unix/sysv/linux/bits/shm.h
index a50c79d7be..454fc3f366 100644
--- a/sysdeps/unix/sysv/linux/bits/shm.h
+++ b/sysdeps/unix/sysv/linux/bits/shm.h
@@ -43,6 +43,7 @@ __BEGIN_DECLS
 typedef __syscall_ulong_t shmatt_t;
 
 #include <bits/types/struct_shmid_ds.h>
+#include <bits/types/struct_shmid64_ds.h>
 
 #ifdef __USE_MISC
 
diff --git a/sysdeps/unix/sysv/linux/bits/time.h b/sysdeps/unix/sysv/linux/bits/time.h
index ee5a8b3ef4..d0c98a7864 100644
--- a/sysdeps/unix/sysv/linux/bits/time.h
+++ b/sysdeps/unix/sysv/linux/bits/time.h
@@ -77,6 +77,16 @@ __BEGIN_DECLS
 /* Tune a POSIX clock.  */
 extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (clock_adjtime, (__clockid_t __clock_id,
+                                           struct timex *__utx),
+                           __clock_adjtime64);
+# else
+# define clock_adjtime __clock_adjtime64
+# endif
+#endif
+
 __END_DECLS
 #endif /* use GNU */
 
diff --git a/sysdeps/unix/sysv/linux/csky/libanl.abilist b/sysdeps/unix/sysv/linux/csky/libanl.abilist
index 416a6f8ddb..01f2e6cbf0 100644
--- a/sysdeps/unix/sysv/linux/csky/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.29 gai_cancel F
 GLIBC_2.29 gai_error F
 GLIBC_2.29 gai_suspend F
 GLIBC_2.29 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index fd4fb4a9a9..7296e50db1 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -2115,6 +2115,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index 6ce59276a7..51d5822091 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -211,3 +211,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist
index c6690ef7c1..b60deca65a 100644
--- a/sysdeps/unix/sysv/linux/csky/librt.abilist
+++ b/sysdeps/unix/sysv/linux/csky/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.29 timer_delete F
 GLIBC_2.29 timer_getoverrun F
 GLIBC_2.29 timer_gettime F
 GLIBC_2.29 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/csky/time64-compat.h b/sysdeps/unix/sysv/linux/csky/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/csky/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/hppa/libanl.abilist b/sysdeps/unix/sysv/linux/hppa/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/hppa/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 8530ed550d..0f82e3fe94 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2074,6 +2074,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index cabc5af858..0cdb30a3c1 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -218,6 +218,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/hppa/librt.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/hppa/time64-compat.h b/sysdeps/unix/sysv/linux/hppa/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/hppa/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/i386/Makefile b/sysdeps/unix/sysv/linux/i386/Makefile
index da716e2c1b..8d5efb4f65 100644
--- a/sysdeps/unix/sysv/linux/i386/Makefile
+++ b/sysdeps/unix/sysv/linux/i386/Makefile
@@ -1,6 +1,8 @@
 # The default ABI is 32.
 default-abi := 32
 
+extra-version := Versions-y2038
+
 ifeq ($(subdir),misc)
 sysdep_routines += ioperm iopl vm86
 
diff --git a/sysdeps/unix/sysv/linux/i386/libanl.abilist b/sysdeps/unix/sysv/linux/i386/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/i386/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 51b3d94801..70384f6e7f 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2241,6 +2241,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index 18177307c8..b3a825d60e 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -226,6 +226,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/i386/librt.abilist
+++ b/sysdeps/unix/sysv/linux/i386/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/i386/time64-compat.h b/sysdeps/unix/sysv/linux/i386/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/include/sys/msg.h b/sysdeps/unix/sysv/linux/include/sys/msg.h
index 522903f818..c460be0dc9 100644
--- a/sysdeps/unix/sysv/linux/include/sys/msg.h
+++ b/sysdeps/unix/sysv/linux/include/sys/msg.h
@@ -7,8 +7,6 @@ extern ssize_t __libc_msgrcv (int msqid, void *msgp, size_t msgsz,
 extern int __libc_msgsnd (int msqid, const void *msgp, size_t msgsz,
 			  int msgflg);
 
-# include <bits/types/struct_msqid64_ds.h>
-
 # if __TIMESIZE == 64
 #  define __msgctl64 __msgctl
 # else
diff --git a/sysdeps/unix/sysv/linux/include/sys/shm.h b/sysdeps/unix/sysv/linux/include/sys/shm.h
index 530a1cdfc9..85177a632d 100644
--- a/sysdeps/unix/sysv/linux/include/sys/shm.h
+++ b/sysdeps/unix/sysv/linux/include/sys/shm.h
@@ -3,8 +3,6 @@
 
 #ifndef _ISOMAC
 
-# include <bits/types/struct_shmid64_ds.h>
-
 # if __TIMESIZE == 64
 #  define __shmctl64 __shmctl
 # else
diff --git a/sysdeps/unix/sysv/linux/include/sys/timex.h b/sysdeps/unix/sysv/linux/include/sys/timex.h
index e136ed172e..6cf33269e5 100644
--- a/sysdeps/unix/sysv/linux/include/sys/timex.h
+++ b/sysdeps/unix/sysv/linux/include/sys/timex.h
@@ -27,6 +27,7 @@ libc_hidden_proto (__adjtimex)
 
 #  include <time.h>
 #  include <struct___timeval64.h>
+
 /* Local definition of 64 bit time supporting timex struct */
 #  if __TIMESIZE == 64
 #   define __timex64 timex
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
index a8fafedb66..37f9b49e52 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist
@@ -1,3 +1,4 @@
+GLIBC_2.34 __gai_suspend_time64 F
 GLIBC_2.4 gai_cancel F
 GLIBC_2.4 gai_error F
 GLIBC_2.4 gai_suspend F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 113d895744..c061b4d1d3 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -156,6 +156,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index b6c26c7a50..3fe358cc31 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -33,6 +33,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 _IO_flockfile F
 GLIBC_2.4 _IO_ftrylockfile F
 GLIBC_2.4 _IO_funlockfile F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
index 3c0647b251..8cb1ed626c 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist
@@ -1,3 +1,8 @@
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 aio_cancel F
 GLIBC_2.4 aio_cancel64 F
 GLIBC_2.4 aio_error F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index b446ee38fd..bf7452cadd 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2186,6 +2186,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index 18177307c8..b3a825d60e 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -226,6 +226,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/m68k/time64-compat.h b/sysdeps/unix/sysv/linux/m68k/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/m68k/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
index 67c7554803..c06e33a1cf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.18 gai_cancel F
 GLIBC_2.18 gai_error F
 GLIBC_2.18 gai_suspend F
 GLIBC_2.18 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index b5b5ed8fea..8bb54c23ff 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2166,6 +2166,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index 60397187b6..855c469c63 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -218,3 +218,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
index 889dfbc0ee..1b8fc10087 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timer_gettime F
 GLIBC_2.18 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
index 67c7554803..c06e33a1cf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.18 gai_cancel F
 GLIBC_2.18 gai_error F
 GLIBC_2.18 gai_suspend F
 GLIBC_2.18 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 794cdb5069..9eca6783c1 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2163,6 +2163,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index 60397187b6..855c469c63 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -218,3 +218,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
index 889dfbc0ee..1b8fc10087 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.18 timer_delete F
 GLIBC_2.18 timer_getoverrun F
 GLIBC_2.18 timer_gettime F
 GLIBC_2.18 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/time64-compat.h b/sysdeps/unix/sysv/linux/microblaze/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/microblaze/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index ab50ed5c78..f7c9fb1979 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2157,6 +2157,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index b35d7f19ca..887a32a376 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -227,6 +227,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
index 1539c1cef9..c4dd28e3b2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index e64ccb03b0..081934d6e7 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2155,6 +2155,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h b/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
index 1539c1cef9..c4dd28e3b2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 688336b729..b3f50abc22 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2163,6 +2163,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
index b35d7f19ca..887a32a376 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
@@ -227,6 +227,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h b/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/nios2/libanl.abilist b/sysdeps/unix/sysv/linux/nios2/libanl.abilist
index 6ff9c2d94e..6b080bd075 100644
--- a/sysdeps/unix/sysv/linux/nios2/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.21 gai_cancel F
 GLIBC_2.21 gai_error F
 GLIBC_2.21 gai_suspend F
 GLIBC_2.21 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 522c733a27..f2779fd725 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2204,6 +2204,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 924ad6e451..18407317e6 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -218,3 +218,17 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist
index b4ae7a2dc2..2458614125 100644
--- a/sysdeps/unix/sysv/linux/nios2/librt.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist
@@ -33,3 +33,8 @@ GLIBC_2.21 timer_delete F
 GLIBC_2.21 timer_getoverrun F
 GLIBC_2.21 timer_gettime F
 GLIBC_2.21 timer_settime F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
diff --git a/sysdeps/unix/sysv/linux/nios2/time64-compat.h b/sysdeps/unix/sysv/linux/nios2/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/nios2/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 99bc2a0df6..4231ae0df2 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2213,6 +2213,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 13b41dafb6..711812931d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -228,6 +228,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 156b336bfe..bdf73c4663 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2246,6 +2246,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 00d9eba7cd..5716784ff8 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2211,6 +2211,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 lastlog_read F
 GLIBC_2.34 lastlog_write F
 GLIBC_2.4 _IO_fprintf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 0a60f1cca2..28db1e4b6d 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -228,6 +228,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h b/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/semctl.c b/sysdeps/unix/sysv/linux/semctl.c
index 1043b2b80d..bb2690d30f 100644
--- a/sysdeps/unix/sysv/linux/semctl.c
+++ b/sysdeps/unix/sysv/linux/semctl.c
@@ -21,7 +21,6 @@
 #include <ipc_priv.h>
 #include <sysdep.h>
 #include <shlib-compat.h>
-#include <bits/types/struct_semid64_ds.h>  /* For __semid64_ds.  */
 #include <linux/posix_types.h>             /* For __kernel_mode_t.  */
 
 /* The struct used to issue the syscall.  For architectures that assume
diff --git a/sysdeps/unix/sysv/linux/sh/be/libanl.abilist b/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 84d050ff2f..5cdbf3dd8f 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2081,6 +2081,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index cabc5af858..0cdb30a3c1 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -218,6 +218,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libanl.abilist b/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index da6cf58a8c..d791e4499b 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2078,6 +2078,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index cabc5af858..0cdb30a3c1 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -218,6 +218,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
index bb03781dcc..463a88a1df 100644
--- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist
@@ -32,6 +32,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sh/time64-compat.h b/sysdeps/unix/sysv/linux/sh/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sh/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
index d9a5ed015d..ff719e7605 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist
@@ -2,3 +2,4 @@ GLIBC_2.2.3 gai_cancel F
 GLIBC_2.2.3 gai_error F
 GLIBC_2.2.3 gai_suspend F
 GLIBC_2.2.3 getaddrinfo_a F
+GLIBC_2.34 __gai_suspend_time64 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index a678baade9..de199a4617 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2202,6 +2202,51 @@ GLIBC_2.33 mknod F
 GLIBC_2.33 mknodat F
 GLIBC_2.33 stat F
 GLIBC_2.33 stat64 F
+GLIBC_2.34 ___adjtimex64 F
+GLIBC_2.34 __adjtime64 F
+GLIBC_2.34 __clock_adjtime64 F
+GLIBC_2.34 __clock_getres64 F
+GLIBC_2.34 __clock_gettime64 F
+GLIBC_2.34 __clock_nanosleep_time64 F
+GLIBC_2.34 __clock_settime64 F
+GLIBC_2.34 __ctime64 F
+GLIBC_2.34 __ctime64_r F
+GLIBC_2.34 __difftime64 F
+GLIBC_2.34 __futimens64 F
+GLIBC_2.34 __futimes64 F
+GLIBC_2.34 __futimesat64 F
+GLIBC_2.34 __getitimer64 F
+GLIBC_2.34 __getrusage64 F
+GLIBC_2.34 __gettimeofday64 F
+GLIBC_2.34 __gmtime64 F
+GLIBC_2.34 __gmtime64_r F
+GLIBC_2.34 __lutimes64 F
+GLIBC_2.34 __mktime64 F
+GLIBC_2.34 __msgctl64 F
+GLIBC_2.34 __nanosleep64 F
+GLIBC_2.34 __ntp_gettime64 F
+GLIBC_2.34 __ntp_gettimex64 F
+GLIBC_2.34 __ppoll64 F
+GLIBC_2.34 __pselect64 F
+GLIBC_2.34 __recvmmsg64 F
+GLIBC_2.34 __sched_rr_get_interval64 F
+GLIBC_2.34 __select64 F
+GLIBC_2.34 __semctl64 F
+GLIBC_2.34 __semtimedop64 F
+GLIBC_2.34 __setitimer64 F
+GLIBC_2.34 __settimeofday64 F
+GLIBC_2.34 __shmctl64 F
+GLIBC_2.34 __sigtimedwait64 F
+GLIBC_2.34 __time64 F
+GLIBC_2.34 __timegm64 F
+GLIBC_2.34 __timerfd_gettime64 F
+GLIBC_2.34 __timerfd_settime64 F
+GLIBC_2.34 __timespec_get64 F
+GLIBC_2.34 __utime64 F
+GLIBC_2.34 __utimensat64 F
+GLIBC_2.34 __utimes64 F
+GLIBC_2.34 __wait3_time64 F
+GLIBC_2.34 __wait4_time64 F
 GLIBC_2.34 getutent F
 GLIBC_2.34 getutent_r F
 GLIBC_2.34 getutid F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index 390b6384d0..b5f763d9fd 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -228,6 +228,20 @@ GLIBC_2.30 pthread_rwlock_clockrdlock F
 GLIBC_2.30 pthread_rwlock_clockwrlock F
 GLIBC_2.30 sem_clockwait F
 GLIBC_2.31 pthread_clockjoin_np F
+GLIBC_2.34 __cnd_timedwait64 F
+GLIBC_2.34 __mtx_timedlock64 F
+GLIBC_2.34 __pthread_clockjoin_np64 F
+GLIBC_2.34 __pthread_cond_clockwait64 F
+GLIBC_2.34 __pthread_cond_timedwait64 F
+GLIBC_2.34 __pthread_mutex_clocklock64 F
+GLIBC_2.34 __pthread_mutex_timedlock64 F
+GLIBC_2.34 __pthread_rwlock_clockrdlock64 F
+GLIBC_2.34 __pthread_rwlock_clockwrlock64 F
+GLIBC_2.34 __pthread_rwlock_timedrdlock64 F
+GLIBC_2.34 __pthread_rwlock_timedwrlock64 F
+GLIBC_2.34 __pthread_timedjoin_np64 F
+GLIBC_2.34 __sem_clockwait64 F
+GLIBC_2.34 __sem_timedwait64 F
 GLIBC_2.4 pthread_mutex_consistent_np F
 GLIBC_2.4 pthread_mutex_getprioceiling F
 GLIBC_2.4 pthread_mutex_setprioceiling F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
index 38f0aad791..fb2769e87b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist
@@ -34,6 +34,11 @@ GLIBC_2.3.4 mq_setattr F
 GLIBC_2.3.4 mq_timedreceive F
 GLIBC_2.3.4 mq_timedsend F
 GLIBC_2.3.4 mq_unlink F
+GLIBC_2.34 __aio_suspend_time64 F
+GLIBC_2.34 __mq_timedreceive_time64 F
+GLIBC_2.34 __mq_timedsend_time64 F
+GLIBC_2.34 __timer_gettime64 F
+GLIBC_2.34 __timer_settime64 F
 GLIBC_2.4 lio_listio F
 GLIBC_2.4 lio_listio64 F
 GLIBC_2.7 __mq_open_2 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h b/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h
new file mode 100644
index 0000000000..700f854597
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h
@@ -0,0 +1,2 @@
+/* ABI support 64-bit in non-default mode.  */
+#define TIME64_NON_DEFAULT
diff --git a/sysdeps/unix/sysv/linux/sys/timerfd.h b/sysdeps/unix/sysv/linux/sys/timerfd.h
index 4ad64c2259..790b9d5be6 100644
--- a/sysdeps/unix/sysv/linux/sys/timerfd.h
+++ b/sysdeps/unix/sysv/linux/sys/timerfd.h
@@ -47,9 +47,31 @@ extern int timerfd_settime (int __ufd, int __flags,
 			    const struct itimerspec *__utmr,
 			    struct itimerspec *__otmr) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timerfd_settime,
+                           (int __ufd, int __flags,
+                            const struct itimerspec *__restrict __value,
+                            struct itimerspec *__restrict __ovalue),
+                           __timerfd_settime64);
+# else
+# define timerfd_settime __timerfd_settime64
+# endif
+#endif
+
 /* Return the next expiration time of UFD.  */
 extern int timerfd_gettime (int __ufd, struct itimerspec *__otmr) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timerfd_gettime, (int __ufd,
+                                             struct itimerspec *__otmr),
+                           __timerfd_gettime64);
+# else
+# define timerfd_gettime __timerfd_gettime64
+# endif
+#endif
+
 __END_DECLS
 
 #endif /* sys/timerfd.h */
diff --git a/sysdeps/unix/sysv/linux/sys/timex.h b/sysdeps/unix/sysv/linux/sys/timex.h
index 37931ff496..033eaa9305 100644
--- a/sysdeps/unix/sysv/linux/sys/timex.h
+++ b/sysdeps/unix/sysv/linux/sys/timex.h
@@ -57,15 +57,46 @@ __BEGIN_DECLS
 extern int __adjtimex (struct timex *__ntx) __THROW;
 extern int adjtimex (struct timex *__ntx) __THROW;
 
-#ifdef __REDIRECT_NTH
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (adjtimex, (struct timex *__ntx),
+                           ___adjtimex64);
+# else
+# define adjtimex ___adjtimex64
+# endif
+#endif
+
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
 extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv),
-			   ntp_gettimex);
+                           __ntp_gettime64);
+extern int __REDIRECT_NTH (ntp_gettimex, (struct ntptimeval *__ntv),
+                           __ntp_gettimex64);
+# else
+# define ntp_gettime __ntp_gettime64
+# define ntp_gettimex __ntp_gettimex64
+# endif
 #else
+# ifdef __REDIRECT_NTH
+extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv),
+			   ntp_gettimex);
+# else
 extern int ntp_gettimex (struct ntptimeval *__ntv) __THROW;
-# define ntp_gettime ntp_gettimex
+#  define ntp_gettime ntp_gettimex
+# endif
 #endif
+
 extern int ntp_adjtime (struct timex *__tntx) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (ntp_adjtime, (struct timex *__ntx),
+                           ___adjtimex64);
+# else
+# define ntp_adjtime ___adjtimex64
+# endif
+#endif
+
 __END_DECLS
 
 #endif /* sys/timex.h */
diff --git a/sysdeps/unix/sysv/linux/time64-compat.h b/sysdeps/unix/sysv/linux/time64-compat.h
new file mode 100644
index 0000000000..d7d5e1ec15
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/time64-compat.h
@@ -0,0 +1,3 @@
+/* Header user by Versions to generate the 64 bit time_t symbols.
+   Legacy ABIs with default 32 bit time support defined TIME64_NON_DEFAULT
+   to generate the newer 64 bit time symbols.  */
diff --git a/sysvipc/sys/msg.h b/sysvipc/sys/msg.h
index 9ddedf5e15..effe8212e4 100644
--- a/sysvipc/sys/msg.h
+++ b/sysvipc/sys/msg.h
@@ -60,6 +60,16 @@ __BEGIN_DECLS
 /* Message queue control operation.  */
 extern int msgctl (int __msqid, int __cmd, struct msqid_ds *__buf) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (msgctl,
+                           (int __msqid, int __cmd, struct msqid_ds *__buf),
+                           __msgctl64);
+# else
+# define msgctl __msgctl64
+# endif
+#endif
+
 /* Get messages queue.  */
 extern int msgget (key_t __key, int __msgflg) __THROW;
 
diff --git a/sysvipc/sys/sem.h b/sysvipc/sys/sem.h
index 03b65dff21..2dc68cc85d 100644
--- a/sysvipc/sys/sem.h
+++ b/sysvipc/sys/sem.h
@@ -50,6 +50,16 @@ __BEGIN_DECLS
 /* Semaphore control operation.  */
 extern int semctl (int __semid, int __semnum, int __cmd, ...) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (semctl,
+                           (int __semid, int __semnum, int __cmd, ...),
+                           __semctl64);
+# else
+# define semctl __semctl64
+# endif
+#endif
+
 /* Get semaphore.  */
 extern int semget (key_t __key, int __nsems, int __semflg) __THROW;
 
@@ -60,6 +70,17 @@ extern int semop (int __semid, struct sembuf *__sops, size_t __nsops) __THROW;
 /* Operate on semaphore with timeout.  */
 extern int semtimedop (int __semid, struct sembuf *__sops, size_t __nsops,
 		       const struct timespec *__timeout) __THROW;
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (semtimedop, (int __semid, struct sembuf *__sops,
+                                        size_t __nsops,
+                                        const struct timespec *__timeout),
+                           __semtimedop64);
+#  else
+#  define semtimedop __semtimedop64
+#  endif
+# endif
 #endif
 
 __END_DECLS
diff --git a/sysvipc/sys/shm.h b/sysvipc/sys/shm.h
index 7506ba67bf..630770c0b2 100644
--- a/sysvipc/sys/shm.h
+++ b/sysvipc/sys/shm.h
@@ -48,6 +48,16 @@ __BEGIN_DECLS
 /* Shared memory control operation.  */
 extern int shmctl (int __shmid, int __cmd, struct shmid_ds *__buf) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (shmctl,
+                           (int __shmid, int __cmd, struct shmid_ds *__buf),
+                           __shmctl64);
+# else
+# define shmctl __shmctl64
+# endif
+#endif
+
 /* Get shared memory segment.  */
 extern int shmget (key_t __key, size_t __size, int __shmflg) __THROW;
 
diff --git a/time/bits/types/struct_timespec.h b/time/bits/types/struct_timespec.h
index 4fe47a0d25..1df298eb98 100644
--- a/time/bits/types/struct_timespec.h
+++ b/time/bits/types/struct_timespec.h
@@ -5,6 +5,7 @@
 #include <bits/endian.h>
 #include <bits/types/time_t.h>
 
+
 /* POSIX.1b structure for a time value.  This is like a `struct timeval' but
    has nanoseconds instead of microseconds.  */
 struct timespec
diff --git a/time/sys/time.h b/time/sys/time.h
index 42f91f186b..b1019c74d9 100644
--- a/time/sys/time.h
+++ b/time/sys/time.h
@@ -66,6 +66,16 @@ struct timezone
 extern int gettimeofday (struct timeval *__restrict __tv,
 			 void *__restrict __tz) __THROW __nonnull ((1));
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (gettimeofday, (struct timeval *__restrict __tv,
+                                          void *__restrict __tz),
+                           __gettimeofday64);
+# else
+# define gettimeofday __gettimeofday64
+# endif
+#endif
+
 #ifdef __USE_MISC
 /* Set the current time of day and timezone information.
    This call is restricted to the super-user.
@@ -76,12 +86,33 @@ extern int settimeofday (const struct timeval *__tv,
 			 const struct timezone *__tz)
      __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (settimeofday, (const struct timeval *__tv,
+                                          const struct timezone *__tz),
+                           __settimeofday64);
+# else
+# define settimeofday __settimeofday64
+# endif
+#endif
+
 /* Adjust the current time of day by the amount in DELTA.
    If OLDDELTA is not NULL, it is filled in with the amount
    of time adjustment remaining to be done from the last `adjtime' call.
    This call is restricted to the super-user.  */
 extern int adjtime (const struct timeval *__delta,
 		    struct timeval *__olddelta) __THROW;
+
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (adjtime, (const struct timeval *__delta,
+                                     struct timeval *__olddelta),
+                           __adjtime64);
+# else
+# define adjtime __adjtime64
+# endif
+#endif
+
 #endif
 
 
@@ -123,6 +154,16 @@ typedef int __itimer_which_t;
 extern int getitimer (__itimer_which_t __which,
 		      struct itimerval *__value) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (getitimer, (__itimer_which_t __which,
+                                       struct itimerval *__value),
+                           __getitimer64);
+# else
+# define getitimer __getitimer64
+# endif
+#endif
+
 /* Set the timer WHICH to *NEW.  If OLD is not NULL,
    set *OLD to the old value of timer WHICH.
    Returns 0 on success, -1 on errors.  */
@@ -130,19 +171,59 @@ extern int setitimer (__itimer_which_t __which,
 		      const struct itimerval *__restrict __new,
 		      struct itimerval *__restrict __old) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (setitimer, (__itimer_which_t __which,
+                                       const struct itimerval *__restrict __new,
+                                       struct itimerval *__restrict __old),
+                           __setitimer64);
+# else
+# define setitimer __setitimer64
+# endif
+#endif
+
 /* Change the access time of FILE to TVP[0] and the modification time of
    FILE to TVP[1].  If TVP is a null pointer, use the current time instead.
    Returns 0 on success, -1 on errors.  */
 extern int utimes (const char *__file, const struct timeval __tvp[2])
      __THROW __nonnull ((1));
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (utimes, (const char *__file,
+                                    const struct timeval __tvp[2]),
+                           __utimes64);
+# else
+# define utimes __utimes64
+# endif
+#endif
+
 #ifdef __USE_MISC
 /* Same as `utimes', but does not follow symbolic links.  */
 extern int lutimes (const char *__file, const struct timeval __tvp[2])
      __THROW __nonnull ((1));
 
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (lutimes, (const char *__file,
+                                     const struct timeval __tvp[2]),
+                           __lutimes64);
+#  else
+#   define lutimes __lutimes64
+#  endif
+# endif
+
 /* Same as `utimes', but takes an open file descriptor instead of a name.  */
 extern int futimes (int __fd, const struct timeval __tvp[2]) __THROW;
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (futimes, (int __fd, const struct timeval __tvp[2]),
+                           __futimes64);
+#  else
+#   define futimes __futimes64
+#  endif
+# endif
 #endif
 
 #ifdef __USE_GNU
@@ -151,6 +232,16 @@ extern int futimes (int __fd, const struct timeval __tvp[2]) __THROW;
    the current time instead.  Returns 0 on success, -1 on errors.  */
 extern int futimesat (int __fd, const char *__file,
 		      const struct timeval __tvp[2]) __THROW;
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (futimesat, (int __fd, const char *__file,
+                                       const struct timeval __tvp[2]),
+                           __futimesat64);
+#  else
+#   define futimesat __futimesat64
+#  endif
+# endif
 #endif
 
 
diff --git a/time/time.h b/time/time.h
index 3bf206be0b..ac11ce7db4 100644
--- a/time/time.h
+++ b/time/time.h
@@ -74,13 +74,37 @@ extern clock_t clock (void) __THROW;
 /* Return the current time and put it in *TIMER if TIMER is not NULL.  */
 extern time_t time (time_t *__timer) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern time_t __REDIRECT_NTH (time, (time_t *__timer), __time64);
+# else
+#  define time __time64
+# endif
+#endif
+
 /* Return the difference between TIME1 and TIME0.  */
 extern double difftime (time_t __time1, time_t __time0)
      __THROW __attribute__ ((__const__));
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern double __REDIRECT_NTH (difftime, (time_t __time1, time_t __time0),
+                              __difftime64);
+# else
+#  define difftime __difftime64
+# endif
+#endif
+
 /* Return the `time_t' representation of TP and normalize TP.  */
 extern time_t mktime (struct tm *__tp) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern time_t __REDIRECT_NTH (mktime, (struct tm *__tp), __mktime64);
+# else
+#  define mktime __mktime64
+# endif
+#endif
 
 /* Format TP into S according to FORMAT.
    Write no more than MAXSIZE characters and return the number
@@ -118,6 +142,14 @@ extern char *strptime_l (const char *__restrict __s,
    in Universal Coordinated Time (aka Greenwich Mean Time).  */
 extern struct tm *gmtime (const time_t *__timer) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern struct tm*__REDIRECT_NTH (gmtime, (const time_t *__timer), __gmtime64);
+# else
+#  define gmtime __gmtime64
+# endif
+#endif
+
 /* Return the `struct tm' representation
    of *TIMER in the local timezone.  */
 extern struct tm *localtime (const time_t *__timer) __THROW;
@@ -128,6 +160,16 @@ extern struct tm *localtime (const time_t *__timer) __THROW;
 extern struct tm *gmtime_r (const time_t *__restrict __timer,
 			    struct tm *__restrict __tp) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern struct tm*__REDIRECT_NTH (gmtime_r, (const time_t *__restrict __timer,
+                                            struct tm *__restrict __tp),
+                                 __gmtime64_r);
+# else
+#  define gmtime_r __gmtime64_r
+# endif
+#endif
+
 /* Return the `struct tm' representation of *TIMER in local time,
    using *TP to store the result.  */
 extern struct tm *localtime_r (const time_t *__restrict __timer,
@@ -141,6 +183,14 @@ extern char *asctime (const struct tm *__tp) __THROW;
 /* Equivalent to `asctime (localtime (timer))'.  */
 extern char *ctime (const time_t *__timer) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern char *__REDIRECT_NTH (ctime, (const time_t *__timer), __ctime64);
+# else
+#  define ctime __ctime64
+# endif
+#endif
+
 #if defined __USE_POSIX || __GLIBC_USE (ISOC2X)
 /* Reentrant versions of the above functions.  */
 
@@ -152,6 +202,16 @@ extern char *asctime_r (const struct tm *__restrict __tp,
 /* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'.  */
 extern char *ctime_r (const time_t *__restrict __timer,
 		      char *__restrict __buf) __THROW;
+
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern char *__REDIRECT_NTH (ctime_r, (const time_t *__restrict __timer,
+                                       char *__restrict __buf), __ctime64_r);
+# else
+#  define ctime_r __ctime64_r
+# endif
+#endif
+
 #endif	/* POSIX || C2X */
 
 
@@ -189,6 +249,14 @@ extern long int timezone;
 /* Like `mktime', but for TP represents Universal Time, not local time.  */
 extern time_t timegm (struct tm *__tp) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern time_t __REDIRECT_NTH (timegm, (struct tm *__tp), __timegm64);
+# else
+#  define timegm __timegm64
+# endif
+#endif
+
 /* Another name for `mktime'.  */
 extern time_t timelocal (struct tm *__tp) __THROW;
 
@@ -205,17 +273,54 @@ extern int dysize (int __year) __THROW  __attribute__ ((__const__));
 extern int nanosleep (const struct timespec *__requested_time,
 		      struct timespec *__remaining);
 
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT)
+extern int __REDIRECT (nanosleep, (const struct timespec *__requested_time,
+                                   struct timespec *__remaining),
+                       __nanosleep64);
+#  else
+#   define nanosleep __nanosleep64
+#  endif
+# endif
 
 /* Get resolution of clock CLOCK_ID.  */
 extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (clock_getres, (clockid_t __clock_id,
+                                          struct timespec *__res),
+                           __clock_getres64);
+# else
+#  define clock_getres __clock_getres64
+# endif
+#endif
+
 /* Get current value of clock CLOCK_ID and store it in TP.  */
 extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (clock_gettime, (clockid_t __clock_id, struct
+                                           timespec *__tp), __clock_gettime64);
+# else
+#  define clock_gettime __clock_gettime64
+# endif
+#endif
+
 /* Set clock CLOCK_ID to value TP.  */
 extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp)
      __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (clock_settime, (clockid_t __clock_id, const struct
+                                           timespec *__tp), __clock_settime64);
+# else
+#  define clock_settime __clock_settime64
+# endif
+#endif
+
 # ifdef __USE_XOPEN2K
 /* High-resolution sleep with the specified clock.
 
@@ -225,6 +330,17 @@ extern int clock_nanosleep (clockid_t __clock_id, int __flags,
 			    const struct timespec *__req,
 			    struct timespec *__rem);
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT)
+extern int __REDIRECT (clock_nanosleep, (clockid_t __clock_id, int __flags,
+                                         const struct timespec *__req,
+                                         struct timespec *__rem),
+                       __clock_nanosleep_time64);
+# else
+#  define clock_nanosleep __clock_nanosleep_time64
+# endif
+#endif
+
 /* Return clock ID for CPU-time clock.  */
 extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __THROW;
 # endif
@@ -243,10 +359,31 @@ extern int timer_settime (timer_t __timerid, int __flags,
 			  const struct itimerspec *__restrict __value,
 			  struct itimerspec *__restrict __ovalue) __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timer_settime, (timer_t __timerid, int __flags,
+     const struct itimerspec *__restrict __value,
+     struct itimerspec *__restrict __ovalue),
+                          __timer_settime64);
+# else
+#  define timer_settime __timer_settime64
+# endif
+#endif
+
 /* Get current value of timer TIMERID and store it in VALUE.  */
 extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
      __THROW;
 
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timer_gettime, (timer_t __timerid,
+                                           struct itimerspec *__value),
+                           __timer_gettime64) __nonnull ((1));
+# else
+#  define timer_gettime __timer_gettime64
+# endif
+#endif
+
 /* Get expiration overrun for timer TIMERID.  */
 extern int timer_getoverrun (timer_t __timerid) __THROW;
 #endif
@@ -256,6 +393,15 @@ extern int timer_getoverrun (timer_t __timerid) __THROW;
 /* Set TS to calendar time based in time base BASE.  */
 extern int timespec_get (struct timespec *__ts, int __base)
      __THROW __nonnull ((1));
+
+# ifdef __USE_TIME_BITS64
+#  if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timespec_get, (struct timespec *__ts, int __base),
+                           __timespec_get64);
+#  else
+#   define timespec_get __timespec_get64
+#  endif
+# endif
 #endif


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2021-06-08 20:49 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-08 20:49 [glibc/azanella/y2038] y2038: Add support for 64 bit time on legacy ABIs Adhemerval Zanella
  -- strict thread matches above, loose matches on Subject: below --
2021-05-26 16:25 Adhemerval Zanella
2021-03-05 19:21 Adhemerval Zanella
2021-03-04 17:39 Adhemerval Zanella
2021-03-04 11:32 Adhemerval Zanella
2021-03-02 12:34 Adhemerval Zanella
2021-03-01 17:38 Adhemerval Zanella
2021-02-26 20:43 Adhemerval Zanella
2021-02-23 20:41 Adhemerval Zanella
2021-02-23 12:39 Adhemerval Zanella

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).