[00/52] Add 64 bit time support on legacy ABIs

Message ID 20210305201518.798584-1-adhemerval.zanella@linaro.org
Headers
Series Add 64 bit time support on legacy ABIs |

Message

Adhemerval Zanella March 5, 2021, 8:14 p.m. UTC
  This patchset add support for 64 bit time on ABIs which only support
32 bit time.  It is done through a new build flags, _TIME_BITS=64,
which is supported only when Long File Support is also used
(_FILE_OFFSET_BITS=64).  The new flag redefine the required structures
and redirected the required symbols to newer exported ones.

However, different then LFS support, the new 64 bit time_t symbols
are only exported for the ABI that require them.  ABIs that provides
64 bit time as the default ABI as unaffected.

On Linux, to fully support 64 bit time_t it requires a minimum of
kernel v5.1 due the newer syscalls.

To make the patch review easier, it is divided in 5 subparts:

  1. Patches from 01/52 to 14/52 are newer tests and infrastructure
     changes that are independent of 64 bit time support.

  2. Patches from 15/52 to 23/52 add the 64 bit time support on
     utmp/utmpx/lastlog and it affects *all* the ABIs with the
     exception of s390.

  3. Patches from 24/52 to 41/52 are the one that adjust the exported
     API, add some specific newer symbols (glob, ftw, and fts) and
     enable the _TIME_BITS on the installed headers.

  4. Patches from 42/52 to 44/52 enables basic test coverage.  Although
     it does not cover all the newer symbol redirection, the idea is to
     use Lukasz patches and newer tests to cover all the symbols for
     2.34 release.

  5. Patches from 45/52 to 52/52 make glibc itself to use the newer
     64 bit symbol internally and on installed programs.

I checked for i686-linux-gnu running on a x86_64 5.4 kernel,
powerpc-linux-gnu running on ppc64 5.10 kernel, and on
arm-linux-gnueabihf running on arm64 4.12.13 kernel.  As expected,
the arm shows some tests failures due the missing kernel support:

FAIL: io/tst-utimensat-time64
FAIL: misc/tst-futimens-time64
FAIL: misc/tst-futimes-time64
FAIL: misc/tst-lutimes-time64
FAIL: misc/tst-utime-time64
FAIL: misc/tst-utimes-time64

Adhemerval Zanella (50):
  io: Use temporary directory and file for ftwtest-sh
  linux: Add futimes test
  linux: Add lutimes test
  time: Add getitimer and setitimer basic tests
  time: Add gmtime/gmtime_r tests
  time: Add timegm/timelocal basic tests
  time: Add basic timespec_get tests
  time: Add 64 bit tests for getdate / getdate_r
  io: Add basic tests for utimensat
  posix: Add wait3 tests
  linux: mips: Split libpthread.abilist in n32 and n64
  linux: mips: Split librt.abilist in n32 and n64
  linux: mips: Split libanl.abilist in n32 and n64
  linux: s390: Add libanl.abilist in s390 and s390x
  login: Consolidate utmp and utmpx headers
  login: Move gnu utmpx to default implementation
  Consolidate and simplify internal utmp definitions
  support: Add 'touch' command
  Add tests-container-internal rules
  login: Add 64-bit time support to utmp/utmpx
  linux: Add pwrite64_nocancel
  login: Use 64-bit time on struct lastlog [BZ #25844]
  Remove __WORDSIZE_TIME64_COMPAT32
  linux: Add fallback for 64-bit time_t SO_{RCV,SND}TIMEO
  linux: Add fallback for 64-bit time_t SO_TIMESTAMP{NS}
  linux: Add recvvmsg fallback for 64-bit time_t SO_TIMESTAMP{NS}
  y2038: Add __USE_TIME_BITS64 support for time_t
  y2038: Add __USE_TIME_BITS64 support for struct timeval
  y2038: Add __USE_TIME_BITS64 support for struct timespec
  y2038: Add __USE_TIME_BITS64 support for struct utimbuf
  y2038: linux: Add __USE_TIME_BITS64 support for struct timex
  y2038: Use a common definition for semid_ds
  y2038: Use a common definition for shmid_ds
  y2038: Add __USE_TIME_BITS64 support for socket-constants.h
  time: Add 64 bit time support for getdate
  y2038: Add support for 64 bit time on legacy ABIs
  posix: Add glob64 with 64 bit time_t support
  io: Add fts64 with 64 bit time_t support
  io: Add ftw64 with 64 bit time_t support
  libsupport: Add 64 bit time_t support for time functions
  libsupport: Add 64 bit time_t support for stat functions
  y2038: Add test coverage
  Use 64 bit time_t stat internally
  debug: build pcprofiledump with LFS and 64 bit time support
  elf: Use LFS and 64 bit time_t for installed programs
  iconv: Use LFS and 64 bit time_t for installed programs
  locale: Use LFS and 64 bit time_t for installed programs
  nss: Use LFS and 64 bit time_t for installed programs
  posix: Use LFS and 64 bit time_t for installed programs
  timezone: Use LFS and 64 bit time_t for installed programs

Lukasz Majewski (2):
  y2038: Use a common definition for stat
  y2038: Use a common definition for msqid_ds

 Makeconfig                                    |  14 +
 Makefile                                      |   4 +-
 Makerules                                     |  21 +-
 NEWS                                          |   5 +
 Rules                                         |  12 +-
 .../updwtmp.c => bits/types/struct_lastlog.h  |  26 +-
 bits/types/struct_utmp.h                      |  53 ++
 bits/types/struct_utmpx.h                     |  54 +++
 bits/utmp.h                                   |  48 +-
 .../sysv/linux/s390/bits => bits}/utmpx.h     |  34 +-
 bits/wordsize.h                               |   6 -
 csu/check_fds.c                               |   8 +-
 debug/Makefile                                |   1 +
 elf/Makefile                                  |  13 +-
 elf/dl-load.c                                 |   8 +-
 elf/dl-misc.c                                 |   4 +-
 elf/dl-profile.c                              |   4 +-
 iconv/Makefile                                |   8 +
 iconv/gconv_cache.c                           |   4 +-
 include/dirent.h                              |   2 +-
 include/features-time64.h                     |   1 +
 include/features.h                            |   2 +
 include/file_change_detection.h               |   6 +-
 include/fts.h                                 |  51 ++
 include/ftw.h                                 |  18 +
 include/glob.h                                |  28 ++
 include/sys/socket.h                          |   5 +
 include/sys/stat.h                            |   2 +-
 include/time.h                                |  12 +-
 include/utmp.h                                |   5 +-
 include/utmpx.h                               |   1 +
 inet/rcmd.c                                   |   6 +-
 intl/loadmsgcat.c                             |   4 +-
 io/Makefile                                   |  28 +-
 io/file_change_detection.c                    |  16 +-
 io/fts.h                                      |  43 +-
 io/fts64-time64.c                             |  35 ++
 io/ftw.c                                      |   5 +-
 io/ftw.h                                      |  46 +-
 .../s390-32/getutent_r.c => io/ftw64-time64.c |  34 +-
 io/ftwtest-sh                                 | 246 +++++-----
 io/ftwtest-time64.c                           |   1 +
 io/getdirname.c                               |   6 +-
 io/sys/poll.h                                 |  11 +
 io/sys/stat.h                                 | 113 ++++-
 io/tst-fts-time64.c                           |   1 +
 io/tst-futimesat-time64.c                     |   4 +
 io/tst-futimesat.c                            |  47 +-
 io/tst-stat-time64.c                          | 102 ++++
 io/tst-utimensat-time64.c                     |   2 +
 io/tst-utimensat.c                            | 115 +++++
 io/utime.h                                    |  16 +
 libio/filedoalloc.c                           |   2 +-
 libio/fileops.c                               |   8 +-
 libio/oldfileops.c                            |   2 +-
 libio/wfileops.c                              |   2 +-
 locale/Makefile                               |   9 +
 locale/loadarchive.c                          |   8 +-
 locale/loadlocale.c                           |   6 +-
 login/Makefile                                |  16 +-
 login/Versions                                |  26 +
 login/getutent.c                              |   7 +-
 login/getutent_r.c                            |  48 +-
 login/getutid.c                               |   7 +-
 login/getutid_r.c                             |  33 +-
 login/getutline.c                             |   7 +-
 login/getutline_r.c                           |  33 +-
 login/getutmp.c                               |  42 +-
 login/getutmpx.c                              |  35 +-
 login/getutxent.c                             |   9 +-
 login/getutxid.c                              |   9 +-
 login/getutxline.c                            |   9 +-
 .../getutent.c => login/lastlog-compat.h      |  29 +-
 login/lastlog_read.c                          |  78 +++
 login/lastlog_write.c                         |  64 +++
 login/login.c                                 |  10 +-
 .../linux/s390/s390-32 => login}/login32.c    |  16 +-
 login/pututxline.c                            |   9 +-
 login/tst-lastlog.c                           |  80 ++++
 login/tst-lastlog.root/tst-lastlog.script     |   6 +
 login/tst-utmp-default.c                      | 292 ++++++++++++
 .../tst-utmp-default.script                   |  10 +
 login/tst-utmp32.c                            | 318 ++++++++++++
 login/tst-utmp32.root/tst-utmp32.script       |   7 +
 login/updwtmp.c                               |  32 +-
 login/updwtmpx.c                              |   9 +-
 .../utmp-convert.h => login/utmp-convert.c    |  59 +--
 .../s390-32/getutmp.c => login/utmp-convert.h |  39 +-
 .../sysv/linux/updwtmp.c => login/utmp-path.h |  42 +-
 login/utmp-private.h                          |  24 +-
 login/utmp.h                                  |  11 +
 login/utmp32.c                                | 247 ++++++++++
 .../linux/s390/s390-32 => login}/utmp32.h     |   9 +
 login/utmp_file.c                             | 451 +++++++++++-------
 login/utmpname.c                              |   8 +
 {sysdeps/gnu => login}/utmpx.h                |   0
 login/utmpx32.c                               | 112 +++++
 .../linux/s390/s390-32 => login}/utmpx32.h    |   6 +-
 manual/creature.texi                          |  44 ++
 manual/users.texi                             |   4 +-
 misc/Makefile                                 |   2 +
 misc/sys/select.h                             |  27 ++
 misc/tst-pselect-time64.c                     |   1 +
 nptl/Makefile                                 |   3 +
 nptl/tst-cancel4_2-time64.c                   |   1 +
 nscd/nscd_helper.c                            |   4 +-
 nss/Makefile                                  |  11 +-
 nss/nss_database.c                            |   4 +-
 posix/Makefile                                |  10 +-
 posix/glob.c                                  |  46 +-
 posix/glob.h                                  |  22 +
 posix/glob64-lstat-compat.c                   |   3 +-
 posix/glob64-time64.c                         |  49 ++
 .../getutid.c => posix/globfree64-time64.c    |  22 +-
 posix/sched.h                                 |  11 +-
 posix/sys/wait.h                              |  20 +
 posix/tst-gnuglob64-time64.c                  |   7 +
 posix/tst-sched_rr_get_interval-time64.c      |   1 +
 posix/tst-wait-skeleton.c                     | 209 ++++++++
 posix/tst-wait3-time64.c                      |   1 +
 .../s390-32/updwtmpx.c => posix/tst-wait3.c   |  18 +-
 posix/tst-wait4-time64.c                      |   1 +
 posix/tst-wait4.c                             | 193 +-------
 resolv/netdb.h                                |  11 +
 resource/sys/resource.h                       |  10 +
 rt/Makefile                                   |   9 +
 rt/aio.h                                      |  15 +-
 rt/mqueue.h                                   |  22 +
 rt/tst-aio6-time64.c                          |   1 +
 rt/tst-cpuclock2-time64.c                     |   1 +
 rt/tst-cpuclock2.c                            |   9 +-
 rt/tst-mqueue1-time64.c                       |   1 +
 rt/tst-mqueue2-time64.c                       |   1 +
 rt/tst-mqueue4-time64.c                       |   1 +
 rt/tst-mqueue8-time64.c                       |   1 +
 rt/tst-timer4-time64.c                        |   1 +
 signal/signal.h                               |  13 +
 socket/sys/socket.h                           |  11 +
 support/Makefile                              |   8 +
 support/support-xfstat-time64.c               |  32 ++
 .../support-xstat-time64.c                    |  28 +-
 support/test-container.c                      |  11 +
 support/timespec-add-time64.c                 |  27 ++
 support/timespec-add.c                        |   2 +-
 support/timespec-sub-time64.c                 |  27 ++
 support/timespec-sub.c                        |   2 +-
 support/timespec-time64.c                     |  40 ++
 support/timespec.c                            |   9 +-
 support/timespec.h                            |  52 +-
 .../xclock_gettime_time64.c                   |  22 +-
 support/xlstat-time64.c                       |  32 ++
 support/xtime.h                               |   5 +
 support/xunistd.h                             |  13 +
 sysdeps/aarch64/bits/wordsize.h               |   2 -
 .../getutxent.c => generic/features-time64.h} |  17 +-
 sysdeps/generic/paths.h                       |  12 +-
 sysdeps/generic/time64-compat.h               |   3 +
 sysdeps/generic/utmp-compat.h                 |   3 +
 sysdeps/generic/utmp-equal.h                  |  42 --
 sysdeps/gnu/getutmpx.c                        |   1 -
 sysdeps/gnu/glob64-lstat-compat.c             |   3 +-
 sysdeps/gnu/utmp_file.c                       |  31 --
 sysdeps/mach/hurd/i386/libc.abilist           |  17 +
 sysdeps/mach/hurd/i386/libutil.abilist        |   1 +
 sysdeps/mips/bits/wordsize.h                  |   6 -
 sysdeps/nptl/pthread.h                        | 119 +++++
 sysdeps/posix/dl-fileid.h                     |   4 +-
 sysdeps/posix/euidaccess.c                    |   4 +-
 sysdeps/posix/getaddrinfo.c                   |  21 +-
 sysdeps/posix/getcwd.c                        |  15 +-
 sysdeps/posix/pathconf.c                      |   4 +-
 sysdeps/posix/sysconf.c                       |   4 +-
 sysdeps/posix/tempname.c                      |   8 +-
 sysdeps/powerpc/powerpc32/bits/wordsize.h     |   2 -
 sysdeps/powerpc/powerpc64/bits/wordsize.h     |   2 -
 sysdeps/pthread/Makefile                      |  10 +
 sysdeps/pthread/semaphore.h                   |  25 +
 sysdeps/pthread/threads.h                     |  33 ++
 sysdeps/pthread/tst-abstime-time64.c          |   1 +
 sysdeps/pthread/tst-cnd-timedwait-time64.c    |   1 +
 sysdeps/pthread/tst-cond11-time64.c           |   1 +
 sysdeps/pthread/tst-join14-time64.c           |   1 +
 sysdeps/pthread/tst-mtx-timedlock-time64.c    |   1 +
 sysdeps/pthread/tst-rwlock14-time64.c         |   1 +
 sysdeps/pthread/tst-sem5-time64.c             |   1 +
 sysdeps/pthread/tst-thrd-sleep-time64.c       |   1 +
 sysdeps/riscv/bits/wordsize.h                 |   2 -
 sysdeps/s390/s390-32/bits/wordsize.h          |   2 -
 sysdeps/s390/s390-64/bits/wordsize.h          |   2 -
 sysdeps/sparc/sparc32/bits/wordsize.h         |   2 -
 sysdeps/sparc/sparc64/bits/wordsize.h         |   2 -
 sysdeps/unix/sysv/linux/Makefile              |  22 +-
 sysdeps/unix/sysv/linux/Versions              | 125 +++++
 sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  17 +
 .../unix/sysv/linux/aarch64/libutil.abilist   |   1 +
 sysdeps/unix/sysv/linux/alpha/bits/wordsize.h |   1 -
 sysdeps/unix/sysv/linux/alpha/libc.abilist    |  17 +
 sysdeps/unix/sysv/linux/alpha/libutil.abilist |   1 +
 sysdeps/unix/sysv/linux/arc/libc.abilist      |  17 +
 sysdeps/unix/sysv/linux/arc/libutil.abilist   |   1 +
 sysdeps/unix/sysv/linux/arm/be/libanl.abilist |   1 +
 sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  78 +++
 .../unix/sysv/linux/arm/be/libpthread.abilist |  14 +
 sysdeps/unix/sysv/linux/arm/be/librt.abilist  |   5 +
 .../unix/sysv/linux/arm/be/libutil.abilist    |   1 +
 sysdeps/unix/sysv/linux/arm/le/libanl.abilist |   1 +
 sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  78 +++
 .../unix/sysv/linux/arm/le/libpthread.abilist |  14 +
 sysdeps/unix/sysv/linux/arm/le/librt.abilist  |   5 +
 .../unix/sysv/linux/arm/le/libutil.abilist    |   1 +
 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 +
 .../unix/sysv/linux/bits/socket-constants.h   |  47 +-
 sysdeps/unix/sysv/linux/bits/struct_stat.h    |  51 +-
 .../linux/bits/struct_stat_time64_helper.h    |  63 +++
 sysdeps/unix/sysv/linux/bits/time.h           |  10 +
 sysdeps/unix/sysv/linux/bits/timex.h          |  31 ++
 .../sysv/linux/bits/types/struct_msqid64_ds.h |  10 +-
 .../bits/types/struct_msqid64_ds_helper.h     |  28 ++
 .../sysv/linux/bits/types/struct_msqid_ds.h   |  12 +-
 .../sysv/linux/bits/types/struct_semid64_ds.h |   5 +-
 .../types/struct_semid64_ds_helper.h}         |  23 +-
 .../sysv/linux/bits/types/struct_semid_ds.h   |  10 +-
 .../sysv/linux/bits/types/struct_shmid64_ds.h |   9 +-
 .../bits/types/struct_shmid64_ds_helper.h}    |  25 +-
 .../sysv/linux/bits/types/struct_shmid_ds.h   |  10 +-
 .../unix/sysv/linux/convert_scm_timestamps.c  |  96 ++++
 sysdeps/unix/sysv/linux/csky/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/csky/libc.abilist     |  78 +++
 .../unix/sysv/linux/csky/libpthread.abilist   |  14 +
 sysdeps/unix/sysv/linux/csky/librt.abilist    |   5 +
 sysdeps/unix/sysv/linux/csky/libutil.abilist  |   1 +
 sysdeps/unix/sysv/linux/csky/time64-compat.h  |   2 +
 sysdeps/unix/sysv/linux/fdopendir.c           |   4 +-
 sysdeps/unix/sysv/linux/features-time64.h     |  37 ++
 sysdeps/unix/sysv/linux/fexecve.c             |   4 +-
 sysdeps/unix/sysv/linux/getsockopt.c          |  79 ++-
 sysdeps/unix/sysv/linux/glob-lstat-compat.c   |   6 +-
 sysdeps/unix/sysv/linux/glob.c                |   6 +
 sysdeps/unix/sysv/linux/glob64-lstat-compat.c |  12 +-
 sysdeps/unix/sysv/linux/glob64-time64.c       |  44 ++
 sysdeps/unix/sysv/linux/glob64.c              |   8 +-
 .../getutid_r.c => globfree64-time64.c}       |  30 +-
 .../sysv/linux/hppa/bits/socket-constants.h   |  36 +-
 .../linux/hppa/bits/types/struct_msqid_ds.h   |  12 +-
 .../linux/hppa/bits/types/struct_semid_ds.h   |   4 +
 .../linux/hppa/bits/types/struct_shmid_ds.h   |  10 +-
 sysdeps/unix/sysv/linux/hppa/libanl.abilist   |   1 +
 sysdeps/unix/sysv/linux/hppa/libc.abilist     |  78 +++
 .../unix/sysv/linux/hppa/libpthread.abilist   |  14 +
 sysdeps/unix/sysv/linux/hppa/librt.abilist    |   5 +
 sysdeps/unix/sysv/linux/hppa/libutil.abilist  |   1 +
 .../sysv/linux/hppa/socket-constants-time64.h |  35 ++
 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     |  78 +++
 .../unix/sysv/linux/i386/libpthread.abilist   |  14 +
 sysdeps/unix/sysv/linux/i386/librt.abilist    |   5 +
 sysdeps/unix/sysv/linux/i386/libutil.abilist  |   1 +
 sysdeps/unix/sysv/linux/i386/time64-compat.h  |   2 +
 sysdeps/unix/sysv/linux/ia64/libc.abilist     |  17 +
 sysdeps/unix/sysv/linux/ia64/libutil.abilist  |   1 +
 sysdeps/unix/sysv/linux/include/sys/msg.h     |   2 -
 sysdeps/unix/sysv/linux/include/sys/shm.h     |   2 -
 sysdeps/unix/sysv/linux/include/sys/timex.h   |   2 +
 .../unix/sysv/linux/m68k/bits/struct_stat.h   |  50 +-
 .../sysv/linux/m68k/coldfire/libanl.abilist   |   1 +
 .../sysv/linux/m68k/coldfire/libc.abilist     |  78 +++
 .../linux/m68k/coldfire/libpthread.abilist    |  14 +
 .../sysv/linux/m68k/coldfire/librt.abilist    |   5 +
 .../sysv/linux/m68k/coldfire/libutil.abilist  |   1 +
 .../sysv/linux/m68k/m680x0/libanl.abilist     |   1 +
 .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  78 +++
 .../sysv/linux/m68k/m680x0/libpthread.abilist |  14 +
 .../unix/sysv/linux/m68k/m680x0/librt.abilist |   5 +
 .../sysv/linux/m68k/m680x0/libutil.abilist    |   1 +
 sysdeps/unix/sysv/linux/m68k/time64-compat.h  |   2 +
 .../sysv/linux/microblaze/be/libanl.abilist   |   1 +
 .../sysv/linux/microblaze/be/libc.abilist     |  78 +++
 .../linux/microblaze/be/libpthread.abilist    |  14 +
 .../sysv/linux/microblaze/be/librt.abilist    |   5 +
 .../sysv/linux/microblaze/be/libutil.abilist  |   1 +
 .../sysv/linux/microblaze/bits/struct_stat.h  |  48 +-
 .../sysv/linux/microblaze/le/libanl.abilist   |   1 +
 .../sysv/linux/microblaze/le/libc.abilist     |  78 +++
 .../linux/microblaze/le/libpthread.abilist    |  14 +
 .../sysv/linux/microblaze/le/librt.abilist    |   5 +
 .../sysv/linux/microblaze/le/libutil.abilist  |   1 +
 .../sysv/linux/microblaze/time64-compat.h     |   2 +
 .../sysv/linux/mips/bits/socket-constants.h   |  36 +-
 .../unix/sysv/linux/mips/bits/struct_stat.h   |  89 ++--
 .../linux/mips/bits/types/struct_msqid_ds.h   |  18 +-
 .../linux/mips/bits/types/struct_semid_ds.h   |   4 +
 .../linux/mips/bits/types/struct_shmid_ds.h   |  14 +-
 .../sysv/linux/mips/mips32/fpu/libc.abilist   |  78 +++
 .../sysv/linux/mips/mips32/libanl.abilist     |   1 +
 .../sysv/linux/mips/mips32/libpthread.abilist |  14 +
 .../unix/sysv/linux/mips/mips32/librt.abilist |   5 +
 .../sysv/linux/mips/mips32/libutil.abilist    |   1 +
 .../sysv/linux/mips/mips32/nofpu/libc.abilist |  78 +++
 .../sysv/linux/mips/mips32/time64-compat.h    |   2 +
 .../sysv/linux/mips/mips64/libutil.abilist    |   1 +
 .../sysv/linux/mips/mips64/n32/libanl.abilist |   5 +
 .../sysv/linux/mips/mips64/n32/libc.abilist   |  78 +++
 .../linux/mips/mips64/n32/libpthread.abilist  | 252 ++++++++++
 .../sysv/linux/mips/mips64/n32/librt.abilist  |  42 ++
 .../linux/mips/mips64/n32/time64-compat.h     |   2 +
 .../mips/mips64/{ => n64}/libanl.abilist      |   0
 .../sysv/linux/mips/mips64/n64/libc.abilist   |  17 +
 .../mips/mips64/{ => n64}/libpthread.abilist  |   0
 .../linux/mips/mips64/{ => n64}/librt.abilist |   0
 .../sysv/linux/mips/socket-constants-time64.h |  35 ++
 sysdeps/unix/sysv/linux/nios2/libanl.abilist  |   1 +
 sysdeps/unix/sysv/linux/nios2/libc.abilist    |  78 +++
 .../unix/sysv/linux/nios2/libpthread.abilist  |  14 +
 sysdeps/unix/sysv/linux/nios2/librt.abilist   |   5 +
 sysdeps/unix/sysv/linux/nios2/libutil.abilist |   1 +
 sysdeps/unix/sysv/linux/nios2/time64-compat.h |   2 +
 sysdeps/unix/sysv/linux/not-cancel.h          |   4 +
 sysdeps/unix/sysv/linux/oldglob.c             |  11 +-
 sysdeps/unix/sysv/linux/opendir.c             |   7 +-
 sysdeps/unix/sysv/linux/pathconf.c            |   5 +-
 sysdeps/unix/sysv/linux/paths.h               |  10 +-
 .../linux/powerpc/bits/socket-constants.h     |  36 +-
 .../sysv/linux/powerpc/bits/struct_stat.h     |  52 +-
 .../powerpc/bits/types/struct_msqid_ds.h      |  12 +-
 .../powerpc/bits/types/struct_semid_ds.h      |  10 +-
 .../powerpc/bits/types/struct_shmid_ds.h      |  10 +-
 .../unix/sysv/linux/powerpc/bits/wordsize.h   |   2 -
 .../linux/powerpc/powerpc32/fpu/libc.abilist  |  78 +++
 .../linux/powerpc/powerpc32/libanl.abilist    |   1 +
 .../powerpc/powerpc32/libpthread.abilist      |  14 +
 .../linux/powerpc/powerpc32/librt.abilist     |   5 +
 .../linux/powerpc/powerpc32/libutil.abilist   |   1 +
 .../powerpc/powerpc32/nofpu/libc.abilist      |  78 +++
 .../linux/powerpc/powerpc32/time64-compat.h   |   2 +
 .../linux/powerpc/powerpc64/be/libc.abilist   |  17 +
 .../powerpc/powerpc64/be/libutil.abilist      |   1 +
 .../linux/powerpc/powerpc64/le/libc.abilist   |  17 +
 .../powerpc/powerpc64/le/libutil.abilist      |   1 +
 .../linux/powerpc/socket-constants-time64.h   |  35 ++
 .../s390-32/login.c => pwrite64_nocancel.c}   |  30 +-
 sysdeps/unix/sysv/linux/recvmmsg.c            |  17 +-
 sysdeps/unix/sysv/linux/recvmsg.c             |  23 +-
 .../unix/sysv/linux/riscv/rv32/libc.abilist   |  17 +
 .../sysv/linux/riscv/rv32/libutil.abilist     |   1 +
 .../unix/sysv/linux/riscv/rv64/libc.abilist   |  17 +
 .../sysv/linux/riscv/rv64/libutil.abilist     |   1 +
 .../unix/sysv/linux/s390/bits/struct_utmp.h   |  51 ++
 .../sysv/linux/s390/bits/struct_utmpx.h}      |  65 +--
 sysdeps/unix/sysv/linux/s390/bits/utmp.h      | 127 -----
 .../sysv/linux/s390/lastlog-compat.h}         |  34 +-
 .../unix/sysv/linux/s390/s390-32/getutxline.c |  30 --
 .../sysv/linux/s390/s390-32/libanl.abilist    |   5 +
 .../unix/sysv/linux/s390/s390-32/libc.abilist |  63 +++
 .../linux/s390/s390-32/libpthread.abilist     |  14 +
 .../sysv/linux/s390/s390-32/librt.abilist     |   5 +
 .../unix/sysv/linux/s390/s390-32/pututxline.c |  30 --
 .../sysv/linux/s390/s390-32/time64-compat.h   |   2 +
 .../sysv/linux/s390/s390-32/utmp-compat.h     |   2 +-
 sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c | 184 -------
 .../sysv/linux/s390/s390-32/utmpx-convert.h   |  85 ----
 .../unix/sysv/linux/s390/s390-32/utmpx32.c    | 139 ------
 .../linux/s390/{ => s390-64}/libanl.abilist   |   0
 .../unix/sysv/linux/s390/s390-64/libc.abilist |   2 +
 .../sysv/linux/s390/s390-64/utmp-compat.h     |   3 +
 sysdeps/unix/sysv/linux/semctl.c              |   1 -
 sysdeps/unix/sysv/linux/setsockopt.c          |  83 +++-
 sysdeps/unix/sysv/linux/sh/be/libanl.abilist  |   1 +
 sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  78 +++
 .../unix/sysv/linux/sh/be/libpthread.abilist  |  14 +
 sysdeps/unix/sysv/linux/sh/be/librt.abilist   |   5 +
 sysdeps/unix/sysv/linux/sh/be/libutil.abilist |   1 +
 sysdeps/unix/sysv/linux/sh/le/libanl.abilist  |   1 +
 sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  78 +++
 .../unix/sysv/linux/sh/le/libpthread.abilist  |  14 +
 sysdeps/unix/sysv/linux/sh/le/librt.abilist   |   5 +
 sysdeps/unix/sysv/linux/sh/le/libutil.abilist |   1 +
 sysdeps/unix/sysv/linux/sh/time64-compat.h    |   2 +
 .../unix/sysv/linux/socket-constants-time64.h |  35 ++
 .../sysv/linux/sparc/bits/socket-constants.h  |  36 +-
 .../linux/sparc/bits/types/struct_msqid_ds.h  |  12 +-
 .../linux/sparc/bits/types/struct_semid_ds.h  |  10 +-
 .../linux/sparc/bits/types/struct_shmid_ds.h  |  10 +-
 sysdeps/unix/sysv/linux/sparc/bits/wordsize.h |   2 -
 .../linux/sparc/socket-constants-time64.h     |  35 ++
 .../sysv/linux/sparc/sparc32/libanl.abilist   |   1 +
 .../sysv/linux/sparc/sparc32/libc.abilist     |  78 +++
 .../linux/sparc/sparc32/libpthread.abilist    |  14 +
 .../sysv/linux/sparc/sparc32/librt.abilist    |   5 +
 .../sysv/linux/sparc/sparc32/libutil.abilist  |   1 +
 .../sysv/linux/sparc/sparc32/time64-compat.h  |   2 +
 .../sysv/linux/sparc/sparc64/libc.abilist     |  17 +
 .../sysv/linux/sparc/sparc64/libutil.abilist  |   1 +
 sysdeps/unix/sysv/linux/struct_stat_time64.h  |  59 +--
 sysdeps/unix/sysv/linux/sys/timerfd.h         |  22 +
 sysdeps/unix/sysv/linux/sys/timex.h           |  28 +-
 sysdeps/unix/sysv/linux/tst-futimens-time64.c |   2 +
 sysdeps/unix/sysv/linux/tst-futimens.c        |   8 +-
 sysdeps/unix/sysv/linux/tst-futimes-time64.c  |   2 +
 sysdeps/unix/sysv/linux/tst-futimes.c         |  85 ++++
 sysdeps/unix/sysv/linux/tst-lutimes-time64.c  |   2 +
 sysdeps/unix/sysv/linux/tst-lutimes.c         |  95 ++++
 sysdeps/unix/sysv/linux/tst-ppoll-time64.c    |   1 +
 sysdeps/unix/sysv/linux/tst-timerfd-time64.c  |   1 +
 sysdeps/unix/sysv/linux/tst-utime-time64.c    |   2 +
 sysdeps/unix/sysv/linux/tst-utime.c           |   6 +-
 sysdeps/unix/sysv/linux/tst-utimes-time64.c   |   2 +
 sysdeps/unix/sysv/linux/tst-utimes.c          |   6 +-
 sysdeps/unix/sysv/linux/ttyname.c             |  17 +-
 sysdeps/unix/sysv/linux/ttyname.h             |  10 +-
 sysdeps/unix/sysv/linux/ttyname_r.c           |  16 +-
 sysdeps/unix/sysv/linux/utmp-path.h           |  54 +++
 sysdeps/unix/sysv/linux/utmp_file.c           |  37 --
 .../unix/sysv/linux/x86/bits/struct_stat.h    |  90 ++--
 .../linux/x86/bits/types/struct_semid_ds.h    |   4 +
 .../unix/sysv/linux/x86_64/64/libc.abilist    |  17 +
 .../unix/sysv/linux/x86_64/64/libutil.abilist |   1 +
 .../unix/sysv/linux/x86_64/x32/libc.abilist   |  17 +
 .../sysv/linux/x86_64/x32/libutil.abilist     |   1 +
 sysdeps/wordsize-32/bits/wordsize.h           |   1 -
 sysdeps/wordsize-64/bits/wordsize.h           |   1 -
 sysdeps/x86/bits/wordsize.h                   |   3 -
 sysvipc/Makefile                              |   2 +
 sysvipc/ftok.c                                |   4 +-
 sysvipc/sys/msg.h                             |  10 +
 sysvipc/sys/sem.h                             |  21 +
 sysvipc/sys/shm.h                             |  10 +
 sysvipc/test-sysvmsg-time64.c                 |   1 +
 sysvipc/test-sysvsem-time64.c                 |   1 +
 sysvipc/test-sysvshm-time64.c                 |   1 +
 time/Makefile                                 |  18 +-
 time/bits/types/struct_timespec.h             |  12 +-
 time/bits/types/struct_timeval.h              |   5 +
 time/bits/types/time_t.h                      |   4 +
 time/getdate.c                                |  22 +-
 time/sys/time.h                               |  71 +++
 time/time.h                                   | 128 ++++-
 time/tst-adjtime-time64.c                     |   1 +
 time/tst-clock-time64.c                       |   1 +
 time/tst-clock2-time64.c                      |   1 +
 time/tst-clock_nanosleep-time64.c             |   1 +
 time/tst-cpuclock1-time64.c                   |   1 +
 time/tst-ctime-time64.c                       |   1 +
 time/tst-ctime.c                              |  16 +
 time/tst-difftime-time64.c                    |   1 +
 time/tst-getdate.c                            | 147 +++---
 time/tst-gmtime-time64.c                      |   1 +
 time/tst-gmtime.c                             | 125 +++++
 time/tst-itimer-time64.c                      |   1 +
 time/tst-itimer.c                             | 175 +++++++
 time/tst-mktime4-time64.c                     |   1 +
 time/tst-timegm-time64.c                      |   1 +
 time/tst-timegm.c                             |  95 ++++
 time/tst-timespec_get-time64.c                |   1 +
 time/tst-timespec_get.c                       |  40 ++
 time/tst-y2039-time64.c                       |   1 +
 time/tst-y2039.c                              |  10 +
 time/tzfile.c                                 |   6 +-
 timezone/Makefile                             |   1 +
 463 files changed, 9068 insertions(+), 2386 deletions(-)
 rename sysdeps/unix/sysv/linux/s390/s390-32/updwtmp.c => bits/types/struct_lastlog.h (64%)
 create mode 100644 bits/types/struct_utmp.h
 create mode 100644 bits/types/struct_utmpx.h
 rename {sysdeps/unix/sysv/linux/s390/bits => bits}/utmpx.h (64%)
 create mode 100644 include/features-time64.h
 create mode 100644 include/utmpx.h
 create mode 100644 io/fts64-time64.c
 rename sysdeps/unix/sysv/linux/s390/s390-32/getutent_r.c => io/ftw64-time64.c (55%)
 create mode 100644 io/ftwtest-time64.c
 create mode 100644 io/tst-fts-time64.c
 create mode 100644 io/tst-futimesat-time64.c
 create mode 100644 io/tst-stat-time64.c
 create mode 100644 io/tst-utimensat-time64.c
 create mode 100644 io/tst-utimensat.c
 rename sysdeps/unix/sysv/linux/s390/s390-32/getutent.c => login/lastlog-compat.h (66%)
 create mode 100644 login/lastlog_read.c
 create mode 100644 login/lastlog_write.c
 rename {sysdeps/unix/sysv/linux/s390/s390-32 => login}/login32.c (72%)
 create mode 100644 login/tst-lastlog.c
 create mode 100644 login/tst-lastlog.root/tst-lastlog.script
 create mode 100644 login/tst-utmp-default.c
 create mode 100644 login/tst-utmp-default.root/tst-utmp-default.script
 create mode 100644 login/tst-utmp32.c
 create mode 100644 login/tst-utmp32.root/tst-utmp32.script
 rename sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h => login/utmp-convert.c (58%)
 rename sysdeps/unix/sysv/linux/s390/s390-32/getutmp.c => login/utmp-convert.h (59%)
 rename sysdeps/unix/sysv/linux/updwtmp.c => login/utmp-path.h (50%)
 create mode 100644 login/utmp32.c
 rename {sysdeps/unix/sysv/linux/s390/s390-32 => login}/utmp32.h (78%)
 rename {sysdeps/gnu => login}/utmpx.h (100%)
 create mode 100644 login/utmpx32.c
 rename {sysdeps/unix/sysv/linux/s390/s390-32 => login}/utmpx32.h (93%)
 create mode 100644 misc/tst-pselect-time64.c
 create mode 100644 nptl/tst-cancel4_2-time64.c
 create mode 100644 posix/glob64-time64.c
 rename sysdeps/unix/sysv/linux/s390/s390-32/getutid.c => posix/globfree64-time64.c (67%)
 create mode 100644 posix/tst-gnuglob64-time64.c
 create mode 100644 posix/tst-sched_rr_get_interval-time64.c
 create mode 100644 posix/tst-wait-skeleton.c
 create mode 100644 posix/tst-wait3-time64.c
 rename sysdeps/unix/sysv/linux/s390/s390-32/updwtmpx.c => posix/tst-wait3.c (66%)
 create mode 100644 posix/tst-wait4-time64.c
 create mode 100644 rt/tst-aio6-time64.c
 create mode 100644 rt/tst-cpuclock2-time64.c
 create mode 100644 rt/tst-mqueue1-time64.c
 create mode 100644 rt/tst-mqueue2-time64.c
 create mode 100644 rt/tst-mqueue4-time64.c
 create mode 100644 rt/tst-mqueue8-time64.c
 create mode 100644 rt/tst-timer4-time64.c
 create mode 100644 support/support-xfstat-time64.c
 rename sysdeps/unix/sysv/linux/s390/s390-32/getutline_r.c => support/support-xstat-time64.c (63%)
 create mode 100644 support/timespec-add-time64.c
 create mode 100644 support/timespec-sub-time64.c
 create mode 100644 support/timespec-time64.c
 rename sysdeps/unix/sysv/linux/s390/s390-32/getutxid.c => support/xclock_gettime_time64.c (66%)
 create mode 100644 support/xlstat-time64.c
 rename sysdeps/{unix/sysv/linux/s390/s390-32/getutxent.c => generic/features-time64.h} (66%)
 create mode 100644 sysdeps/generic/time64-compat.h
 create mode 100644 sysdeps/generic/utmp-compat.h
 delete mode 100644 sysdeps/generic/utmp-equal.h
 delete mode 100644 sysdeps/gnu/getutmpx.c
 delete mode 100644 sysdeps/gnu/utmp_file.c
 create mode 100644 sysdeps/pthread/tst-abstime-time64.c
 create mode 100644 sysdeps/pthread/tst-cnd-timedwait-time64.c
 create mode 100644 sysdeps/pthread/tst-cond11-time64.c
 create mode 100644 sysdeps/pthread/tst-join14-time64.c
 create mode 100644 sysdeps/pthread/tst-mtx-timedlock-time64.c
 create mode 100644 sysdeps/pthread/tst-rwlock14-time64.c
 create mode 100644 sysdeps/pthread/tst-sem5-time64.c
 create mode 100644 sysdeps/pthread/tst-thrd-sleep-time64.c
 create mode 100644 sysdeps/unix/sysv/linux/arm/time64-compat.h
 create mode 100644 sysdeps/unix/sysv/linux/bits/struct_stat_time64_helper.h
 create mode 100644 sysdeps/unix/sysv/linux/bits/types/struct_msqid64_ds_helper.h
 rename sysdeps/unix/sysv/linux/{s390/s390-32/getutline.c => bits/types/struct_semid64_ds_helper.h} (64%)
 rename sysdeps/{gnu/updwtmp.c => unix/sysv/linux/bits/types/struct_shmid64_ds_helper.h} (57%)
 create mode 100644 sysdeps/unix/sysv/linux/convert_scm_timestamps.c
 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/glob64-time64.c
 rename sysdeps/unix/sysv/linux/{s390/s390-32/getutid_r.c => globfree64-time64.c} (62%)
 create mode 100644 sysdeps/unix/sysv/linux/hppa/socket-constants-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/libanl.abilist
 create mode 100644 sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist
 create mode 100644 sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
 create mode 100644 sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h
 rename sysdeps/unix/sysv/linux/mips/mips64/{ => n64}/libanl.abilist (100%)
 rename sysdeps/unix/sysv/linux/mips/mips64/{ => n64}/libpthread.abilist (100%)
 rename sysdeps/unix/sysv/linux/mips/mips64/{ => n64}/librt.abilist (100%)
 create mode 100644 sysdeps/unix/sysv/linux/mips/socket-constants-time64.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/powerpc/socket-constants-time64.h
 rename sysdeps/unix/sysv/linux/{s390/s390-32/login.c => pwrite64_nocancel.c} (62%)
 create mode 100644 sysdeps/unix/sysv/linux/s390/bits/struct_utmp.h
 rename sysdeps/{gnu/bits/utmpx.h => unix/sysv/linux/s390/bits/struct_utmpx.h} (51%)
 delete mode 100644 sysdeps/unix/sysv/linux/s390/bits/utmp.h
 rename sysdeps/{gnu/getutmp.c => unix/sysv/linux/s390/lastlog-compat.h} (61%)
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/getutxline.c
 create mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/pututxline.c
 create mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/utmpx-convert.h
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.c
 rename sysdeps/unix/sysv/linux/s390/{ => s390-64}/libanl.abilist (100%)
 create mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/utmp-compat.h
 create mode 100644 sysdeps/unix/sysv/linux/sh/time64-compat.h
 create mode 100644 sysdeps/unix/sysv/linux/socket-constants-time64.h
 create mode 100644 sysdeps/unix/sysv/linux/sparc/socket-constants-time64.h
 create mode 100644 sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h
 create mode 100644 sysdeps/unix/sysv/linux/tst-futimens-time64.c
 create mode 100644 sysdeps/unix/sysv/linux/tst-futimes-time64.c
 create mode 100644 sysdeps/unix/sysv/linux/tst-futimes.c
 create mode 100644 sysdeps/unix/sysv/linux/tst-lutimes-time64.c
 create mode 100644 sysdeps/unix/sysv/linux/tst-lutimes.c
 create mode 100644 sysdeps/unix/sysv/linux/tst-ppoll-time64.c
 create mode 100644 sysdeps/unix/sysv/linux/tst-timerfd-time64.c
 create mode 100644 sysdeps/unix/sysv/linux/tst-utime-time64.c
 create mode 100644 sysdeps/unix/sysv/linux/tst-utimes-time64.c
 create mode 100644 sysdeps/unix/sysv/linux/utmp-path.h
 delete mode 100644 sysdeps/unix/sysv/linux/utmp_file.c
 create mode 100644 sysvipc/test-sysvmsg-time64.c
 create mode 100644 sysvipc/test-sysvsem-time64.c
 create mode 100644 sysvipc/test-sysvshm-time64.c
 create mode 100644 time/tst-adjtime-time64.c
 create mode 100644 time/tst-clock-time64.c
 create mode 100644 time/tst-clock2-time64.c
 create mode 100644 time/tst-clock_nanosleep-time64.c
 create mode 100644 time/tst-cpuclock1-time64.c
 create mode 100644 time/tst-ctime-time64.c
 create mode 100644 time/tst-difftime-time64.c
 create mode 100644 time/tst-gmtime-time64.c
 create mode 100644 time/tst-gmtime.c
 create mode 100644 time/tst-itimer-time64.c
 create mode 100644 time/tst-itimer.c
 create mode 100644 time/tst-mktime4-time64.c
 create mode 100644 time/tst-timegm-time64.c
 create mode 100644 time/tst-timegm.c
 create mode 100644 time/tst-timespec_get-time64.c
 create mode 100644 time/tst-timespec_get.c
 create mode 100644 time/tst-y2039-time64.c
  

Comments

Joseph Myers March 5, 2021, 11:57 p.m. UTC | #1
On Fri, 5 Mar 2021, Adhemerval Zanella via Libc-alpha wrote:

> I checked for i686-linux-gnu running on a x86_64 5.4 kernel,
> powerpc-linux-gnu running on ppc64 5.10 kernel, and on
> arm-linux-gnueabihf running on arm64 4.12.13 kernel.  As expected,
> the arm shows some tests failures due the missing kernel support:

I'd expect tests on an older kernel to be UNSUPPORTED, not FAIL.

More precisely: tests of times that can be represented in 32 bits, but 
using the 64-bit interfaces, should be PASS, and tests of times that can't 
be represented in 64 bits should be UNSUPPORTED as long as those are in a 
separate testcase from the tests of times that can be represented in 32 
bits.  If in the same testcase, FAIL seems the worst result, since it's 
not indicating any bug in glibc.
  
Lukasz Majewski March 7, 2021, 10:42 a.m. UTC | #2
Hi Adhemerval,

> This patchset add support for 64 bit time on ABIs which only support
> 32 bit time.  It is done through a new build flags, _TIME_BITS=64,
> which is supported only when Long File Support is also used
> (_FILE_OFFSET_BITS=64).  The new flag redefine the required structures
> and redirected the required symbols to newer exported ones.
> 
> However, different then LFS support, the new 64 bit time_t symbols
> are only exported for the ABI that require them.  ABIs that provides
> 64 bit time as the default ABI as unaffected.
> 
> On Linux, to fully support 64 bit time_t it requires a minimum of
> kernel v5.1 due the newer syscalls.
> 
> To make the patch review easier, it is divided in 5 subparts:
> 
>   1. Patches from 01/52 to 14/52 are newer tests and infrastructure
>      changes that are independent of 64 bit time support.
> 
>   2. Patches from 15/52 to 23/52 add the 64 bit time support on
>      utmp/utmpx/lastlog and it affects *all* the ABIs with the
>      exception of s390.
> 
>   3. Patches from 24/52 to 41/52 are the one that adjust the exported
>      API, add some specific newer symbols (glob, ftw, and fts) and
>      enable the _TIME_BITS on the installed headers.
> 
>   4. Patches from 42/52 to 44/52 enables basic test coverage.
> Although it does not cover all the newer symbol redirection, the idea
> is to use Lukasz patches and newer tests to cover all the symbols for
>      2.34 release.

There are still floating some patches, which would allow changing time
on target machines (usually in VM). I hope to get them pulled soon.

> 
>   5. Patches from 45/52 to 52/52 make glibc itself to use the newer
>      64 bit symbol internally and on installed programs.
> 
> I checked for i686-linux-gnu running on a x86_64 5.4 kernel,
> powerpc-linux-gnu running on ppc64 5.10 kernel, and on
> arm-linux-gnueabihf running on arm64 4.12.13 kernel.  As expected,
> the arm shows some tests failures due the missing kernel support:
> 

Big thanks for preparing this patch set - this is a huge step to have
64 bit time_t support on ports with __TIMESIZE != 64 and __WORDSIZE ==
32

> FAIL: io/tst-utimensat-time64
> FAIL: misc/tst-futimens-time64
> FAIL: misc/tst-futimes-time64
> FAIL: misc/tst-lutimes-time64
> FAIL: misc/tst-utime-time64
> FAIL: misc/tst-utimes-time64
> 
> Adhemerval Zanella (50):
>   io: Use temporary directory and file for ftwtest-sh
>   linux: Add futimes test
>   linux: Add lutimes test
>   time: Add getitimer and setitimer basic tests
>   time: Add gmtime/gmtime_r tests
>   time: Add timegm/timelocal basic tests
>   time: Add basic timespec_get tests
>   time: Add 64 bit tests for getdate / getdate_r
>   io: Add basic tests for utimensat
>   posix: Add wait3 tests
>   linux: mips: Split libpthread.abilist in n32 and n64
>   linux: mips: Split librt.abilist in n32 and n64
>   linux: mips: Split libanl.abilist in n32 and n64
>   linux: s390: Add libanl.abilist in s390 and s390x
>   login: Consolidate utmp and utmpx headers
>   login: Move gnu utmpx to default implementation
>   Consolidate and simplify internal utmp definitions
>   support: Add 'touch' command
>   Add tests-container-internal rules
>   login: Add 64-bit time support to utmp/utmpx
>   linux: Add pwrite64_nocancel
>   login: Use 64-bit time on struct lastlog [BZ #25844]
>   Remove __WORDSIZE_TIME64_COMPAT32
>   linux: Add fallback for 64-bit time_t SO_{RCV,SND}TIMEO
>   linux: Add fallback for 64-bit time_t SO_TIMESTAMP{NS}
>   linux: Add recvvmsg fallback for 64-bit time_t SO_TIMESTAMP{NS}
>   y2038: Add __USE_TIME_BITS64 support for time_t
>   y2038: Add __USE_TIME_BITS64 support for struct timeval
>   y2038: Add __USE_TIME_BITS64 support for struct timespec
>   y2038: Add __USE_TIME_BITS64 support for struct utimbuf
>   y2038: linux: Add __USE_TIME_BITS64 support for struct timex
>   y2038: Use a common definition for semid_ds
>   y2038: Use a common definition for shmid_ds
>   y2038: Add __USE_TIME_BITS64 support for socket-constants.h
>   time: Add 64 bit time support for getdate
>   y2038: Add support for 64 bit time on legacy ABIs
>   posix: Add glob64 with 64 bit time_t support
>   io: Add fts64 with 64 bit time_t support
>   io: Add ftw64 with 64 bit time_t support
>   libsupport: Add 64 bit time_t support for time functions
>   libsupport: Add 64 bit time_t support for stat functions
>   y2038: Add test coverage
>   Use 64 bit time_t stat internally
>   debug: build pcprofiledump with LFS and 64 bit time support
>   elf: Use LFS and 64 bit time_t for installed programs
>   iconv: Use LFS and 64 bit time_t for installed programs
>   locale: Use LFS and 64 bit time_t for installed programs
>   nss: Use LFS and 64 bit time_t for installed programs
>   posix: Use LFS and 64 bit time_t for installed programs
>   timezone: Use LFS and 64 bit time_t for installed programs
> 
> Lukasz Majewski (2):
>   y2038: Use a common definition for stat
>   y2038: Use a common definition for msqid_ds
> 
>  Makeconfig                                    |  14 +
>  Makefile                                      |   4 +-
>  Makerules                                     |  21 +-
>  NEWS                                          |   5 +
>  Rules                                         |  12 +-
>  .../updwtmp.c => bits/types/struct_lastlog.h  |  26 +-
>  bits/types/struct_utmp.h                      |  53 ++
>  bits/types/struct_utmpx.h                     |  54 +++
>  bits/utmp.h                                   |  48 +-
>  .../sysv/linux/s390/bits => bits}/utmpx.h     |  34 +-
>  bits/wordsize.h                               |   6 -
>  csu/check_fds.c                               |   8 +-
>  debug/Makefile                                |   1 +
>  elf/Makefile                                  |  13 +-
>  elf/dl-load.c                                 |   8 +-
>  elf/dl-misc.c                                 |   4 +-
>  elf/dl-profile.c                              |   4 +-
>  iconv/Makefile                                |   8 +
>  iconv/gconv_cache.c                           |   4 +-
>  include/dirent.h                              |   2 +-
>  include/features-time64.h                     |   1 +
>  include/features.h                            |   2 +
>  include/file_change_detection.h               |   6 +-
>  include/fts.h                                 |  51 ++
>  include/ftw.h                                 |  18 +
>  include/glob.h                                |  28 ++
>  include/sys/socket.h                          |   5 +
>  include/sys/stat.h                            |   2 +-
>  include/time.h                                |  12 +-
>  include/utmp.h                                |   5 +-
>  include/utmpx.h                               |   1 +
>  inet/rcmd.c                                   |   6 +-
>  intl/loadmsgcat.c                             |   4 +-
>  io/Makefile                                   |  28 +-
>  io/file_change_detection.c                    |  16 +-
>  io/fts.h                                      |  43 +-
>  io/fts64-time64.c                             |  35 ++
>  io/ftw.c                                      |   5 +-
>  io/ftw.h                                      |  46 +-
>  .../s390-32/getutent_r.c => io/ftw64-time64.c |  34 +-
>  io/ftwtest-sh                                 | 246 +++++-----
>  io/ftwtest-time64.c                           |   1 +
>  io/getdirname.c                               |   6 +-
>  io/sys/poll.h                                 |  11 +
>  io/sys/stat.h                                 | 113 ++++-
>  io/tst-fts-time64.c                           |   1 +
>  io/tst-futimesat-time64.c                     |   4 +
>  io/tst-futimesat.c                            |  47 +-
>  io/tst-stat-time64.c                          | 102 ++++
>  io/tst-utimensat-time64.c                     |   2 +
>  io/tst-utimensat.c                            | 115 +++++
>  io/utime.h                                    |  16 +
>  libio/filedoalloc.c                           |   2 +-
>  libio/fileops.c                               |   8 +-
>  libio/oldfileops.c                            |   2 +-
>  libio/wfileops.c                              |   2 +-
>  locale/Makefile                               |   9 +
>  locale/loadarchive.c                          |   8 +-
>  locale/loadlocale.c                           |   6 +-
>  login/Makefile                                |  16 +-
>  login/Versions                                |  26 +
>  login/getutent.c                              |   7 +-
>  login/getutent_r.c                            |  48 +-
>  login/getutid.c                               |   7 +-
>  login/getutid_r.c                             |  33 +-
>  login/getutline.c                             |   7 +-
>  login/getutline_r.c                           |  33 +-
>  login/getutmp.c                               |  42 +-
>  login/getutmpx.c                              |  35 +-
>  login/getutxent.c                             |   9 +-
>  login/getutxid.c                              |   9 +-
>  login/getutxline.c                            |   9 +-
>  .../getutent.c => login/lastlog-compat.h      |  29 +-
>  login/lastlog_read.c                          |  78 +++
>  login/lastlog_write.c                         |  64 +++
>  login/login.c                                 |  10 +-
>  .../linux/s390/s390-32 => login}/login32.c    |  16 +-
>  login/pututxline.c                            |   9 +-
>  login/tst-lastlog.c                           |  80 ++++
>  login/tst-lastlog.root/tst-lastlog.script     |   6 +
>  login/tst-utmp-default.c                      | 292 ++++++++++++
>  .../tst-utmp-default.script                   |  10 +
>  login/tst-utmp32.c                            | 318 ++++++++++++
>  login/tst-utmp32.root/tst-utmp32.script       |   7 +
>  login/updwtmp.c                               |  32 +-
>  login/updwtmpx.c                              |   9 +-
>  .../utmp-convert.h => login/utmp-convert.c    |  59 +--
>  .../s390-32/getutmp.c => login/utmp-convert.h |  39 +-
>  .../sysv/linux/updwtmp.c => login/utmp-path.h |  42 +-
>  login/utmp-private.h                          |  24 +-
>  login/utmp.h                                  |  11 +
>  login/utmp32.c                                | 247 ++++++++++
>  .../linux/s390/s390-32 => login}/utmp32.h     |   9 +
>  login/utmp_file.c                             | 451
> +++++++++++------- login/utmpname.c                              |
> 8 + {sysdeps/gnu => login}/utmpx.h                |   0
>  login/utmpx32.c                               | 112 +++++
>  .../linux/s390/s390-32 => login}/utmpx32.h    |   6 +-
>  manual/creature.texi                          |  44 ++
>  manual/users.texi                             |   4 +-
>  misc/Makefile                                 |   2 +
>  misc/sys/select.h                             |  27 ++
>  misc/tst-pselect-time64.c                     |   1 +
>  nptl/Makefile                                 |   3 +
>  nptl/tst-cancel4_2-time64.c                   |   1 +
>  nscd/nscd_helper.c                            |   4 +-
>  nss/Makefile                                  |  11 +-
>  nss/nss_database.c                            |   4 +-
>  posix/Makefile                                |  10 +-
>  posix/glob.c                                  |  46 +-
>  posix/glob.h                                  |  22 +
>  posix/glob64-lstat-compat.c                   |   3 +-
>  posix/glob64-time64.c                         |  49 ++
>  .../getutid.c => posix/globfree64-time64.c    |  22 +-
>  posix/sched.h                                 |  11 +-
>  posix/sys/wait.h                              |  20 +
>  posix/tst-gnuglob64-time64.c                  |   7 +
>  posix/tst-sched_rr_get_interval-time64.c      |   1 +
>  posix/tst-wait-skeleton.c                     | 209 ++++++++
>  posix/tst-wait3-time64.c                      |   1 +
>  .../s390-32/updwtmpx.c => posix/tst-wait3.c   |  18 +-
>  posix/tst-wait4-time64.c                      |   1 +
>  posix/tst-wait4.c                             | 193 +-------
>  resolv/netdb.h                                |  11 +
>  resource/sys/resource.h                       |  10 +
>  rt/Makefile                                   |   9 +
>  rt/aio.h                                      |  15 +-
>  rt/mqueue.h                                   |  22 +
>  rt/tst-aio6-time64.c                          |   1 +
>  rt/tst-cpuclock2-time64.c                     |   1 +
>  rt/tst-cpuclock2.c                            |   9 +-
>  rt/tst-mqueue1-time64.c                       |   1 +
>  rt/tst-mqueue2-time64.c                       |   1 +
>  rt/tst-mqueue4-time64.c                       |   1 +
>  rt/tst-mqueue8-time64.c                       |   1 +
>  rt/tst-timer4-time64.c                        |   1 +
>  signal/signal.h                               |  13 +
>  socket/sys/socket.h                           |  11 +
>  support/Makefile                              |   8 +
>  support/support-xfstat-time64.c               |  32 ++
>  .../support-xstat-time64.c                    |  28 +-
>  support/test-container.c                      |  11 +
>  support/timespec-add-time64.c                 |  27 ++
>  support/timespec-add.c                        |   2 +-
>  support/timespec-sub-time64.c                 |  27 ++
>  support/timespec-sub.c                        |   2 +-
>  support/timespec-time64.c                     |  40 ++
>  support/timespec.c                            |   9 +-
>  support/timespec.h                            |  52 +-
>  .../xclock_gettime_time64.c                   |  22 +-
>  support/xlstat-time64.c                       |  32 ++
>  support/xtime.h                               |   5 +
>  support/xunistd.h                             |  13 +
>  sysdeps/aarch64/bits/wordsize.h               |   2 -
>  .../getutxent.c => generic/features-time64.h} |  17 +-
>  sysdeps/generic/paths.h                       |  12 +-
>  sysdeps/generic/time64-compat.h               |   3 +
>  sysdeps/generic/utmp-compat.h                 |   3 +
>  sysdeps/generic/utmp-equal.h                  |  42 --
>  sysdeps/gnu/getutmpx.c                        |   1 -
>  sysdeps/gnu/glob64-lstat-compat.c             |   3 +-
>  sysdeps/gnu/utmp_file.c                       |  31 --
>  sysdeps/mach/hurd/i386/libc.abilist           |  17 +
>  sysdeps/mach/hurd/i386/libutil.abilist        |   1 +
>  sysdeps/mips/bits/wordsize.h                  |   6 -
>  sysdeps/nptl/pthread.h                        | 119 +++++
>  sysdeps/posix/dl-fileid.h                     |   4 +-
>  sysdeps/posix/euidaccess.c                    |   4 +-
>  sysdeps/posix/getaddrinfo.c                   |  21 +-
>  sysdeps/posix/getcwd.c                        |  15 +-
>  sysdeps/posix/pathconf.c                      |   4 +-
>  sysdeps/posix/sysconf.c                       |   4 +-
>  sysdeps/posix/tempname.c                      |   8 +-
>  sysdeps/powerpc/powerpc32/bits/wordsize.h     |   2 -
>  sysdeps/powerpc/powerpc64/bits/wordsize.h     |   2 -
>  sysdeps/pthread/Makefile                      |  10 +
>  sysdeps/pthread/semaphore.h                   |  25 +
>  sysdeps/pthread/threads.h                     |  33 ++
>  sysdeps/pthread/tst-abstime-time64.c          |   1 +
>  sysdeps/pthread/tst-cnd-timedwait-time64.c    |   1 +
>  sysdeps/pthread/tst-cond11-time64.c           |   1 +
>  sysdeps/pthread/tst-join14-time64.c           |   1 +
>  sysdeps/pthread/tst-mtx-timedlock-time64.c    |   1 +
>  sysdeps/pthread/tst-rwlock14-time64.c         |   1 +
>  sysdeps/pthread/tst-sem5-time64.c             |   1 +
>  sysdeps/pthread/tst-thrd-sleep-time64.c       |   1 +
>  sysdeps/riscv/bits/wordsize.h                 |   2 -
>  sysdeps/s390/s390-32/bits/wordsize.h          |   2 -
>  sysdeps/s390/s390-64/bits/wordsize.h          |   2 -
>  sysdeps/sparc/sparc32/bits/wordsize.h         |   2 -
>  sysdeps/sparc/sparc64/bits/wordsize.h         |   2 -
>  sysdeps/unix/sysv/linux/Makefile              |  22 +-
>  sysdeps/unix/sysv/linux/Versions              | 125 +++++
>  sysdeps/unix/sysv/linux/aarch64/libc.abilist  |  17 +
>  .../unix/sysv/linux/aarch64/libutil.abilist   |   1 +
>  sysdeps/unix/sysv/linux/alpha/bits/wordsize.h |   1 -
>  sysdeps/unix/sysv/linux/alpha/libc.abilist    |  17 +
>  sysdeps/unix/sysv/linux/alpha/libutil.abilist |   1 +
>  sysdeps/unix/sysv/linux/arc/libc.abilist      |  17 +
>  sysdeps/unix/sysv/linux/arc/libutil.abilist   |   1 +
>  sysdeps/unix/sysv/linux/arm/be/libanl.abilist |   1 +
>  sysdeps/unix/sysv/linux/arm/be/libc.abilist   |  78 +++
>  .../unix/sysv/linux/arm/be/libpthread.abilist |  14 +
>  sysdeps/unix/sysv/linux/arm/be/librt.abilist  |   5 +
>  .../unix/sysv/linux/arm/be/libutil.abilist    |   1 +
>  sysdeps/unix/sysv/linux/arm/le/libanl.abilist |   1 +
>  sysdeps/unix/sysv/linux/arm/le/libc.abilist   |  78 +++
>  .../unix/sysv/linux/arm/le/libpthread.abilist |  14 +
>  sysdeps/unix/sysv/linux/arm/le/librt.abilist  |   5 +
>  .../unix/sysv/linux/arm/le/libutil.abilist    |   1 +
>  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 +
>  .../unix/sysv/linux/bits/socket-constants.h   |  47 +-
>  sysdeps/unix/sysv/linux/bits/struct_stat.h    |  51 +-
>  .../linux/bits/struct_stat_time64_helper.h    |  63 +++
>  sysdeps/unix/sysv/linux/bits/time.h           |  10 +
>  sysdeps/unix/sysv/linux/bits/timex.h          |  31 ++
>  .../sysv/linux/bits/types/struct_msqid64_ds.h |  10 +-
>  .../bits/types/struct_msqid64_ds_helper.h     |  28 ++
>  .../sysv/linux/bits/types/struct_msqid_ds.h   |  12 +-
>  .../sysv/linux/bits/types/struct_semid64_ds.h |   5 +-
>  .../types/struct_semid64_ds_helper.h}         |  23 +-
>  .../sysv/linux/bits/types/struct_semid_ds.h   |  10 +-
>  .../sysv/linux/bits/types/struct_shmid64_ds.h |   9 +-
>  .../bits/types/struct_shmid64_ds_helper.h}    |  25 +-
>  .../sysv/linux/bits/types/struct_shmid_ds.h   |  10 +-
>  .../unix/sysv/linux/convert_scm_timestamps.c  |  96 ++++
>  sysdeps/unix/sysv/linux/csky/libanl.abilist   |   1 +
>  sysdeps/unix/sysv/linux/csky/libc.abilist     |  78 +++
>  .../unix/sysv/linux/csky/libpthread.abilist   |  14 +
>  sysdeps/unix/sysv/linux/csky/librt.abilist    |   5 +
>  sysdeps/unix/sysv/linux/csky/libutil.abilist  |   1 +
>  sysdeps/unix/sysv/linux/csky/time64-compat.h  |   2 +
>  sysdeps/unix/sysv/linux/fdopendir.c           |   4 +-
>  sysdeps/unix/sysv/linux/features-time64.h     |  37 ++
>  sysdeps/unix/sysv/linux/fexecve.c             |   4 +-
>  sysdeps/unix/sysv/linux/getsockopt.c          |  79 ++-
>  sysdeps/unix/sysv/linux/glob-lstat-compat.c   |   6 +-
>  sysdeps/unix/sysv/linux/glob.c                |   6 +
>  sysdeps/unix/sysv/linux/glob64-lstat-compat.c |  12 +-
>  sysdeps/unix/sysv/linux/glob64-time64.c       |  44 ++
>  sysdeps/unix/sysv/linux/glob64.c              |   8 +-
>  .../getutid_r.c => globfree64-time64.c}       |  30 +-
>  .../sysv/linux/hppa/bits/socket-constants.h   |  36 +-
>  .../linux/hppa/bits/types/struct_msqid_ds.h   |  12 +-
>  .../linux/hppa/bits/types/struct_semid_ds.h   |   4 +
>  .../linux/hppa/bits/types/struct_shmid_ds.h   |  10 +-
>  sysdeps/unix/sysv/linux/hppa/libanl.abilist   |   1 +
>  sysdeps/unix/sysv/linux/hppa/libc.abilist     |  78 +++
>  .../unix/sysv/linux/hppa/libpthread.abilist   |  14 +
>  sysdeps/unix/sysv/linux/hppa/librt.abilist    |   5 +
>  sysdeps/unix/sysv/linux/hppa/libutil.abilist  |   1 +
>  .../sysv/linux/hppa/socket-constants-time64.h |  35 ++
>  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     |  78 +++
>  .../unix/sysv/linux/i386/libpthread.abilist   |  14 +
>  sysdeps/unix/sysv/linux/i386/librt.abilist    |   5 +
>  sysdeps/unix/sysv/linux/i386/libutil.abilist  |   1 +
>  sysdeps/unix/sysv/linux/i386/time64-compat.h  |   2 +
>  sysdeps/unix/sysv/linux/ia64/libc.abilist     |  17 +
>  sysdeps/unix/sysv/linux/ia64/libutil.abilist  |   1 +
>  sysdeps/unix/sysv/linux/include/sys/msg.h     |   2 -
>  sysdeps/unix/sysv/linux/include/sys/shm.h     |   2 -
>  sysdeps/unix/sysv/linux/include/sys/timex.h   |   2 +
>  .../unix/sysv/linux/m68k/bits/struct_stat.h   |  50 +-
>  .../sysv/linux/m68k/coldfire/libanl.abilist   |   1 +
>  .../sysv/linux/m68k/coldfire/libc.abilist     |  78 +++
>  .../linux/m68k/coldfire/libpthread.abilist    |  14 +
>  .../sysv/linux/m68k/coldfire/librt.abilist    |   5 +
>  .../sysv/linux/m68k/coldfire/libutil.abilist  |   1 +
>  .../sysv/linux/m68k/m680x0/libanl.abilist     |   1 +
>  .../unix/sysv/linux/m68k/m680x0/libc.abilist  |  78 +++
>  .../sysv/linux/m68k/m680x0/libpthread.abilist |  14 +
>  .../unix/sysv/linux/m68k/m680x0/librt.abilist |   5 +
>  .../sysv/linux/m68k/m680x0/libutil.abilist    |   1 +
>  sysdeps/unix/sysv/linux/m68k/time64-compat.h  |   2 +
>  .../sysv/linux/microblaze/be/libanl.abilist   |   1 +
>  .../sysv/linux/microblaze/be/libc.abilist     |  78 +++
>  .../linux/microblaze/be/libpthread.abilist    |  14 +
>  .../sysv/linux/microblaze/be/librt.abilist    |   5 +
>  .../sysv/linux/microblaze/be/libutil.abilist  |   1 +
>  .../sysv/linux/microblaze/bits/struct_stat.h  |  48 +-
>  .../sysv/linux/microblaze/le/libanl.abilist   |   1 +
>  .../sysv/linux/microblaze/le/libc.abilist     |  78 +++
>  .../linux/microblaze/le/libpthread.abilist    |  14 +
>  .../sysv/linux/microblaze/le/librt.abilist    |   5 +
>  .../sysv/linux/microblaze/le/libutil.abilist  |   1 +
>  .../sysv/linux/microblaze/time64-compat.h     |   2 +
>  .../sysv/linux/mips/bits/socket-constants.h   |  36 +-
>  .../unix/sysv/linux/mips/bits/struct_stat.h   |  89 ++--
>  .../linux/mips/bits/types/struct_msqid_ds.h   |  18 +-
>  .../linux/mips/bits/types/struct_semid_ds.h   |   4 +
>  .../linux/mips/bits/types/struct_shmid_ds.h   |  14 +-
>  .../sysv/linux/mips/mips32/fpu/libc.abilist   |  78 +++
>  .../sysv/linux/mips/mips32/libanl.abilist     |   1 +
>  .../sysv/linux/mips/mips32/libpthread.abilist |  14 +
>  .../unix/sysv/linux/mips/mips32/librt.abilist |   5 +
>  .../sysv/linux/mips/mips32/libutil.abilist    |   1 +
>  .../sysv/linux/mips/mips32/nofpu/libc.abilist |  78 +++
>  .../sysv/linux/mips/mips32/time64-compat.h    |   2 +
>  .../sysv/linux/mips/mips64/libutil.abilist    |   1 +
>  .../sysv/linux/mips/mips64/n32/libanl.abilist |   5 +
>  .../sysv/linux/mips/mips64/n32/libc.abilist   |  78 +++
>  .../linux/mips/mips64/n32/libpthread.abilist  | 252 ++++++++++
>  .../sysv/linux/mips/mips64/n32/librt.abilist  |  42 ++
>  .../linux/mips/mips64/n32/time64-compat.h     |   2 +
>  .../mips/mips64/{ => n64}/libanl.abilist      |   0
>  .../sysv/linux/mips/mips64/n64/libc.abilist   |  17 +
>  .../mips/mips64/{ => n64}/libpthread.abilist  |   0
>  .../linux/mips/mips64/{ => n64}/librt.abilist |   0
>  .../sysv/linux/mips/socket-constants-time64.h |  35 ++
>  sysdeps/unix/sysv/linux/nios2/libanl.abilist  |   1 +
>  sysdeps/unix/sysv/linux/nios2/libc.abilist    |  78 +++
>  .../unix/sysv/linux/nios2/libpthread.abilist  |  14 +
>  sysdeps/unix/sysv/linux/nios2/librt.abilist   |   5 +
>  sysdeps/unix/sysv/linux/nios2/libutil.abilist |   1 +
>  sysdeps/unix/sysv/linux/nios2/time64-compat.h |   2 +
>  sysdeps/unix/sysv/linux/not-cancel.h          |   4 +
>  sysdeps/unix/sysv/linux/oldglob.c             |  11 +-
>  sysdeps/unix/sysv/linux/opendir.c             |   7 +-
>  sysdeps/unix/sysv/linux/pathconf.c            |   5 +-
>  sysdeps/unix/sysv/linux/paths.h               |  10 +-
>  .../linux/powerpc/bits/socket-constants.h     |  36 +-
>  .../sysv/linux/powerpc/bits/struct_stat.h     |  52 +-
>  .../powerpc/bits/types/struct_msqid_ds.h      |  12 +-
>  .../powerpc/bits/types/struct_semid_ds.h      |  10 +-
>  .../powerpc/bits/types/struct_shmid_ds.h      |  10 +-
>  .../unix/sysv/linux/powerpc/bits/wordsize.h   |   2 -
>  .../linux/powerpc/powerpc32/fpu/libc.abilist  |  78 +++
>  .../linux/powerpc/powerpc32/libanl.abilist    |   1 +
>  .../powerpc/powerpc32/libpthread.abilist      |  14 +
>  .../linux/powerpc/powerpc32/librt.abilist     |   5 +
>  .../linux/powerpc/powerpc32/libutil.abilist   |   1 +
>  .../powerpc/powerpc32/nofpu/libc.abilist      |  78 +++
>  .../linux/powerpc/powerpc32/time64-compat.h   |   2 +
>  .../linux/powerpc/powerpc64/be/libc.abilist   |  17 +
>  .../powerpc/powerpc64/be/libutil.abilist      |   1 +
>  .../linux/powerpc/powerpc64/le/libc.abilist   |  17 +
>  .../powerpc/powerpc64/le/libutil.abilist      |   1 +
>  .../linux/powerpc/socket-constants-time64.h   |  35 ++
>  .../s390-32/login.c => pwrite64_nocancel.c}   |  30 +-
>  sysdeps/unix/sysv/linux/recvmmsg.c            |  17 +-
>  sysdeps/unix/sysv/linux/recvmsg.c             |  23 +-
>  .../unix/sysv/linux/riscv/rv32/libc.abilist   |  17 +
>  .../sysv/linux/riscv/rv32/libutil.abilist     |   1 +
>  .../unix/sysv/linux/riscv/rv64/libc.abilist   |  17 +
>  .../sysv/linux/riscv/rv64/libutil.abilist     |   1 +
>  .../unix/sysv/linux/s390/bits/struct_utmp.h   |  51 ++
>  .../sysv/linux/s390/bits/struct_utmpx.h}      |  65 +--
>  sysdeps/unix/sysv/linux/s390/bits/utmp.h      | 127 -----
>  .../sysv/linux/s390/lastlog-compat.h}         |  34 +-
>  .../unix/sysv/linux/s390/s390-32/getutxline.c |  30 --
>  .../sysv/linux/s390/s390-32/libanl.abilist    |   5 +
>  .../unix/sysv/linux/s390/s390-32/libc.abilist |  63 +++
>  .../linux/s390/s390-32/libpthread.abilist     |  14 +
>  .../sysv/linux/s390/s390-32/librt.abilist     |   5 +
>  .../unix/sysv/linux/s390/s390-32/pututxline.c |  30 --
>  .../sysv/linux/s390/s390-32/time64-compat.h   |   2 +
>  .../sysv/linux/s390/s390-32/utmp-compat.h     |   2 +-
>  sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c | 184 -------
>  .../sysv/linux/s390/s390-32/utmpx-convert.h   |  85 ----
>  .../unix/sysv/linux/s390/s390-32/utmpx32.c    | 139 ------
>  .../linux/s390/{ => s390-64}/libanl.abilist   |   0
>  .../unix/sysv/linux/s390/s390-64/libc.abilist |   2 +
>  .../sysv/linux/s390/s390-64/utmp-compat.h     |   3 +
>  sysdeps/unix/sysv/linux/semctl.c              |   1 -
>  sysdeps/unix/sysv/linux/setsockopt.c          |  83 +++-
>  sysdeps/unix/sysv/linux/sh/be/libanl.abilist  |   1 +
>  sysdeps/unix/sysv/linux/sh/be/libc.abilist    |  78 +++
>  .../unix/sysv/linux/sh/be/libpthread.abilist  |  14 +
>  sysdeps/unix/sysv/linux/sh/be/librt.abilist   |   5 +
>  sysdeps/unix/sysv/linux/sh/be/libutil.abilist |   1 +
>  sysdeps/unix/sysv/linux/sh/le/libanl.abilist  |   1 +
>  sysdeps/unix/sysv/linux/sh/le/libc.abilist    |  78 +++
>  .../unix/sysv/linux/sh/le/libpthread.abilist  |  14 +
>  sysdeps/unix/sysv/linux/sh/le/librt.abilist   |   5 +
>  sysdeps/unix/sysv/linux/sh/le/libutil.abilist |   1 +
>  sysdeps/unix/sysv/linux/sh/time64-compat.h    |   2 +
>  .../unix/sysv/linux/socket-constants-time64.h |  35 ++
>  .../sysv/linux/sparc/bits/socket-constants.h  |  36 +-
>  .../linux/sparc/bits/types/struct_msqid_ds.h  |  12 +-
>  .../linux/sparc/bits/types/struct_semid_ds.h  |  10 +-
>  .../linux/sparc/bits/types/struct_shmid_ds.h  |  10 +-
>  sysdeps/unix/sysv/linux/sparc/bits/wordsize.h |   2 -
>  .../linux/sparc/socket-constants-time64.h     |  35 ++
>  .../sysv/linux/sparc/sparc32/libanl.abilist   |   1 +
>  .../sysv/linux/sparc/sparc32/libc.abilist     |  78 +++
>  .../linux/sparc/sparc32/libpthread.abilist    |  14 +
>  .../sysv/linux/sparc/sparc32/librt.abilist    |   5 +
>  .../sysv/linux/sparc/sparc32/libutil.abilist  |   1 +
>  .../sysv/linux/sparc/sparc32/time64-compat.h  |   2 +
>  .../sysv/linux/sparc/sparc64/libc.abilist     |  17 +
>  .../sysv/linux/sparc/sparc64/libutil.abilist  |   1 +
>  sysdeps/unix/sysv/linux/struct_stat_time64.h  |  59 +--
>  sysdeps/unix/sysv/linux/sys/timerfd.h         |  22 +
>  sysdeps/unix/sysv/linux/sys/timex.h           |  28 +-
>  sysdeps/unix/sysv/linux/tst-futimens-time64.c |   2 +
>  sysdeps/unix/sysv/linux/tst-futimens.c        |   8 +-
>  sysdeps/unix/sysv/linux/tst-futimes-time64.c  |   2 +
>  sysdeps/unix/sysv/linux/tst-futimes.c         |  85 ++++
>  sysdeps/unix/sysv/linux/tst-lutimes-time64.c  |   2 +
>  sysdeps/unix/sysv/linux/tst-lutimes.c         |  95 ++++
>  sysdeps/unix/sysv/linux/tst-ppoll-time64.c    |   1 +
>  sysdeps/unix/sysv/linux/tst-timerfd-time64.c  |   1 +
>  sysdeps/unix/sysv/linux/tst-utime-time64.c    |   2 +
>  sysdeps/unix/sysv/linux/tst-utime.c           |   6 +-
>  sysdeps/unix/sysv/linux/tst-utimes-time64.c   |   2 +
>  sysdeps/unix/sysv/linux/tst-utimes.c          |   6 +-
>  sysdeps/unix/sysv/linux/ttyname.c             |  17 +-
>  sysdeps/unix/sysv/linux/ttyname.h             |  10 +-
>  sysdeps/unix/sysv/linux/ttyname_r.c           |  16 +-
>  sysdeps/unix/sysv/linux/utmp-path.h           |  54 +++
>  sysdeps/unix/sysv/linux/utmp_file.c           |  37 --
>  .../unix/sysv/linux/x86/bits/struct_stat.h    |  90 ++--
>  .../linux/x86/bits/types/struct_semid_ds.h    |   4 +
>  .../unix/sysv/linux/x86_64/64/libc.abilist    |  17 +
>  .../unix/sysv/linux/x86_64/64/libutil.abilist |   1 +
>  .../unix/sysv/linux/x86_64/x32/libc.abilist   |  17 +
>  .../sysv/linux/x86_64/x32/libutil.abilist     |   1 +
>  sysdeps/wordsize-32/bits/wordsize.h           |   1 -
>  sysdeps/wordsize-64/bits/wordsize.h           |   1 -
>  sysdeps/x86/bits/wordsize.h                   |   3 -
>  sysvipc/Makefile                              |   2 +
>  sysvipc/ftok.c                                |   4 +-
>  sysvipc/sys/msg.h                             |  10 +
>  sysvipc/sys/sem.h                             |  21 +
>  sysvipc/sys/shm.h                             |  10 +
>  sysvipc/test-sysvmsg-time64.c                 |   1 +
>  sysvipc/test-sysvsem-time64.c                 |   1 +
>  sysvipc/test-sysvshm-time64.c                 |   1 +
>  time/Makefile                                 |  18 +-
>  time/bits/types/struct_timespec.h             |  12 +-
>  time/bits/types/struct_timeval.h              |   5 +
>  time/bits/types/time_t.h                      |   4 +
>  time/getdate.c                                |  22 +-
>  time/sys/time.h                               |  71 +++
>  time/time.h                                   | 128 ++++-
>  time/tst-adjtime-time64.c                     |   1 +
>  time/tst-clock-time64.c                       |   1 +
>  time/tst-clock2-time64.c                      |   1 +
>  time/tst-clock_nanosleep-time64.c             |   1 +
>  time/tst-cpuclock1-time64.c                   |   1 +
>  time/tst-ctime-time64.c                       |   1 +
>  time/tst-ctime.c                              |  16 +
>  time/tst-difftime-time64.c                    |   1 +
>  time/tst-getdate.c                            | 147 +++---
>  time/tst-gmtime-time64.c                      |   1 +
>  time/tst-gmtime.c                             | 125 +++++
>  time/tst-itimer-time64.c                      |   1 +
>  time/tst-itimer.c                             | 175 +++++++
>  time/tst-mktime4-time64.c                     |   1 +
>  time/tst-timegm-time64.c                      |   1 +
>  time/tst-timegm.c                             |  95 ++++
>  time/tst-timespec_get-time64.c                |   1 +
>  time/tst-timespec_get.c                       |  40 ++
>  time/tst-y2039-time64.c                       |   1 +
>  time/tst-y2039.c                              |  10 +
>  time/tzfile.c                                 |   6 +-
>  timezone/Makefile                             |   1 +
>  463 files changed, 9068 insertions(+), 2386 deletions(-)
>  rename sysdeps/unix/sysv/linux/s390/s390-32/updwtmp.c =>
> bits/types/struct_lastlog.h (64%) create mode 100644
> bits/types/struct_utmp.h create mode 100644 bits/types/struct_utmpx.h
>  rename {sysdeps/unix/sysv/linux/s390/bits => bits}/utmpx.h (64%)
>  create mode 100644 include/features-time64.h
>  create mode 100644 include/utmpx.h
>  create mode 100644 io/fts64-time64.c
>  rename sysdeps/unix/sysv/linux/s390/s390-32/getutent_r.c =>
> io/ftw64-time64.c (55%) create mode 100644 io/ftwtest-time64.c
>  create mode 100644 io/tst-fts-time64.c
>  create mode 100644 io/tst-futimesat-time64.c
>  create mode 100644 io/tst-stat-time64.c
>  create mode 100644 io/tst-utimensat-time64.c
>  create mode 100644 io/tst-utimensat.c
>  rename sysdeps/unix/sysv/linux/s390/s390-32/getutent.c =>
> login/lastlog-compat.h (66%) create mode 100644 login/lastlog_read.c
>  create mode 100644 login/lastlog_write.c
>  rename {sysdeps/unix/sysv/linux/s390/s390-32 => login}/login32.c
> (72%) create mode 100644 login/tst-lastlog.c
>  create mode 100644 login/tst-lastlog.root/tst-lastlog.script
>  create mode 100644 login/tst-utmp-default.c
>  create mode 100644
> login/tst-utmp-default.root/tst-utmp-default.script create mode
> 100644 login/tst-utmp32.c create mode 100644
> login/tst-utmp32.root/tst-utmp32.script rename
> sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h =>
> login/utmp-convert.c (58%) rename
> sysdeps/unix/sysv/linux/s390/s390-32/getutmp.c =>
> login/utmp-convert.h (59%) rename sysdeps/unix/sysv/linux/updwtmp.c
> => login/utmp-path.h (50%) create mode 100644 login/utmp32.c rename
> {sysdeps/unix/sysv/linux/s390/s390-32 => login}/utmp32.h (78%) rename
> {sysdeps/gnu => login}/utmpx.h (100%) create mode 100644
> login/utmpx32.c rename {sysdeps/unix/sysv/linux/s390/s390-32 =>
> login}/utmpx32.h (93%) create mode 100644 misc/tst-pselect-time64.c
> create mode 100644 nptl/tst-cancel4_2-time64.c create mode 100644
> posix/glob64-time64.c rename
> sysdeps/unix/sysv/linux/s390/s390-32/getutid.c =>
> posix/globfree64-time64.c (67%) create mode 100644
> posix/tst-gnuglob64-time64.c create mode 100644
> posix/tst-sched_rr_get_interval-time64.c create mode 100644
> posix/tst-wait-skeleton.c create mode 100644 posix/tst-wait3-time64.c
> rename sysdeps/unix/sysv/linux/s390/s390-32/updwtmpx.c =>
> posix/tst-wait3.c (66%) create mode 100644 posix/tst-wait4-time64.c
> create mode 100644 rt/tst-aio6-time64.c create mode 100644
> rt/tst-cpuclock2-time64.c create mode 100644 rt/tst-mqueue1-time64.c
>  create mode 100644 rt/tst-mqueue2-time64.c
>  create mode 100644 rt/tst-mqueue4-time64.c
>  create mode 100644 rt/tst-mqueue8-time64.c
>  create mode 100644 rt/tst-timer4-time64.c
>  create mode 100644 support/support-xfstat-time64.c
>  rename sysdeps/unix/sysv/linux/s390/s390-32/getutline_r.c =>
> support/support-xstat-time64.c (63%) create mode 100644
> support/timespec-add-time64.c create mode 100644
> support/timespec-sub-time64.c create mode 100644
> support/timespec-time64.c rename
> sysdeps/unix/sysv/linux/s390/s390-32/getutxid.c =>
> support/xclock_gettime_time64.c (66%) create mode 100644
> support/xlstat-time64.c rename
> sysdeps/{unix/sysv/linux/s390/s390-32/getutxent.c =>
> generic/features-time64.h} (66%) create mode 100644
> sysdeps/generic/time64-compat.h create mode 100644
> sysdeps/generic/utmp-compat.h delete mode 100644
> sysdeps/generic/utmp-equal.h delete mode 100644
> sysdeps/gnu/getutmpx.c delete mode 100644 sysdeps/gnu/utmp_file.c
> create mode 100644 sysdeps/pthread/tst-abstime-time64.c create mode
> 100644 sysdeps/pthread/tst-cnd-timedwait-time64.c create mode 100644
> sysdeps/pthread/tst-cond11-time64.c create mode 100644
> sysdeps/pthread/tst-join14-time64.c create mode 100644
> sysdeps/pthread/tst-mtx-timedlock-time64.c create mode 100644
> sysdeps/pthread/tst-rwlock14-time64.c create mode 100644
> sysdeps/pthread/tst-sem5-time64.c create mode 100644
> sysdeps/pthread/tst-thrd-sleep-time64.c create mode 100644
> sysdeps/unix/sysv/linux/arm/time64-compat.h create mode 100644
> sysdeps/unix/sysv/linux/bits/struct_stat_time64_helper.h create mode
> 100644 sysdeps/unix/sysv/linux/bits/types/struct_msqid64_ds_helper.h
> rename sysdeps/unix/sysv/linux/{s390/s390-32/getutline.c =>
> bits/types/struct_semid64_ds_helper.h} (64%) rename
> sysdeps/{gnu/updwtmp.c =>
> unix/sysv/linux/bits/types/struct_shmid64_ds_helper.h} (57%) create
> mode 100644 sysdeps/unix/sysv/linux/convert_scm_timestamps.c 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/glob64-time64.c rename
> sysdeps/unix/sysv/linux/{s390/s390-32/getutid_r.c =>
> globfree64-time64.c} (62%) create mode 100644
> sysdeps/unix/sysv/linux/hppa/socket-constants-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/libanl.abilist
> create mode 100644
> sysdeps/unix/sysv/linux/mips/mips64/n32/libpthread.abilist create
> mode 100644 sysdeps/unix/sysv/linux/mips/mips64/n32/librt.abilist
> create mode 100644
> sysdeps/unix/sysv/linux/mips/mips64/n32/time64-compat.h rename
> sysdeps/unix/sysv/linux/mips/mips64/{ => n64}/libanl.abilist (100%)
> rename sysdeps/unix/sysv/linux/mips/mips64/{ =>
> n64}/libpthread.abilist (100%) rename
> sysdeps/unix/sysv/linux/mips/mips64/{ => n64}/librt.abilist (100%)
> create mode 100644
> sysdeps/unix/sysv/linux/mips/socket-constants-time64.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/powerpc/socket-constants-time64.h rename
> sysdeps/unix/sysv/linux/{s390/s390-32/login.c => pwrite64_nocancel.c}
> (62%) create mode 100644
> sysdeps/unix/sysv/linux/s390/bits/struct_utmp.h rename
> sysdeps/{gnu/bits/utmpx.h =>
> unix/sysv/linux/s390/bits/struct_utmpx.h} (51%) delete mode 100644
> sysdeps/unix/sysv/linux/s390/bits/utmp.h rename
> sysdeps/{gnu/getutmp.c => unix/sysv/linux/s390/lastlog-compat.h}
> (61%) delete mode 100644
> sysdeps/unix/sysv/linux/s390/s390-32/getutxline.c create mode 100644
> sysdeps/unix/sysv/linux/s390/s390-32/libanl.abilist delete mode
> 100644 sysdeps/unix/sysv/linux/s390/s390-32/pututxline.c create mode
> 100644 sysdeps/unix/sysv/linux/s390/s390-32/time64-compat.h delete
> mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/utmp32.c delete mode
> 100644 sysdeps/unix/sysv/linux/s390/s390-32/utmpx-convert.h delete
> mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/utmpx32.c rename
> sysdeps/unix/sysv/linux/s390/{ => s390-64}/libanl.abilist (100%)
> create mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/utmp-compat.h
> create mode 100644 sysdeps/unix/sysv/linux/sh/time64-compat.h create
> mode 100644 sysdeps/unix/sysv/linux/socket-constants-time64.h create
> mode 100644 sysdeps/unix/sysv/linux/sparc/socket-constants-time64.h
> create mode 100644
> sysdeps/unix/sysv/linux/sparc/sparc32/time64-compat.h create mode
> 100644 sysdeps/unix/sysv/linux/tst-futimens-time64.c create mode
> 100644 sysdeps/unix/sysv/linux/tst-futimes-time64.c create mode
> 100644 sysdeps/unix/sysv/linux/tst-futimes.c create mode 100644
> sysdeps/unix/sysv/linux/tst-lutimes-time64.c create mode 100644
> sysdeps/unix/sysv/linux/tst-lutimes.c create mode 100644
> sysdeps/unix/sysv/linux/tst-ppoll-time64.c create mode 100644
> sysdeps/unix/sysv/linux/tst-timerfd-time64.c create mode 100644
> sysdeps/unix/sysv/linux/tst-utime-time64.c create mode 100644
> sysdeps/unix/sysv/linux/tst-utimes-time64.c create mode 100644
> sysdeps/unix/sysv/linux/utmp-path.h delete mode 100644
> sysdeps/unix/sysv/linux/utmp_file.c create mode 100644
> sysvipc/test-sysvmsg-time64.c create mode 100644
> sysvipc/test-sysvsem-time64.c create mode 100644
> sysvipc/test-sysvshm-time64.c create mode 100644
> time/tst-adjtime-time64.c create mode 100644 time/tst-clock-time64.c
> create mode 100644 time/tst-clock2-time64.c create mode 100644
> time/tst-clock_nanosleep-time64.c create mode 100644
> time/tst-cpuclock1-time64.c create mode 100644
> time/tst-ctime-time64.c create mode 100644 time/tst-difftime-time64.c
> create mode 100644 time/tst-gmtime-time64.c create mode 100644
> time/tst-gmtime.c create mode 100644 time/tst-itimer-time64.c create
> mode 100644 time/tst-itimer.c create mode 100644
> time/tst-mktime4-time64.c create mode 100644 time/tst-timegm-time64.c
> create mode 100644 time/tst-timegm.c create mode 100644
> time/tst-timespec_get-time64.c create mode 100644
> time/tst-timespec_get.c create mode 100644 time/tst-y2039-time64.c
> 




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
  
Adhemerval Zanella March 8, 2021, 1:18 p.m. UTC | #3
On 05/03/2021 20:57, Joseph Myers wrote:
> On Fri, 5 Mar 2021, Adhemerval Zanella via Libc-alpha wrote:
> 
>> I checked for i686-linux-gnu running on a x86_64 5.4 kernel,
>> powerpc-linux-gnu running on ppc64 5.10 kernel, and on
>> arm-linux-gnueabihf running on arm64 4.12.13 kernel.  As expected,
>> the arm shows some tests failures due the missing kernel support:
> 
> I'd expect tests on an older kernel to be UNSUPPORTED, not FAIL.
> 
> More precisely: tests of times that can be represented in 32 bits, but 
> using the 64-bit interfaces, should be PASS, and tests of times that can't 
> be represented in 64 bits should be UNSUPPORTED as long as those are in a 
> separate testcase from the tests of times that can be represented in 32 
> bits.  If in the same testcase, FAIL seems the worst result, since it's 
> not indicating any bug in glibc.
> 

The problem is how to recognize a glibc failure over, a kernel failure,
and a kernel missing support.  I think we add a syscall probe for 64-bit
time_t syscall and assume a kernel without support for ENOSYS and act 
accordingly.