From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-out.m-online.net (mail-out.m-online.net [IPv6:2001:a60:0:28:0:1:25:1]) by sourceware.org (Postfix) with ESMTPS id 81A21388A433 for ; Mon, 15 Feb 2021 09:46:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 81A21388A433 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 4DfK4x0Y0hz1rx7x; Mon, 15 Feb 2021 10:46:57 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.70]) by mail.m-online.net (Postfix) with ESMTP id 4DfK4w6Sg7z1qr73; Mon, 15 Feb 2021 10:46:56 +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 86puDex1Dw4x; Mon, 15 Feb 2021 10:46:54 +0100 (CET) X-Auth-Info: QlViC3s2Cn3ZCpM3G1Q6FadE/3eGvr08GSdkLcG84Rk= 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, 15 Feb 2021 10:46:54 +0100 (CET) Date: Mon, 15 Feb 2021 10:46:53 +0100 From: Lukasz Majewski To: Joseph Myers , Adhemerval Zanella , Florian Weimer Cc: Paul Eggert , Alistair Francis , Arnd Bergmann , Alistair Francis , GNU C Library , Carlos O'Donell , Florian Weimer , Zack Weinberg Subject: Re: [PATCH v4] tst: Provide test for difftime Message-ID: <20210215104653.4175bc07@jawa> In-Reply-To: <20210205115220.20059-1-lukma@denx.de> References: <20210205115220.20059-1-lukma@denx.de> 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_/q1ncsayyBM4VBJQ7/SnjLa6"; protocol="application/pgp-signature" X-Spam-Status: No, score=-14.9 required=5.0 tests=BAYES_00, BIGNUM_EMAILS, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, KAM_SHORT, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NONE, 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-List-Received-Date: Mon, 15 Feb 2021 09:47:00 -0000 --Sig_/q1ncsayyBM4VBJQ7/SnjLa6 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Dear Community, > This change adds new test to assess difftime's functionality by > adding some arbitrary offsets to current time_t value (read via > time). >=20 > If 64 bit time_t is supported, the same procedure is applied around > the threshold of Y2038 time overflow. >=20 > --- > Changes for v2: > - Remove FAIL_UNSUPPORTED() when sizeof (time_t) <=3D 4 >=20 > Changes for v3: > - Simplify the signature of test_difftime_helper (remove the start > argument) > - Use just some reproductible value of starting time_t instead of > calling time (NULL) >=20 > Changes for v4: > - Use __builtin_add_overflow instead of sizeof (time_t) > 4 to check > if time_t has overflowed. Are there any more comments regarding this test? Is it eligible for pulling? > --- > time/Makefile | 2 +- > time/tst-difftime.c | 56 > +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 > insertions(+), 1 deletion(-) create mode 100644 time/tst-difftime.c >=20 > diff --git a/time/Makefile b/time/Makefile > index 486fb02ecb..7de2ce0196 100644 > --- a/time/Makefile > +++ b/time/Makefile > @@ -51,7 +51,7 @@ tests :=3D test_time clocktest tst-posixtz > tst-strptime tst_wcsftime \ tst-clock tst-clock2 tst-clock_nanosleep > tst-cpuclock1 \ tst-adjtime tst-clock-y2038 tst-clock2-y2038 \ > tst-cpuclock1-y2038 tst-clock_nanosleep-y2038 > tst-clock_settime \ > - tst-clock_adjtime tst-ctime > + tst-clock_adjtime tst-ctime tst-difftime > =20 > include ../Rules > =20 > diff --git a/time/tst-difftime.c b/time/tst-difftime.c > new file mode 100644 > index 0000000000..262f3d1db7 > --- /dev/null > +++ b/time/tst-difftime.c > @@ -0,0 +1,56 @@ > +/* Test for difftime > + 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 > + > +static void > +test_difftime_helper (time_t t1, time_t t0, double exp_val) > +{ > + double sub =3D difftime (t1, t0); > + if (sub !=3D exp_val) > + FAIL_EXIT1 ("*** Difftime returned %f (expected %f)\n", sub, > exp_val); +} > + > +static int > +do_test (void) > +{ > + time_t t =3D 1383791700; /* Provide reproductible start value. */ > + > + /* Check if difftime works with current time. */ > + test_difftime_helper (t + 1800, t - 1800, 3600.0); > + test_difftime_helper (t - 1800, t + 1800, -3600.0); > + > + t =3D 0x7FFFFFFF; > + /* Check if we run on port with 32 bit time_t size */ > + time_t tov; > + if (__builtin_add_overflow (t, 1, &tov)) > + return 0; > + > + /* Check if the time is converted after 32 bit time_t overflow. */ > + test_difftime_helper (t + 1800, t - 1800, 3600.0); > + test_difftime_helper (t - 1800, t + 1800, -3600.0); > + > + t =3D tov; > + test_difftime_helper (t + 1800, t - 1800, 3600.0); > + test_difftime_helper (t - 1800, t + 1800, -3600.0); > + > + return 0; > +} > + > +#include 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 --Sig_/q1ncsayyBM4VBJQ7/SnjLa6 Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCgAdFiEEgAyFJ+N6uu6+XupJAR8vZIA0zr0FAmAqQw0ACgkQAR8vZIA0 zr0+SAf8D9dYZ8hbhflVztNM9Ac/pxYmhQYoWYc9ij07dR28I5z5H2+7CMefBo8y GpaWMMILAGICyB1VEkOQeFqowNVkmkcoHUoKT7t2n6ACboohwpWE3xGjh5I37rZ+ ERUuE2re1bsmvIhD4QGyODB8TyplakWj0EJMd50iOYttfukcM/oPgVklsxJvrESl kNWhSdjrDzAuAYWM+W7uf6wJT2TnM93YJXCjCs0LAr9YtkP+CpQVz2HblsR49JYt pB7EyNKH0EuuSitFhB75KwYSYLSGcXnwiDjm0Xcgssq2HaezvUpN6hvOnORsH+E7 9LcrHCQ3y6TiK8WHFdyEQoq1cBPMTA== =fvl4 -----END PGP SIGNATURE----- --Sig_/q1ncsayyBM4VBJQ7/SnjLa6--