From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-Status: No, score=-3.8 required=3.0 tests=AWL,BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, SPF_HELO_PASS,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 8C7EF1F9FD for ; Mon, 8 Mar 2021 21:28:33 +0000 (UTC) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C03B03951892; Mon, 8 Mar 2021 21:28:32 +0000 (GMT) Received: from mail-out.m-online.net (mail-out.m-online.net [212.18.0.9]) by sourceware.org (Postfix) with ESMTPS id 4F2B8385481D for ; Mon, 8 Mar 2021 21:28:27 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 4F2B8385481D Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=denx.de Authentication-Results: sourceware.org; spf=none smtp.mailfrom=lukma@denx.de Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 4DvWff3KpJz1qs0m; Mon, 8 Mar 2021 22:28:26 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.70]) by mail.m-online.net (Postfix) with ESMTP id 4DvWff33cFz1qqkX; Mon, 8 Mar 2021 22:28:26 +0100 (CET) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.70]) (amavisd-new, port 10024) with ESMTP id OnrYiVVe4a2J; Mon, 8 Mar 2021 22:28:22 +0100 (CET) X-Auth-Info: 6owxYhSLZaZ+mAweFo/EfgsxB2d6D1sgUuG1jbCMDOk= Received: from jawa (85-222-111-42.dynamic.chello.pl [85.222.111.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA; Mon, 8 Mar 2021 22:28:22 +0100 (CET) Date: Mon, 8 Mar 2021 22:28:21 +0100 From: Lukasz Majewski To: Adhemerval Zanella via Libc-alpha Subject: Re: [PATCH 44/52] y2038: Add test coverage Message-ID: <20210308222821.42d7036d@jawa> In-Reply-To: <20210305201518.798584-45-adhemerval.zanella@linaro.org> References: <20210305201518.798584-1-adhemerval.zanella@linaro.org> <20210305201518.798584-45-adhemerval.zanella@linaro.org> Organization: denx.de X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; boundary="Sig_/oZ8CNYLh4XpzjObGCQYH8T9"; protocol="application/pgp-signature" 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: , Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" --Sig_/oZ8CNYLh4XpzjObGCQYH8T9 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable On Fri, 5 Mar 2021 17:15:10 -0300 Adhemerval Zanella via Libc-alpha wrote: > It is enabled through a new rule, tests-y2038, which is built only > when the ABI supports the comapt 64-bit time_t (defined by the > header time64-compat.h, which also enables the creation of the > symbol Version for Linux). It means the tests are not built > for ABI which already provide default 64-bit time_t. >=20 > The new rule already adds the required LFS and 64-bit time_t > compiler flags. >=20 > The current coverage is: >=20 > * libc: > - adjtime > - adjtimex > - clock_adjtime tst-clock_adjtime-time64 > - clock_getres tst-clock-time64, > tst-cpuclock1-time64 > - clock_gettime tst-clock-time64, > tst-clock2-time64, tst-cpuclock1-time64 > - clock_nanoslee tst-clock_nanosleep-time64, > tst-cpuclock1-time64 > - clock_settime tst-clock2-time64 > - ctime tst-ctime-time64 > - ctime_r tst-ctime-time64 > - difftime tst-difftime-time64 > - fstat tst-stat-time64 > - fstatat tst-stat-time64 > - futimens tst-futimens-time64 > - futimes tst-futimes-time64 > - futimesat tst-futimesat-time64 > - fts_* tst-fts-time64 > - getitimer tst-itimer-timer64 > - getrusage > - gettimeofday tst-clock_nanosleep-time64 > - glob / globfree tst-gnuglob64-time64 > - gmtime tst-gmtime-time64 > - gmtime_r tst-gmtime-time64 > - lstat tst-stat-time64 > - localtime tst-y2039-time64 > - localtime_t tst-y2039-time64 > - lutimes tst-lutimes-time64 > - mktime tst-mktime4-time64 > - mq_timedreceive tst-mqueue{1248}-time64 > - mq_timedsend tst-mqueue{1248}-time64 > - msgctl test-sysvmsg-time64 > - nanosleep tst-cpuclock{12}-time64, > tst-mqueue8-time64, > tst-clock-time64 > - nftw / ftw ftwtest-time64 > - ntp_adjtime > - ntp_gettime > - ntp_gettimex > - ppoll tst-ppoll-time64 > - pselect tst-pselect-time64 > - recvmmsg tst-cancel4_2-time64 > - sched_rr_get_interval tst-sched_rr_get_interval-time64 > - select > - semctl test-sysvsem-time64 > - semtimedop test-sysvsem-time64 > - setitimer tst-mqueue2-time64, > tst-itimer-timer64 > - settimeofday > - shmctl test-sysvshm-time64 > - sigtimedwait > - stat tst-stat-time64 > - time tst-mqueue{1248}-time64 > - timegm tst-timegm-time64 > - timer_gettime tst-timer4-time64 > - timer_settime tst-timer4-time64 > - timerfd_gettime tst-timerfd-time64 > - timerfd_settime tst-timerfd-time64 > - timespec_get tst-timespec_get-time64 > - utime tst-utime-time64 > - utimensat tst-utimensat-time64 > - utimes tst-utimes-time64 > - wait3 tst-wait3-time64 > - wait4 tst-wait4-time64 >=20 > * libpthread: > - cnd_timedwait tst-cnd-timedwait-time64 > - mtx_timedlock tst-mtx-timedlock-time64 > - pthread_clockjoin_np tst-join14-time64 > - pthread_cond_clockwait tst-cond11-time64 > - pthread_cond_timedwait tst-abstime-time64 > - pthread_mutex_clocklock tst-abstime-time64 > - pthread_mutex_timedlock tst-abstime-time64 > - pthread_rwlock_clockrdlock tst-abstime-time64, > tst-rwlock14-time64 > - pthread_rwlock_clockwrlock tst-abstime-time64, > tst-rwlock14-time64 > - pthread_rwlock_timedrdlock tst-abstime-time64, > tst-rwlock14-time64 > - pthread_rwlock_timedwrlock tst-abstime-time64, > tst-rwlock14-time64 > - pthread_timedjoin_np tst-join14-time64 > - sem_clockwait tst-sem5-time64 > - sem_timedwait tst-sem5-time64 > - thrd_sleep tst-thrd-sleep-time64 >=20 > * librt: > - aio_suspend tst-aio6-time64 > - mq_timedreceive tst-mqueue{1248}-time64 > - mq_timedsend tst-mqueue{1248}-time64 > - timer_gettime tst-timer4-time64 > - timer_settime tst-timer4-time64 >=20 > * libanl: > - gai_suspend > --- > Makeconfig | 14 +++ > Makerules | 18 +++- > io/Makefile | 16 ++- > io/ftwtest-time64.c | 1 + > 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 + misc/Makefile | 2 + > misc/tst-pselect-time64.c | 1 + > nptl/Makefile | 3 + > nptl/tst-cancel4_2-time64.c | 1 + > posix/Makefile | 2 + > posix/tst-gnuglob64-time64.c | 7 ++ > posix/tst-sched_rr_get_interval-time64.c | 1 + > posix/tst-wait3-time64.c | 1 + > posix/tst-wait4-time64.c | 1 + > rt/Makefile | 9 ++ > 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 + > sysdeps/pthread/Makefile | 10 ++ > 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/unix/sysv/linux/Makefile | 8 ++ > sysdeps/unix/sysv/linux/Versions | 4 +- > 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-lutimes-time64.c | 2 + > 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 +- > sysvipc/Makefile | 2 + > sysvipc/test-sysvmsg-time64.c | 1 + > sysvipc/test-sysvsem-time64.c | 1 + > sysvipc/test-sysvshm-time64.c | 1 + > time/Makefile | 15 +++ > 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-gmtime-time64.c | 1 + > time/tst-itimer-time64.c | 1 + > time/tst-mktime4-time64.c | 1 + > time/tst-timegm-time64.c | 1 + > time/tst-timespec_get-time64.c | 1 + > time/tst-y2039-time64.c | 1 + > time/tst-y2039.c | 10 ++ > 68 files changed, 346 insertions(+), 24 deletions(-) > 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 misc/tst-pselect-time64.c > create mode 100644 nptl/tst-cancel4_2-time64.c > create mode 100644 posix/tst-gnuglob64-time64.c > create mode 100644 posix/tst-sched_rr_get_interval-time64.c > create mode 100644 posix/tst-wait3-time64.c > 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 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/tst-futimens-time64.c > create mode 100644 sysdeps/unix/sysv/linux/tst-futimes-time64.c > create mode 100644 sysdeps/unix/sysv/linux/tst-lutimes-time64.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 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-itimer-time64.c > create mode 100644 time/tst-mktime4-time64.c > create mode 100644 time/tst-timegm-time64.c > create mode 100644 time/tst-timespec_get-time64.c > create mode 100644 time/tst-y2039-time64.c >=20 > diff --git a/Makeconfig b/Makeconfig > index 0a4811b5e5..e12ee30eca 100644 > --- a/Makeconfig > +++ b/Makeconfig > @@ -1227,6 +1227,20 @@ $(common-objpfx)versions.stmp: > $(common-objpfx)Versions.all \ touch $@ > endif # avoid-generated > endif # $(build-shared) =3D yes > + > +-include $(common-objpfx)time64-compat.mk > +postclean-generated +=3D time64-compat.mk > + > +$(common-objpfx)time64-compat.mk: $(sysd-versions-force) \ > + $(common-objpfx)time64-compat.i > + sed '/^[ ]*#/d;/^[ ]*$$/d' $< > $@T > + mv -f $@T $@ > +$(common-objpfx)time64-compat.i: $(..)Makeconfig > + printf "#include \n#ifdef > TIME64_NON_DEFAULT\nhave-time64-compat =3D yes\n#endif" \ > + | $(CC) -E -undef $(CPPFLAGS) -x assembler-with-cpp - > $@T > + mv -f $@T $@ > + > + > endif # sysd-sorted-done > =20 > # The name under which the run-time dynamic linker is installed. > diff --git a/Makerules b/Makerules > index fc5251ffad..f4f641bb26 100644 > --- a/Makerules > +++ b/Makerules > @@ -771,7 +771,8 @@ endif > $(patsubst %.o,%.d,$(filter %.o,$(extra-objs:.os=3D.o))) \ > $(patsubst %.oS,%.d,$(filter %.oS,$(extra-objs))) \ > $(patsubst %.o,%.d,$(filter > %.o,$(extra-test-objs:.os=3D.o))) \ > - $(addsuffix .d,$(tests) $(tests-internal) $(xtests) > $(test-srcs)) > + $(addsuffix .d,$(tests) $(tests-internal) $(xtests) \ > + $(test-srcs) $(tests-time64) $(xtests-time64)) > ifeq ($(build-programs),yes) > +depfiles +=3D $(addsuffix .d,$(others) $(sysdep-others)) > endif > @@ -1286,6 +1287,21 @@ check: tests > .PHONY: xcheck > xcheck: xtests > =20 > +# Handle tests-time64 and xtests-time64 that should built with LFS > +# and 64-bit time support. > +include $(o-iterator) > +define o-iterator-doit > +$(foreach f,$(tests-time64) $(xtests-time64),\ > + $(objpfx)$(f)$(o)): CFLAGS +=3D -D_TIME_BITS=3D64 > -D_FILE_OFFSET_BITS=3D64 +endef > +object-suffixes-left :=3D $(all-object-suffixes) > +include $(o-iterator) > + > +ifeq ($(have-time64-compat),yes) > +tests +=3D $(foreach t,$(tests-time64),$(t)) > +xtests +=3D $(foreach t,$(xtests-time64),$(t)) > +endif > + > # The only difference between MODULE_NAME=3Dtestsuite and > MODULE_NAME=3Dnonlib is # that almost all internal declarations from > config.h, libc-symbols.h, and # include/*.h are not available to > 'testsuite' code, but are to 'nonlib' code. diff --git a/io/Makefile > b/io/Makefile index 6c637f7c6d..a39f0ecfc1 100644 > --- a/io/Makefile > +++ b/io/Makefile > @@ -59,7 +59,7 @@ routines :=3D > \ ftw64-time64 > =20 > others :=3D pwd > -test-srcs :=3D ftwtest > +test-srcs :=3D ftwtest ftwtest-time64 > tests :=3D test-utime test-stat test-stat2 test-lfs > tst-getcwd \ tst-fcntl bug-ftw1 bug-ftw2 bug-ftw3 bug-ftw4 > tst-statvfs \ tst-openat tst-unlinkat tst-fstatat tst-futimesat \ > @@ -72,12 +72,18 @@ tests :=3D test-utime test-stat > test-stat2 test-lfs tst-getcwd \ tst-ftw-lnk > tst-file_change_detection tst-lchmod \ tst-ftw-bz26353 tst-utimensat > =20 > +tests-time64 :=3D tst-fts-time64 \ > + tst-stat-time64 \ > + tst-futimesat-time64 \ > + tst-utimensat-time64 > + > # Likewise for statx, but we do not need static linking here. > tests-internal +=3D tst-statx > tests-static +=3D tst-statx > =20 > ifeq ($(run-built-tests),yes) > -tests-special +=3D $(objpfx)ftwtest.out > +tests-special +=3D $(objpfx)ftwtest.out \ > + $(objpfx)ftwtest-time64.out > endif > =20 > include ../Rules > @@ -118,8 +124,14 @@ tst-statvfs-ARGS =3D $(objpfx)tst-statvfs > tst-statvfs.c /tmp=20 > tst-open-tmpfile-ARGS =3D --test-dir=3D$(objpfx) > =20 > +CFLAGS-ftwtest-time64.c +=3D -D_TIME_BITS=3D64 -D_FILE_OFFSET_BITS=3D64 > + > ifeq ($(run-built-tests),yes) > $(objpfx)ftwtest.out: ftwtest-sh $(objpfx)ftwtest > $(SHELL) $< $(common-objpfx) '$(test-program-cmd)' > $@; \ > $(evaluate-test) > + > +$(objpfx)ftwtest-time64.out: ftwtest-sh $(objpfx)ftwtest-time64 > + $(SHELL) $< $(common-objpfx) '$(test-program-cmd)' > $@; \ > + $(evaluate-test) > endif > diff --git a/io/ftwtest-time64.c b/io/ftwtest-time64.c > new file mode 100644 > index 0000000000..67f1c46826 > --- /dev/null > +++ b/io/ftwtest-time64.c > @@ -0,0 +1 @@ > +#include "ftwtest.c" > diff --git a/io/tst-fts-time64.c b/io/tst-fts-time64.c > new file mode 100644 > index 0000000000..a4a41fe1cf > --- /dev/null > +++ b/io/tst-fts-time64.c > @@ -0,0 +1 @@ > +#include "tst-fts.c" > diff --git a/io/tst-futimesat-time64.c b/io/tst-futimesat-time64.c > new file mode 100644 > index 0000000000..f6c0500eef > --- /dev/null > +++ b/io/tst-futimesat-time64.c > @@ -0,0 +1,4 @@ > +#define struct_stat struct stat > +#define fstat fstat > +#define fstatat fstatat > +#include "io/tst-futimesat.c" > diff --git a/io/tst-futimesat.c b/io/tst-futimesat.c > index af58ad06dd..c32ab2b668 100644 > --- a/io/tst-futimesat.c > +++ b/io/tst-futimesat.c > @@ -1,4 +1,23 @@ > +/* futimesat basic tests. > + Copyright (C) 2021 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be > useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + . */ > + > #include > +#include > #include > #include > #include > @@ -7,19 +26,19 @@ > #include > #include > =20 > +#include > +#include > =20 > -static void prepare (void); > -#define PREPARE(argc, argv) prepare () > - > -static int do_test (void); > -#define TEST_FUNCTION do_test () > - > -#include "../test-skeleton.c" > +#ifndef struct_stat > +# define struct_stat struct stat64 > +# define fstat fstat64 > +# define fstatat fstatat64 > +#endif > =20 > static int dir_fd; > =20 > static void > -prepare (void) > +prepare (int argc, char *argv[]) > { > size_t test_dir_len =3D strlen (test_dir); > static const char dir_name[] =3D "/tst-futimesat.XXXXXX"; > @@ -48,7 +67,7 @@ prepare (void) > exit (1); > } > } > - > +#define PREPARE prepare > =20 > static int > do_test (void) > @@ -98,8 +117,8 @@ do_test (void) > write (fd, "hello", 5); > puts ("file created"); > =20 > - struct stat64 st1; > - if (fstat64 (fd, &st1) !=3D 0) > + struct_stat st1; > + if (fstat (fd, &st1) !=3D 0) > { > puts ("fstat64 failed"); > return 1; > @@ -118,8 +137,8 @@ do_test (void) > return 1; > } > =20 > - struct stat64 st2; > - if (fstatat64 (dir_fd, "some-file", &st2, 0) !=3D 0) > + struct_stat st2; > + if (fstatat (dir_fd, "some-file", &st2, 0) !=3D 0) > { > puts ("fstatat64 failed"); > return 1; > @@ -146,3 +165,5 @@ do_test (void) > =20 > return 0; > } > + > +#include > diff --git a/io/tst-stat-time64.c b/io/tst-stat-time64.c > new file mode 100644 > index 0000000000..c10fe1284a > --- /dev/null > +++ b/io/tst-stat-time64.c > @@ -0,0 +1,102 @@ > +/* Basic test of stat with 64 bit time_t interfaces. > + Copyright (C) 2021 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be > useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + . */ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +/* The idea of the test is check whether the 64 bit time_t stat > implementation > + returns the expected value for comparable fields, so it does not > really > + matter whether statx uses a fallback implementation or not. */ > + > +static void > +stat_check (int fd, const char *path, struct stat *st) > +{ > + TEST_COMPARE (stat (path, st), 0); > +} > + > +static void > +lstat_check (int fd, const char *path, struct stat *st) > +{ > + TEST_COMPARE (lstat (path, st), 0); > +} > + > +static void > +fstat_check (int fd, const char *path, struct stat *st) > +{ > + TEST_COMPARE (fstat (fd, st), 0); > +} > + > +static void > +fstatat_check (int fd, const char *path, struct stat *st) > +{ > + TEST_COMPARE (fstatat (fd, path, st, 0), 0); > +} > + > +typedef void (*test_t)(int, const char *path, struct stat *); > + > +static int > +do_test (void) > +{ > + char *path; > + int fd =3D create_temp_file ("tst-statx-", &path); > + TEST_VERIFY_EXIT (fd >=3D 0); > + support_write_file_string (path, "abc"); > + > + struct statx stx; > + TEST_COMPARE (statx (fd, path, 0, STATX_BASIC_STATS, &stx), 0); > + > + for (test_t *test =3D (test_t[]) { stat_check, lstat_check, > fstat_check, > + fstatat_check, NULL }; > + *test !=3D NULL; test++) > + { > + struct stat st; > + (*test) (fd, path, &st); > + > + TEST_COMPARE (stx.stx_dev_major, major (st.st_dev)); > + TEST_COMPARE (stx.stx_dev_minor, minor (st.st_dev)); > + TEST_COMPARE (stx.stx_ino, st.st_ino); > + TEST_COMPARE (stx.stx_mode, st.st_mode); > + TEST_COMPARE (stx.stx_nlink, st.st_nlink); > + TEST_COMPARE (stx.stx_uid, st.st_uid); > + TEST_COMPARE (stx.stx_gid, st.st_gid); > + TEST_COMPARE (stx.stx_rdev_major, major (st.st_rdev)); > + TEST_COMPARE (stx.stx_rdev_minor, minor (st.st_rdev)); > + TEST_COMPARE (stx.stx_blksize, st.st_blksize); > + TEST_COMPARE (stx.stx_blocks, st.st_blocks); > + > + TEST_COMPARE (stx.stx_ctime.tv_sec, st.st_ctim.tv_sec); > + TEST_COMPARE (stx.stx_ctime.tv_nsec, st.st_ctim.tv_nsec); > + TEST_COMPARE (stx.stx_mtime.tv_sec, st.st_mtim.tv_sec); > + TEST_COMPARE (stx.stx_mtime.tv_nsec, st.st_mtim.tv_nsec); > + } > + > + xclose (fd); > + free (path); > + > + return 0; > +} > + > +#include > diff --git a/io/tst-utimensat-time64.c b/io/tst-utimensat-time64.c > new file mode 100644 > index 0000000000..7ac7d8df1d > --- /dev/null > +++ b/io/tst-utimensat-time64.c > @@ -0,0 +1,2 @@ > +#define struct_stat struct stat > +#include "tst-utimensat.c" > diff --git a/misc/Makefile b/misc/Makefile > index cfc15355d6..a8363d4b76 100644 > --- a/misc/Makefile > +++ b/misc/Makefile > @@ -90,6 +90,8 @@ tests :=3D tst-dirname tst-tsearch tst-fdset > tst-mntent tst-hsearch \ tst-ldbl-warn tst-ldbl-error tst-dbl-efgcvt > tst-ldbl-efgcvt \ tst-mntent-autofs tst-syscalls tst-mntent-escape > =20 > +tests-time64 :=3D tst-pselect-time64 > + > # Tests which need libdl. > ifeq (yes,$(build-shared)) > tests +=3D tst-gethostid > diff --git a/misc/tst-pselect-time64.c b/misc/tst-pselect-time64.c > new file mode 100644 > index 0000000000..15a1e49292 > --- /dev/null > +++ b/misc/tst-pselect-time64.c > @@ -0,0 +1 @@ > +#include "tst-pselect.c" > diff --git a/nptl/Makefile b/nptl/Makefile > index 33766eaf7a..d1c786e88b 100644 > --- a/nptl/Makefile > +++ b/nptl/Makefile > @@ -380,6 +380,9 @@ xtests =3D tst-setuid1 tst-setuid1-static > tst-setuid2 \ tst-mutexpp1 tst-mutexpp6 tst-mutexpp10 tst-setgroups \ > tst-mutexpp5 tst-mutexpp9 > =20 > +tests-time64 :=3D \ > + tst-cancel4_2-time64 > + > # This test can run into task limits because of a linux kernel bug > # and then cause the make process to fail too, see bug 24537. > xtests +=3D tst-eintr1 > diff --git a/nptl/tst-cancel4_2-time64.c b/nptl/tst-cancel4_2-time64.c > new file mode 100644 > index 0000000000..4ac086a312 > --- /dev/null > +++ b/nptl/tst-cancel4_2-time64.c > @@ -0,0 +1 @@ > +#include "tst-cancel4_2.c" > diff --git a/posix/Makefile b/posix/Makefile > index aba66efde8..e246ff1d14 100644 > --- a/posix/Makefile > +++ b/posix/Makefile > @@ -109,7 +109,9 @@ tests-internal :=3D bug-regex5 bug-regex20 > bug-regex33 \ tst-rfc3484 tst-rfc3484-2 tst-rfc3484-3 \ > tst-glob_lstat_compat tst-spawn4-compat > tests-container :=3D bug-ga2 > +tests-time64 :=3D tst-wait4-time64 tst-wait3-time64 > tst-gnuglob64-time64 xtests :=3D tst-getaddrinfo4 > tst-getaddrinfo5 tst-sched_rr_get_interval +xtests-time64 :=3D > tst-sched_rr_get_interval-time64 ifeq (yes,$(build-shared)) > test-srcs :=3D globtest > tests +=3D wordexp-test tst-exec tst-spawn tst-spawn2 > tst-spawn3 diff --git a/posix/tst-gnuglob64-time64.c > b/posix/tst-gnuglob64-time64.c new file mode 100644 > index 0000000000..00922bcdc6 > --- /dev/null > +++ b/posix/tst-gnuglob64-time64.c > @@ -0,0 +1,7 @@ > +#define GLOB_FUNC glob > +#define GLOB_TYPE glob_t > +#define GLOBFREE_FUNC globfree > +#define DIRENT_STRUCT dirent > +#define STAT_STRUCT stat > + > +#include "tst-gnuglob-skeleton.c" > diff --git a/posix/tst-sched_rr_get_interval-time64.c > b/posix/tst-sched_rr_get_interval-time64.c new file mode 100644 > index 0000000000..f4e66d2939 > --- /dev/null > +++ b/posix/tst-sched_rr_get_interval-time64.c > @@ -0,0 +1 @@ > +#include "tst-sched_rr_get_interval.c" > diff --git a/posix/tst-wait3-time64.c b/posix/tst-wait3-time64.c > new file mode 100644 > index 0000000000..2837bc7a9e > --- /dev/null > +++ b/posix/tst-wait3-time64.c > @@ -0,0 +1 @@ > +#include "tst-wait3.c" > diff --git a/posix/tst-wait4-time64.c b/posix/tst-wait4-time64.c > new file mode 100644 > index 0000000000..12543b270f > --- /dev/null > +++ b/posix/tst-wait4-time64.c > @@ -0,0 +1 @@ > +#include "tst-wait4.c" > diff --git a/rt/Makefile b/rt/Makefile > index 7b374f2073..3ce98297f9 100644 > --- a/rt/Makefile > +++ b/rt/Makefile > @@ -49,6 +49,15 @@ tests :=3D tst-shm tst-timer tst-timer2 \ > tst-shm-cancel > tests-internal :=3D tst-timer-sigmask > =20 > +tests-time64 :=3D \ > + tst-aio6-time64 \ > + tst-cpuclock2-time64 \ > + tst-mqueue1-time64 \ > + tst-mqueue2-time64 \ > + tst-mqueue4-time64 \ > + tst-mqueue8-time64 \ > + tst-timer4-time64 > + > extra-libs :=3D librt > extra-libs-others :=3D $(extra-libs) > =20 > diff --git a/rt/tst-aio6-time64.c b/rt/tst-aio6-time64.c > new file mode 100644 > index 0000000000..a386a577ec > --- /dev/null > +++ b/rt/tst-aio6-time64.c > @@ -0,0 +1 @@ > +#include "tst-aio6.c" > diff --git a/rt/tst-cpuclock2-time64.c b/rt/tst-cpuclock2-time64.c > new file mode 100644 > index 0000000000..05775522bb > --- /dev/null > +++ b/rt/tst-cpuclock2-time64.c > @@ -0,0 +1 @@ > +#include "tst-cpuclock2.c" > diff --git a/rt/tst-cpuclock2.c b/rt/tst-cpuclock2.c > index c1c7ed2ad8..eebc3609d0 100644 > --- a/rt/tst-cpuclock2.c > +++ b/rt/tst-cpuclock2.c > @@ -21,7 +21,11 @@ > =20 > #if (_POSIX_THREADS - 0) <=3D 0 > =20 > -# define TEST_FUNCTION 0 > +static int > +do_test () > +{ > + return 0; > +} > =20 > #else > =20 > @@ -330,7 +334,6 @@ do_test (void) > =20 > return result; > } > -# define TEST_FUNCTION do_test () > #endif > =20 > -#include "../test-skeleton.c" > +#include > diff --git a/rt/tst-mqueue1-time64.c b/rt/tst-mqueue1-time64.c > new file mode 100644 > index 0000000000..9c600a9a97 > --- /dev/null > +++ b/rt/tst-mqueue1-time64.c > @@ -0,0 +1 @@ > +#include "tst-mqueue1.c" > diff --git a/rt/tst-mqueue2-time64.c b/rt/tst-mqueue2-time64.c > new file mode 100644 > index 0000000000..9d49f0b196 > --- /dev/null > +++ b/rt/tst-mqueue2-time64.c > @@ -0,0 +1 @@ > +#include "tst-mqueue2.c" > diff --git a/rt/tst-mqueue4-time64.c b/rt/tst-mqueue4-time64.c > new file mode 100644 > index 0000000000..c23a228dc4 > --- /dev/null > +++ b/rt/tst-mqueue4-time64.c > @@ -0,0 +1 @@ > +#include "tst-mqueue4.c" > diff --git a/rt/tst-mqueue8-time64.c b/rt/tst-mqueue8-time64.c > new file mode 100644 > index 0000000000..972637f7f5 > --- /dev/null > +++ b/rt/tst-mqueue8-time64.c > @@ -0,0 +1 @@ > +#include "tst-mqueue8.c" > diff --git a/rt/tst-timer4-time64.c b/rt/tst-timer4-time64.c > new file mode 100644 > index 0000000000..e47a593f10 > --- /dev/null > +++ b/rt/tst-timer4-time64.c > @@ -0,0 +1 @@ > +#include "tst-timer4.c" > diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile > index 53b65ef349..31df6f97e5 100644 > --- a/sysdeps/pthread/Makefile > +++ b/sysdeps/pthread/Makefile > @@ -109,6 +109,16 @@ tests +=3D tst-cnd-basic tst-mtx-trylock > tst-cnd-broadcast \ tst-unwind-thread \ > tst-pt-vfork1 tst-pt-vfork2 tst-vfork1x tst-vfork2x \ > =20 > +tests-time64 :=3D \ > + tst-abstime-time64 \ > + tst-cnd-timedwait-time64 \ > + tst-cond11-time64 \ > + tst-join14-time64 \ > + tst-mtx-timedlock-time64 \ > + tst-rwlock14-time64 \ > + tst-sem5-time64 \ > + tst-thrd-sleep-time64 \ > + > =20 > # Files which must not be linked with libpthread. > tests-nolibpthread =3D tst-unload > diff --git a/sysdeps/pthread/tst-abstime-time64.c > b/sysdeps/pthread/tst-abstime-time64.c new file mode 100644 > index 0000000000..2fc77cb365 > --- /dev/null > +++ b/sysdeps/pthread/tst-abstime-time64.c > @@ -0,0 +1 @@ > +#include "tst-abstime.c" > diff --git a/sysdeps/pthread/tst-cnd-timedwait-time64.c > b/sysdeps/pthread/tst-cnd-timedwait-time64.c new file mode 100644 > index 0000000000..9b2abfd277 > --- /dev/null > +++ b/sysdeps/pthread/tst-cnd-timedwait-time64.c > @@ -0,0 +1 @@ > +#include "tst-cnd-timedwait.c" > diff --git a/sysdeps/pthread/tst-cond11-time64.c > b/sysdeps/pthread/tst-cond11-time64.c new file mode 100644 > index 0000000000..9bccb8ec8b > --- /dev/null > +++ b/sysdeps/pthread/tst-cond11-time64.c > @@ -0,0 +1 @@ > +#include "tst-cond11.c" > diff --git a/sysdeps/pthread/tst-join14-time64.c > b/sysdeps/pthread/tst-join14-time64.c new file mode 100644 > index 0000000000..bed784ee24 > --- /dev/null > +++ b/sysdeps/pthread/tst-join14-time64.c > @@ -0,0 +1 @@ > +#include "tst-join14.c" > diff --git a/sysdeps/pthread/tst-mtx-timedlock-time64.c > b/sysdeps/pthread/tst-mtx-timedlock-time64.c new file mode 100644 > index 0000000000..b3393c99ef > --- /dev/null > +++ b/sysdeps/pthread/tst-mtx-timedlock-time64.c > @@ -0,0 +1 @@ > +#include "tst-mtx-timedlock.c" > diff --git a/sysdeps/pthread/tst-rwlock14-time64.c > b/sysdeps/pthread/tst-rwlock14-time64.c new file mode 100644 > index 0000000000..ae9b1912cf > --- /dev/null > +++ b/sysdeps/pthread/tst-rwlock14-time64.c > @@ -0,0 +1 @@ > +#include "tst-rwlock14.c" > diff --git a/sysdeps/pthread/tst-sem5-time64.c > b/sysdeps/pthread/tst-sem5-time64.c new file mode 100644 > index 0000000000..89c2a14f94 > --- /dev/null > +++ b/sysdeps/pthread/tst-sem5-time64.c > @@ -0,0 +1 @@ > +#include "tst-sem5.c" > diff --git a/sysdeps/pthread/tst-thrd-sleep-time64.c > b/sysdeps/pthread/tst-thrd-sleep-time64.c new file mode 100644 > index 0000000000..02837bd19f > --- /dev/null > +++ b/sysdeps/pthread/tst-thrd-sleep-time64.c > @@ -0,0 +1 @@ > +#include "tst-thrd-sleep.c" > diff --git a/sysdeps/unix/sysv/linux/Makefile > b/sysdeps/unix/sysv/linux/Makefile index fc2a17307c..94ee85d124 100644 > --- a/sysdeps/unix/sysv/linux/Makefile > +++ b/sysdeps/unix/sysv/linux/Makefile > @@ -115,6 +115,14 @@ tests +=3D tst-clone tst-clone2 tst-clone3 > tst-fanotify tst-personality \ tst-futimes tst-lutimes > =20 > tests-internal +=3D tst-ofdlocks-compat tst-sigcontext-get_pc > +tests-time64 +=3D \ > + tst-futimes-time64\ > + tst-futimens-time64 \ > + tst-lutimes-time64 \ > + tst-ppoll-time64 \ > + tst-utime-time64 \ > + tst-utimes-time64 \ > + tst-timerfd-time64 > =20 > CFLAGS-tst-sigcontext-get_pc.c =3D -fasynchronous-unwind-tables > =20 > diff --git a/sysdeps/unix/sysv/linux/Versions > b/sysdeps/unix/sysv/linux/Versions index b53391f613..982b94e625 100644 > --- a/sysdeps/unix/sysv/linux/Versions > +++ b/sysdeps/unix/sysv/linux/Versions > @@ -237,7 +237,9 @@ libc { > __timegm64; > __timespec_get64; > __utimensat64; > - __utimes64; > + __utimes64; > + __localtime64; > + __localtime64_r; > # misc > __ntp_gettime64; > __ntp_gettimex64; > diff --git a/sysdeps/unix/sysv/linux/tst-futimens-time64.c > b/sysdeps/unix/sysv/linux/tst-futimens-time64.c new file mode 100644 > index 0000000000..88fcb38489 > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/tst-futimens-time64.c > @@ -0,0 +1,2 @@ > +#define struct_stat struct stat > +#include "tst-futimens.c" > diff --git a/sysdeps/unix/sysv/linux/tst-futimens.c > b/sysdeps/unix/sysv/linux/tst-futimens.c index 8f48cfee63..b5b240abf1 > 100644 --- a/sysdeps/unix/sysv/linux/tst-futimens.c > +++ b/sysdeps/unix/sysv/linux/tst-futimens.c > @@ -24,10 +24,14 @@ > #include > #include > =20 > +#ifndef struct_stat > +# define struct_stat struct stat64 > +#endif > + > static int temp_fd =3D -1; > =20 > /* struct timespec array with Y2038 threshold minus 2 and 1 seconds. > */ -const struct timespec t1[2] =3D { { 0x7FFFFFFE, 0 }, { > 0x7FFFFFFF, 0 } }; +const static struct timespec t1[2] =3D { { > 0x7FFFFFFE, 0 }, { 0x7FFFFFFF, 0 } };=20 > /* struct timespec array with Y2038 threshold plus 1 and 2 seconds. > */ const struct timespec t2[2] =3D { { 0x80000001ULL, 0 }, { > 0x80000002ULL, 0 } }; @@ -46,7 +50,7 @@ do_prepare (int argc, char > *argv[]) static int > test_futimens_helper (const struct timespec *ts) > { > - struct stat64 st; > + struct_stat st; > int result; > time_t t; > =20 > diff --git a/sysdeps/unix/sysv/linux/tst-futimes-time64.c > b/sysdeps/unix/sysv/linux/tst-futimes-time64.c new file mode 100644 > index 0000000000..d489c265d1 > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/tst-futimes-time64.c > @@ -0,0 +1,2 @@ > +#define struct_stat struct stat > +#include "tst-futimes.c" > diff --git a/sysdeps/unix/sysv/linux/tst-lutimes-time64.c > b/sysdeps/unix/sysv/linux/tst-lutimes-time64.c new file mode 100644 > index 0000000000..06caec0a91 > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/tst-lutimes-time64.c > @@ -0,0 +1,2 @@ > +#define struct_stat struct stat > +#include "tst-lutimes.c" > diff --git a/sysdeps/unix/sysv/linux/tst-ppoll-time64.c > b/sysdeps/unix/sysv/linux/tst-ppoll-time64.c new file mode 100644 > index 0000000000..96ee2faee3 > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/tst-ppoll-time64.c > @@ -0,0 +1 @@ > +#include "tst-ppoll.c" > diff --git a/sysdeps/unix/sysv/linux/tst-timerfd-time64.c > b/sysdeps/unix/sysv/linux/tst-timerfd-time64.c new file mode 100644 > index 0000000000..bb17f48139 > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/tst-timerfd-time64.c > @@ -0,0 +1 @@ > +#include "tst-timerfd.c" > diff --git a/sysdeps/unix/sysv/linux/tst-utime-time64.c > b/sysdeps/unix/sysv/linux/tst-utime-time64.c new file mode 100644 > index 0000000000..eb62f59126 > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/tst-utime-time64.c > @@ -0,0 +1,2 @@ > +#define struct_stat struct stat > +#include "tst-utime.c" > diff --git a/sysdeps/unix/sysv/linux/tst-utime.c > b/sysdeps/unix/sysv/linux/tst-utime.c index 6735421657..d413f130e8 > 100644 --- a/sysdeps/unix/sysv/linux/tst-utime.c > +++ b/sysdeps/unix/sysv/linux/tst-utime.c > @@ -26,6 +26,10 @@ > #include > #include > =20 > +#ifndef struct_stat > +# define struct_stat struct stat64 > +#endif > + > static int temp_fd =3D -1; > char *testfile; > =20 > @@ -49,7 +53,7 @@ do_prepare (int argc, char *argv[]) > static int > test_utime_helper (const struct utimbuf *ut) > { > - struct stat64 st; > + struct_stat st; > int result; > time_t t; > =20 > diff --git a/sysdeps/unix/sysv/linux/tst-utimes-time64.c > b/sysdeps/unix/sysv/linux/tst-utimes-time64.c new file mode 100644 > index 0000000000..234ec02541 > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/tst-utimes-time64.c > @@ -0,0 +1,2 @@ > +#define struct_stat struct stat > +#include "tst-utimes.c" > diff --git a/sysdeps/unix/sysv/linux/tst-utimes.c > b/sysdeps/unix/sysv/linux/tst-utimes.c index 8c7b006a22..c521c89dfa > 100644 --- a/sysdeps/unix/sysv/linux/tst-utimes.c > +++ b/sysdeps/unix/sysv/linux/tst-utimes.c > @@ -25,6 +25,10 @@ > #include > #include > =20 > +#ifndef struct_stat > +# define struct_stat struct stat64 > +#endif > + > static int temp_fd =3D -1; > char *testfile; > =20 > @@ -50,7 +54,7 @@ do_prepare (int argc, char *argv[]) > static int > test_utime_helper (const struct timeval *tv) > { > - struct stat64 st; > + struct_stat st; > int result; > time_t t; > =20 > diff --git a/sysvipc/Makefile b/sysvipc/Makefile > index a534791928..86911803b5 100644 > --- a/sysvipc/Makefile > +++ b/sysvipc/Makefile > @@ -32,6 +32,8 @@ routines :=3D ftok \ > =20 > tests :=3D test-sysvmsg test-sysvsem test-sysvshm > =20 > +tests-time64 :=3D test-sysvmsg-time64 test-sysvsem-time64 > test-sysvshm-time64 + > include ../Rules > =20 > CFLAGS-msgrcv.c +=3D -fexceptions -fasynchronous-unwind-tables > diff --git a/sysvipc/test-sysvmsg-time64.c > b/sysvipc/test-sysvmsg-time64.c new file mode 100644 > index 0000000000..c23e0c337e > --- /dev/null > +++ b/sysvipc/test-sysvmsg-time64.c > @@ -0,0 +1 @@ > +#include "test-sysvmsg.c" > diff --git a/sysvipc/test-sysvsem-time64.c > b/sysvipc/test-sysvsem-time64.c new file mode 100644 > index 0000000000..05c95068cd > --- /dev/null > +++ b/sysvipc/test-sysvsem-time64.c > @@ -0,0 +1 @@ > +#include "test-sysvsem.c" > diff --git a/sysvipc/test-sysvshm-time64.c > b/sysvipc/test-sysvshm-time64.c new file mode 100644 > index 0000000000..8e2963f563 > --- /dev/null > +++ b/sysvipc/test-sysvshm-time64.c > @@ -0,0 +1 @@ > +#include "test-sysvshm.c" > diff --git a/time/Makefile b/time/Makefile > index f14022b334..fee206d3c7 100644 > --- a/time/Makefile > +++ b/time/Makefile > @@ -51,6 +51,21 @@ tests :=3D test_time clocktest tst-posixtz > tst-strptime tst_wcsftime \ tst-adjtime tst-ctime tst-difftime > tst-mktime4 tst-itimer \ tst-gmtime tst-timegm tst-timespec_get > =20 > +tests-time64 :=3D \ > + tst-adjtime-time64 \ > + tst-clock-time64 \ > + tst-clock2-time64 \ > + tst-clock_nanosleep-time64 \ > + tst-cpuclock1-time64 \ > + tst-ctime-time64 \ > + tst-difftime-time64 \ > + tst-gmtime-time64 \ > + tst-itimer-time64 \ > + tst-mktime4-time64 \ > + tst-timegm-time64 \ > + tst-timespec_get-time64 \ > + tst-y2039-time64 > + > include ../Rules > =20 > ifeq ($(run-built-tests),yes) > diff --git a/time/tst-adjtime-time64.c b/time/tst-adjtime-time64.c > new file mode 100644 > index 0000000000..097d6efc4b > --- /dev/null > +++ b/time/tst-adjtime-time64.c > @@ -0,0 +1 @@ > +#include > diff --git a/time/tst-clock-time64.c b/time/tst-clock-time64.c > new file mode 100644 > index 0000000000..a1349678c8 > --- /dev/null > +++ b/time/tst-clock-time64.c > @@ -0,0 +1 @@ > +#include "tst-clock.c" > diff --git a/time/tst-clock2-time64.c b/time/tst-clock2-time64.c > new file mode 100644 > index 0000000000..897f47b287 > --- /dev/null > +++ b/time/tst-clock2-time64.c > @@ -0,0 +1 @@ > +#include "tst-clock2.c" > diff --git a/time/tst-clock_nanosleep-time64.c > b/time/tst-clock_nanosleep-time64.c new file mode 100644 > index 0000000000..c8638aa3d2 > --- /dev/null > +++ b/time/tst-clock_nanosleep-time64.c > @@ -0,0 +1 @@ > +#include "tst-clock_nanosleep.c" > diff --git a/time/tst-cpuclock1-time64.c b/time/tst-cpuclock1-time64.c > new file mode 100644 > index 0000000000..5a7ffa27ac > --- /dev/null > +++ b/time/tst-cpuclock1-time64.c > @@ -0,0 +1 @@ > +#include "tst-cpuclock1.c" > diff --git a/time/tst-ctime-time64.c b/time/tst-ctime-time64.c > new file mode 100644 > index 0000000000..24a5ae98ed > --- /dev/null > +++ b/time/tst-ctime-time64.c > @@ -0,0 +1 @@ > +#include "tst-ctime.c" > diff --git a/time/tst-ctime.c b/time/tst-ctime.c > index e89a906bf8..884d69bfa0 100644 > --- a/time/tst-ctime.c > +++ b/time/tst-ctime.c > @@ -24,6 +24,7 @@ static int > do_test (void) > { > char *str; > + char strb[32]; > time_t t; > =20 > /* Use glibc time zone extension "TZ=3D:" to to guarantee that UTC > @@ -36,11 +37,21 @@ do_test (void) > str =3D ctime (&t); > TEST_COMPARE_STRING (str, "Thu Jan 1 00:00:00 1970\n"); > =20 > + /* Same as before but with ctime_r. */ > + str =3D ctime_r (&t, strb); > + TEST_VERIFY (str =3D=3D strb); > + TEST_COMPARE_STRING (str, "Thu Jan 1 00:00:00 1970\n"); > + > /* Check if the max time value for 32 bit time_t can be converted. > */ t =3D 0x7fffffff; > str =3D ctime (&t); > TEST_COMPARE_STRING (str, "Tue Jan 19 03:14:07 2038\n"); > =20 > + /* Same as before but with ctime_r. */ > + str =3D ctime_r (&t, strb); > + TEST_VERIFY (str =3D=3D strb); > + TEST_COMPARE_STRING (str, "Tue Jan 19 03:14:07 2038\n"); > + > /* Check if we run on port with 32 bit time_t size */ > time_t tov; > if (__builtin_add_overflow (t, 1, &tov)) > @@ -50,6 +61,11 @@ do_test (void) > str =3D ctime (&tov); > TEST_COMPARE_STRING (str, "Tue Jan 19 03:14:08 2038\n"); > =20 > + /* Same as before but with ctime_r. */ > + str =3D ctime_r (&tov, strb); > + TEST_VERIFY (str =3D=3D strb); > + TEST_COMPARE_STRING (str, "Tue Jan 19 03:14:08 2038\n"); > + > return 0; > } > =20 > diff --git a/time/tst-difftime-time64.c b/time/tst-difftime-time64.c > new file mode 100644 > index 0000000000..751ce6c483 > --- /dev/null > +++ b/time/tst-difftime-time64.c > @@ -0,0 +1 @@ > +#include "tst-difftime.c" > diff --git a/time/tst-gmtime-time64.c b/time/tst-gmtime-time64.c > new file mode 100644 > index 0000000000..0df11c1913 > --- /dev/null > +++ b/time/tst-gmtime-time64.c > @@ -0,0 +1 @@ > +#include "tst-gmtime.c" > diff --git a/time/tst-itimer-time64.c b/time/tst-itimer-time64.c > new file mode 100644 > index 0000000000..ddd2efa175 > --- /dev/null > +++ b/time/tst-itimer-time64.c > @@ -0,0 +1 @@ > +#include