[v2,19/25] y2038: Add support for 64 bit time on legacy ABIs

Message ID 20210518205613.1487824-20-adhemerval.zanella@linaro.org
State Superseded
Headers
Series Add 64 bit time support on legacy ABIs |

Checks

Context Check Description
dj/TryBot-apply_patch success Patch applied to master at the time it was sent

Commit Message

Adhemerval Zanella May 18, 2021, 8:56 p.m. UTC
  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_time;
    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
---
 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/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/Makefile         |   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 +
 .../sysv/linux/m68k/coldfire/libanl.abilist   |   1 +
 .../sysv/linux/m68k/coldfire/libc.abilist     |  67 +++++++++
 .../sysv/linux/m68k/coldfire/librt.abilist    |   5 +
 .../sysv/linux/m68k/m680x0/libanl.abilist     |   1 +
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  67 +++++++++
 .../unix/sysv/linux/m68k/m680x0/librt.abilist |   5 +
 sysdeps/unix/sysv/linux/m68k/time64-compat.h  |   2 +
 .../sysv/linux/microblaze/be/libanl.abilist   |   1 +
 .../sysv/linux/microblaze/be/libc.abilist     |  67 +++++++++
 .../sysv/linux/microblaze/be/librt.abilist    |   5 +
 .../sysv/linux/microblaze/le/libanl.abilist   |   1 +
 .../sysv/linux/microblaze/le/libc.abilist     |  67 +++++++++
 .../sysv/linux/microblaze/le/librt.abilist    |   5 +
 .../sysv/linux/microblaze/time64-compat.h     |   2 +
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  67 +++++++++
 .../sysv/linux/mips/mips32/libanl.abilist     |   1 +
 .../unix/sysv/linux/mips/mips32/librt.abilist |   5 +
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  67 +++++++++
 .../sysv/linux/mips/mips32/time64-compat.h    |   2 +
 .../sysv/linux/mips/mips64/n32/libanl.abilist |   1 +
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  67 +++++++++
 .../sysv/linux/mips/mips64/n32/librt.abilist  |   5 +
 .../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 +
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  67 +++++++++
 .../linux/powerpc/powerpc32/libanl.abilist    |   1 +
 .../linux/powerpc/powerpc32/librt.abilist     |   5 +
 .../powerpc/powerpc32/nofpu/libc.abilist      |  67 +++++++++
 .../linux/powerpc/powerpc32/time64-compat.h   |   2 +
 .../sysv/linux/s390/s390-32/libanl.abilist    |   1 +
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  67 +++++++++
 .../sysv/linux/s390/s390-32/librt.abilist     |   5 +
 .../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 +
 .../sysv/linux/sparc/sparc32/libanl.abilist   |   1 +
 .../sysv/linux/sparc/sparc32/libc.abilist     |  67 +++++++++
 .../sysv/linux/sparc/sparc32/librt.abilist    |   5 +
 .../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, 2386 insertions(+), 60 deletions(-)
 create mode 100644 include/features-time64.h
 create mode 100644 sysdeps/generic/features-time64.h
 create mode 100644 sysdeps/generic/time64-compat.h
 create mode 100644 sysdeps/unix/sysv/linux/arm/time64-compat.h
 create mode 100644 sysdeps/unix/sysv/linux/csky/time64-compat.h
 create mode 100644 sysdeps/unix/sysv/linux/features-time64.h
 create mode 100644 sysdeps/unix/sysv/linux/hppa/time64-compat.h
 create mode 100644 sysdeps/unix/sysv/linux/i386/time64-compat.h
 create mode 100644 sysdeps/unix/sysv/linux/m68k/time64-compat.h
 create mode 100644 sysdeps/unix/sysv/linux/microblaze/time64-compat.h
 create mode 100644 sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h
 create mode 100644 sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h
 create mode 100644 sysdeps/unix/sysv/linux/nios2/time64-compat.h
 create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h
 create mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h
 create mode 100644 sysdeps/unix/sysv/linux/sh/time64-compat.h
 create mode 100644 sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h
  

Comments

Lukasz Majewski May 19, 2021, 9:18 a.m. UTC | #1
On Tue, 18 May 2021 17:56:07 -0300
Adhemerval Zanella <adhemerval.zanella@linaro.org> wrote:

> 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_time;
>     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>


> ---
>  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/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/Makefile         |   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 +
>  .../sysv/linux/m68k/coldfire/libanl.abilist   |   1 +
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  67 +++++++++
>  .../sysv/linux/m68k/coldfire/librt.abilist    |   5 +
>  .../sysv/linux/m68k/m680x0/libanl.abilist     |   1 +
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  67 +++++++++
>  .../unix/sysv/linux/m68k/m680x0/librt.abilist |   5 +
>  sysdeps/unix/sysv/linux/m68k/time64-compat.h  |   2 +
>  .../sysv/linux/microblaze/be/libanl.abilist   |   1 +
>  .../sysv/linux/microblaze/be/libc.abilist     |  67 +++++++++
>  .../sysv/linux/microblaze/be/librt.abilist    |   5 +
>  .../sysv/linux/microblaze/le/libanl.abilist   |   1 +
>  .../sysv/linux/microblaze/le/libc.abilist     |  67 +++++++++
>  .../sysv/linux/microblaze/le/librt.abilist    |   5 +
>  .../sysv/linux/microblaze/time64-compat.h     |   2 +
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  67 +++++++++
>  .../sysv/linux/mips/mips32/libanl.abilist     |   1 +
>  .../unix/sysv/linux/mips/mips32/librt.abilist |   5 +
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  67 +++++++++
>  .../sysv/linux/mips/mips32/time64-compat.h    |   2 +
>  .../sysv/linux/mips/mips64/n32/libanl.abilist |   1 +
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  67 +++++++++
>  .../sysv/linux/mips/mips64/n32/librt.abilist  |   5 +
>  .../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 +
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  67 +++++++++
>  .../linux/powerpc/powerpc32/libanl.abilist    |   1 +
>  .../linux/powerpc/powerpc32/librt.abilist     |   5 +
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  67 +++++++++
>  .../linux/powerpc/powerpc32/time64-compat.h   |   2 +
>  .../sysv/linux/s390/s390-32/libanl.abilist    |   1 +
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  67 +++++++++
>  .../sysv/linux/s390/s390-32/librt.abilist     |   5 +
>  .../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 +
>  .../sysv/linux/sparc/sparc32/libanl.abilist   |   1 +
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  67 +++++++++
>  .../sysv/linux/sparc/sparc32/librt.abilist    |   5 +
>  .../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, 2386 insertions(+), 60
> deletions(-) create mode 100644 include/features-time64.h
>  create mode 100644 sysdeps/generic/features-time64.h
>  create mode 100644 sysdeps/generic/time64-compat.h
>  create mode 100644 sysdeps/unix/sysv/linux/arm/time64-compat.h
>  create mode 100644 sysdeps/unix/sysv/linux/csky/time64-compat.h
>  create mode 100644 sysdeps/unix/sysv/linux/features-time64.h
>  create mode 100644 sysdeps/unix/sysv/linux/hppa/time64-compat.h
>  create mode 100644 sysdeps/unix/sysv/linux/i386/time64-compat.h
>  create mode 100644 sysdeps/unix/sysv/linux/m68k/time64-compat.h
>  create mode 100644 sysdeps/unix/sysv/linux/microblaze/time64-compat.h
>  create mode 100644
> sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h create mode
> 100644 sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h create
> mode 100644 sysdeps/unix/sysv/linux/nios2/time64-compat.h create mode
> 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h
> create mode 100644
> sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h create mode
> 100644 sysdeps/unix/sysv/linux/sh/time64-compat.h create mode 100644
> sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h
> 
> diff --git a/Makefile b/Makefile
> index 50f99ca611..6cc93efc27 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)
>  
> -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
>  
>  #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 54e504a6b5..9a5897700b 100644
> --- a/nptl/pthread_cond_wait.c
> +++ b/nptl/pthread_cond_wait.c
> @@ -644,10 +644,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, @@ -685,9 +683,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/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
> 7c3029a7e5..694033a42b 100644 ---
> a/sysdeps/unix/sysv/linux/arm/be/libc.abilist +++
> b/sysdeps/unix/sysv/linux/arm/be/libc.abilist @@ -189,16 +189,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
> 24f5b202e8..1ead45904f 100644 ---
> a/sysdeps/unix/sysv/linux/arm/le/libc.abilist +++
> b/sysdeps/unix/sysv/linux/arm/le/libc.abilist @@ -186,16 +186,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
> 85851c5fca..e8fce124fd 100644 ---
> a/sysdeps/unix/sysv/linux/csky/libc.abilist +++
> b/sysdeps/unix/sysv/linux/csky/libc.abilist @@ -2266,16 +2266,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
> ede69c7ed5..f196d94139 100644 ---
> a/sysdeps/unix/sysv/linux/hppa/libc.abilist +++
> b/sysdeps/unix/sysv/linux/hppa/libc.abilist @@ -2219,16 +2219,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/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
> c883dc08bc..0687af280c 100644 ---
> a/sysdeps/unix/sysv/linux/i386/libc.abilist +++
> b/sysdeps/unix/sysv/linux/i386/libc.abilist @@ -2401,17 +2401,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
> 8ee9648828..bfd2b7c135 100644 ---
> a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist +++
> b/sysdeps/unix/sysv/linux/m68k/coldfire/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/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
> 1c51cb41ec..2bd9f7ab64 100644 ---
> a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist +++
> b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist @@ -2345,16
> +2345,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
> f8b67cd170..2436c57b2e 100644 ---
> a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist +++
> b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist @@ -2317,16
> +2317,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
> edac4a1bb4..1262d01845 100644 ---
> a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist +++
> b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist @@ -2314,16
> +2314,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
> db900c89ab..2812b458c8 100644 ---
> a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist +++
> b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist @@ -2310,16
> +2310,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
> 4e15f48b6c..782c5470a6 100644 ---
> a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist +++
> b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist @@ -2308,16
> +2308,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
> 616a6076f1..3487d0f4c3 100644 ---
> a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist +++
> b/sysdeps/unix/sysv/linux/mips/mips64/n32/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/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
> 0fc42897aa..056254475b 100644 ---
> a/sysdeps/unix/sysv/linux/nios2/libc.abilist +++
> b/sysdeps/unix/sysv/linux/nios2/libc.abilist @@ -2356,16 +2356,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
> 553ecdabc9..98e1da179b 100644 ---
> a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist +++
> b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist @@
> -2372,16 +2372,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
> 7ec438f7b4..6dc0ecf108 100644 ---
> a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist +++
> b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist @@
> -2405,16 +2405,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
> 2274342208..230031f2be 100644 ---
> a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist +++
> b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist @@ -2370,16
> +2370,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
> 97942ff01a..72073ecc27 100644 ---
> a/sysdeps/unix/sysv/linux/sh/be/libc.abilist +++
> b/sysdeps/unix/sysv/linux/sh/be/libc.abilist @@ -2226,16 +2226,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
> 617b673620..e07c4657f9 100644 ---
> a/sysdeps/unix/sysv/linux/sh/le/libc.abilist +++
> b/sysdeps/unix/sysv/linux/sh/le/libc.abilist @@ -2223,16 +2223,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
> 3c6559bb4f..7467677c1b 100644 ---
> a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist +++
> b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist @@ -2363,16
> +2363,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
>  
>  



Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
  
Florian Weimer May 20, 2021, 6:58 a.m. UTC | #2
* Adhemerval Zanella via Libc-alpha:

> 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

Where does this come from?

Thanks,
Florian
  
Adhemerval Zanella May 20, 2021, 10:37 a.m. UTC | #3
On 20/05/2021 03:58, Florian Weimer wrote:
> * Adhemerval Zanella via Libc-alpha:
> 
>> 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
> 
> Where does this come from?

It is a leftover from development, I will remove it.
  
Carlos O'Donell June 4, 2021, 7:38 p.m. UTC | #4
On 5/18/21 4:56 PM, Adhemerval Zanella wrote:
> 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.

LGTM.

No regressions on x86_64, i686, ppc64le, aarch64, s390x.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Tested-by: Carlos O'Donell <carlos@redhat.com>
 
> 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.

OK.

> 
> 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_time;
>     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

OK.

> 
>   * libanl:
>     - gai_suspend
> ---
>  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/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/Makefile         |   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 +
>  .../sysv/linux/m68k/coldfire/libanl.abilist   |   1 +
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  67 +++++++++
>  .../sysv/linux/m68k/coldfire/librt.abilist    |   5 +
>  .../sysv/linux/m68k/m680x0/libanl.abilist     |   1 +
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  67 +++++++++
>  .../unix/sysv/linux/m68k/m680x0/librt.abilist |   5 +
>  sysdeps/unix/sysv/linux/m68k/time64-compat.h  |   2 +
>  .../sysv/linux/microblaze/be/libanl.abilist   |   1 +
>  .../sysv/linux/microblaze/be/libc.abilist     |  67 +++++++++
>  .../sysv/linux/microblaze/be/librt.abilist    |   5 +
>  .../sysv/linux/microblaze/le/libanl.abilist   |   1 +
>  .../sysv/linux/microblaze/le/libc.abilist     |  67 +++++++++
>  .../sysv/linux/microblaze/le/librt.abilist    |   5 +
>  .../sysv/linux/microblaze/time64-compat.h     |   2 +
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  67 +++++++++
>  .../sysv/linux/mips/mips32/libanl.abilist     |   1 +
>  .../unix/sysv/linux/mips/mips32/librt.abilist |   5 +
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  67 +++++++++
>  .../sysv/linux/mips/mips32/time64-compat.h    |   2 +
>  .../sysv/linux/mips/mips64/n32/libanl.abilist |   1 +
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  67 +++++++++
>  .../sysv/linux/mips/mips64/n32/librt.abilist  |   5 +
>  .../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 +
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  67 +++++++++
>  .../linux/powerpc/powerpc32/libanl.abilist    |   1 +
>  .../linux/powerpc/powerpc32/librt.abilist     |   5 +
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  67 +++++++++
>  .../linux/powerpc/powerpc32/time64-compat.h   |   2 +
>  .../sysv/linux/s390/s390-32/libanl.abilist    |   1 +
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  67 +++++++++
>  .../sysv/linux/s390/s390-32/librt.abilist     |   5 +
>  .../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 +
>  .../sysv/linux/sparc/sparc32/libanl.abilist   |   1 +
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  67 +++++++++
>  .../sysv/linux/sparc/sparc32/librt.abilist    |   5 +
>  .../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, 2386 insertions(+), 60 deletions(-)
>  create mode 100644 include/features-time64.h
>  create mode 100644 sysdeps/generic/features-time64.h
>  create mode 100644 sysdeps/generic/time64-compat.h
>  create mode 100644 sysdeps/unix/sysv/linux/arm/time64-compat.h
>  create mode 100644 sysdeps/unix/sysv/linux/csky/time64-compat.h
>  create mode 100644 sysdeps/unix/sysv/linux/features-time64.h
>  create mode 100644 sysdeps/unix/sysv/linux/hppa/time64-compat.h
>  create mode 100644 sysdeps/unix/sysv/linux/i386/time64-compat.h
>  create mode 100644 sysdeps/unix/sysv/linux/m68k/time64-compat.h
>  create mode 100644 sysdeps/unix/sysv/linux/microblaze/time64-compat.h
>  create mode 100644 sysdeps/unix/sysv/linux/mips/mips32/time64-compat.h
>  create mode 100644 sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h
>  create mode 100644 sysdeps/unix/sysv/linux/nios2/time64-compat.h
>  create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/time64-compat.h
>  create mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h
>  create mode 100644 sysdeps/unix/sysv/linux/sh/time64-compat.h
>  create mode 100644 sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h
> 
> diff --git a/Makefile b/Makefile
> index 50f99ca611..6cc93efc27 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)
>  
> -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.

OK.

> +
>  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
>  
>  #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 54e504a6b5..9a5897700b 100644
> --- a/nptl/pthread_cond_wait.c
> +++ b/nptl/pthread_cond_wait.c
> @@ -644,10 +644,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,
> @@ -685,9 +683,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/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 7c3029a7e5..694033a42b 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -189,16 +189,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 24f5b202e8..1ead45904f 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -186,16 +186,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 85851c5fca..e8fce124fd 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -2266,16 +2266,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 ede69c7ed5..f196d94139 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -2219,16 +2219,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/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 c883dc08bc..0687af280c 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2401,17 +2401,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 8ee9648828..bfd2b7c135 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/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/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 1c51cb41ec..2bd9f7ab64 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2345,16 +2345,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 f8b67cd170..2436c57b2e 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -2317,16 +2317,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 edac4a1bb4..1262d01845 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -2314,16 +2314,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 db900c89ab..2812b458c8 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -2310,16 +2310,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 4e15f48b6c..782c5470a6 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -2308,16 +2308,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 616a6076f1..3487d0f4c3 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/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/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 0fc42897aa..056254475b 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -2356,16 +2356,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 553ecdabc9..98e1da179b 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2372,16 +2372,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 7ec438f7b4..6dc0ecf108 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2405,16 +2405,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 2274342208..230031f2be 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2370,16 +2370,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 97942ff01a..72073ecc27 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -2226,16 +2226,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 617b673620..e07c4657f9 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -2223,16 +2223,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 3c6559bb4f..7467677c1b 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2363,16 +2363,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
>  
>  
>
  

Patch

diff --git a/Makefile b/Makefile
index 50f99ca611..6cc93efc27 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)
 
-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
 
 #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 54e504a6b5..9a5897700b 100644
--- a/nptl/pthread_cond_wait.c
+++ b/nptl/pthread_cond_wait.c
@@ -644,10 +644,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,
@@ -685,9 +683,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/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 7c3029a7e5..694033a42b 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -189,16 +189,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 24f5b202e8..1ead45904f 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -186,16 +186,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 85851c5fca..e8fce124fd 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -2266,16 +2266,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 ede69c7ed5..f196d94139 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2219,16 +2219,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/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 c883dc08bc..0687af280c 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2401,17 +2401,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 8ee9648828..bfd2b7c135 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/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/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 1c51cb41ec..2bd9f7ab64 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2345,16 +2345,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 f8b67cd170..2436c57b2e 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2317,16 +2317,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 edac4a1bb4..1262d01845 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2314,16 +2314,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 db900c89ab..2812b458c8 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2310,16 +2310,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 4e15f48b6c..782c5470a6 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2308,16 +2308,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 616a6076f1..3487d0f4c3 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/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/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 0fc42897aa..056254475b 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2356,16 +2356,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 553ecdabc9..98e1da179b 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2372,16 +2372,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 7ec438f7b4..6dc0ecf108 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2405,16 +2405,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 2274342208..230031f2be 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2370,16 +2370,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 97942ff01a..72073ecc27 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2226,16 +2226,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 617b673620..e07c4657f9 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2223,16 +2223,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 3c6559bb4f..7467677c1b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2363,16 +2363,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