From patchwork Fri Mar 5 20:14:26 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella X-Patchwork-Id: 42284 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 6D0D5382D43B; Fri, 5 Mar 2021 20:15:31 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6D0D5382D43B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1614975331; bh=MGH5Lt70FQ86nbraf31YJaxvvx1OsNV421th+0upg+8=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=GxHDLlsDxVbmCXYx96sotiViccq/Me9BXOgLml7GQWHt5TfoVEX+p5Edpw4xpYenm 6dWzKeHtZkzsQqIKeGdJMsnkVlrbwSP+zYKXMBjsa+CbaBU6cRNE/MbyhkIwJ1sWav vLcHjh0hv4CtO7Db+DtTl1+EjY6/uWlFGhzG2h84= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qk1-x734.google.com (mail-qk1-x734.google.com [IPv6:2607:f8b0:4864:20::734]) by sourceware.org (Postfix) with ESMTPS id 97FB0386F83C for ; Fri, 5 Mar 2021 20:15:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 97FB0386F83C Received: by mail-qk1-x734.google.com with SMTP id z190so3253740qka.9 for ; Fri, 05 Mar 2021 12:15:24 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=MGH5Lt70FQ86nbraf31YJaxvvx1OsNV421th+0upg+8=; b=NP/SBdKNWMgCdYSkKasAoLo5vsTFPzshNZHlk+lusWJMD0y2/GhTwDtrHpwS7edNax MN4olPyZ9BurczxOG/H/KY6iWim4Bumsj5mVJScNlUzOrIBbcu06RO8eIg3ruj9Z++G2 oad2AU1d5+h8EHWyH9F12fsXRbFyvl+DaNovB0RleFoeYCoIhynPAEDFTmZ4qfYv5XmQ sMAYyy8xZBlPv3RPeCm5dcgiCoDUKWePEihdIpydJOokdm80l4+nwV+iUVeSLwFaLvao vR4QNU6ZS0AzX4UprroKef705XRnoj71unOEhM8LFN+xCRZ/moUbVQOtsjOfHzpHmSkQ xG7g== X-Gm-Message-State: AOAM533jjB9iJ4X5U+7mlrc2+nx4jzsyuI7LK3usClBtHsunelz7twUk RsFaWKClDyvE0Scfoi5/aJ399nIsTi5DEA== X-Google-Smtp-Source: ABdhPJzPC1oJHE0bvqFY07d8wjsYyCtbAsnTIr0sJEBeJ5w8r9JKD/grEEX5St7CB34TPFtNtVr+xA== X-Received: by 2002:a37:6397:: with SMTP id x145mr10468276qkb.358.1614975323330; Fri, 05 Mar 2021 12:15:23 -0800 (PST) Received: from localhost.localdomain ([177.194.48.209]) by smtp.googlemail.com with ESMTPSA id c5sm2526145qkl.21.2021.03.05.12.15.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Mar 2021 12:15:23 -0800 (PST) To: libc-alpha@sourceware.org Subject: [PATCH 00/52] Add 64 bit time support on legacy ABIs Date: Fri, 5 Mar 2021 17:14:26 -0300 Message-Id: <20210305201518.798584-1-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Spam-Status: No, score=-7.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" 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