From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from zimbra.cs.ucla.edu (zimbra.cs.ucla.edu [131.179.128.68]) by sourceware.org (Postfix) with ESMTPS id 0DEE2383F41F for ; Tue, 22 Jun 2021 21:41:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 0DEE2383F41F Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=cs.ucla.edu Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=cs.ucla.edu Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 0816E160108; Tue, 22 Jun 2021 14:41:38 -0700 (PDT) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id mzL44OguwTJu; Tue, 22 Jun 2021 14:41:36 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id D215C16011A; Tue, 22 Jun 2021 14:41:36 -0700 (PDT) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id h9q2RVzACcIM; Tue, 22 Jun 2021 14:41:36 -0700 (PDT) Received: from [192.168.1.9] (cpe-172-91-119-151.socal.res.rr.com [172.91.119.151]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 98DD2160109; Tue, 22 Jun 2021 14:41:36 -0700 (PDT) Subject: Re: time64 functions for glibc To: Adhemerval Zanella Cc: Elmar Stellnberger , libc-alpha@sourceware.org, libc-maintainers@gnu.org References: <8bb369a7-ebc0-d108-ca38-0ba2c658df12@elstel.org> <216b19de-ecf1-91a2-bea0-4af829414788@cs.ucla.edu> From: Paul Eggert Organization: UCLA Computer Science Department Message-ID: Date: Tue, 22 Jun 2021 14:41:35 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------6487A8381EBBB4FDAEEA476A" Content-Language: en-US X-Spam-Status: No, score=-9.5 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, NICE_REPLY_A, 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-List-Received-Date: Tue, 22 Jun 2021 21:41:40 -0000 This is a multi-part message in MIME format. --------------6487A8381EBBB4FDAEEA476A Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 5/31/21 12:03 PM, Adhemerval Zanella wrote: >> Proposed patch attached, relative to the azanella/y2038 branch. > > Thanks, the patch looks reasonable and I will add merge on the > patch that enable the y2038 symbols. That documentation patch didn't make it into the master branch when the corresponding y2038 symbols did. OK to install that doc patch now? I've attached it to this email (this is relative to current master). --------------6487A8381EBBB4FDAEEA476A Content-Type: text/x-patch; charset=UTF-8; name="0001-doc-_TIME_BITS-defaults-may-change.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="0001-doc-_TIME_BITS-defaults-may-change.patch" >From 9784d7dce26553f40ec49648c337d6c95e95a8af Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 22 Jun 2021 14:36:25 -0700 Subject: [PATCH] doc: _TIME_BITS defaults may change * NEWS: Don't imply the default will always be 32-bit. * manual/creature.texi (Feature Test Macros): Say that _TIME_BITS and _FILE_OFFSET_BITS defaults may change in future releases. --- NEWS | 2 +- manual/creature.texi | 57 ++++++++++++++++++++++---------------------- 2 files changed, 29 insertions(+), 30 deletions(-) diff --git a/NEWS b/NEWS index 72115073fb..cedc998a22 100644 --- a/NEWS +++ b/NEWS @@ -31,7 +31,7 @@ Major new features: __STDC_WANT_IEC_60559_BFP_EXT__, as specified in TS 18661-1, is defined, and when _GNU_SOURCE is defined. -* Add support for 64 bit time_t for ABIs with defaults to 32 bit time_t. +* Add support for 64 bit time_t for ABIs with defaults currently unchanged. This is enabled with the _TIME_BITS preprocessor set to 64 and only supported when LFS (_FILE_OFFSET_BITS=64) is also enabled. It is only enabled for Linux and the full support requires a minimum version of 5.1. diff --git a/manual/creature.texi b/manual/creature.texi index 9fa658e9a7..d3c4fa4702 100644 --- a/manual/creature.texi +++ b/manual/creature.texi @@ -146,8 +146,8 @@ bit} interface available as an additional interface, @code{_FILE_OFFSET_BITS} allows the @w{64 bit} interface to replace the old interface. -If @code{_FILE_OFFSET_BITS} is undefined, or if it is defined to the -value @code{32}, nothing changes. The @w{32 bit} interface is used and +If @code{_FILE_OFFSET_BITS} is defined to the +value @code{32}, the @w{32 bit} interface is used and types like @code{off_t} have a size of @w{32 bits} on @w{32 bit} systems. @@ -157,6 +157,11 @@ under different names (as they are with @code{_LARGEFILE64_SOURCE}). Instead the old function names now reference the new functions, e.g., a call to @code{fseeko} now indeed calls @code{fseeko64}. +If the macro is not defined it currently defaults to @code{32}, but +this default is planned to change due to a need to update +@code{time_t} for Y2038 safety, and applications should not rely on +the default. + This macro should only be selected if the system provides mechanisms for handling large files. On @w{64 bit} systems this macro has no effect since the @code{*64} functions are identical to the normal functions. @@ -166,47 +171,41 @@ This macro was introduced as part of the Large File Support extension @end defvr @defvr Macro _TIME_BITS -This macro determines the bit size of @code{time_t} (and therefore the -bit size of all @code{time_t} derived types and the prototypes of all -related functions). If @code{_TIME_BITS} is undefined, the bit size of -@code{time_t} is architecture dependent. +This macro determines the bit size of @code{time_t}, and therefore the +bit size of all @code{time_t}-derived types and the prototypes of all +related functions. -Possible values of @code{_TIME_BITS}: @enumerate -@item -@code{_TIME_BITS=64} and port from the outset uses 64-bit -@code{time_t} and word size equals to @w{64 bits} (e.g. x86_64) - no -action @item -@code{_TIME_BITS=32} and port from the outset uses 32-bit -@code{time_t} and word size equals to @w{64 bits} (e.g. ARM) - no -action +If @code{_TIME_BITS} is undefined, the bit size of @code{time_t} is +architecture dependent. Currently it defaults to 64 bits on most +architectures. Although it defaults to 32 bits on some traditional +architectures (i686, ARM), this is planned to change and applications +should not rely on this. @item -@code{_TIME_BITS=64} and port from the outset uses 64-bit -@code{time_t} and word size equals to @w{32 bits} (e.g. ARC, RV32) -- no action +If @code{_TIME_BITS} is defined to be 64, @code{time_t} is defined +to be a 64-bit integer. On platforms where @code{time_t} was +traditionally 32 bits, calls to proper syscalls depend on the +Linux kernel version on which the system is running. For Linux kernel +version above @b{5.1} syscalls supporting 64-bit time are used. Otherwise, +a fallback code is used with legacy (i.e. 32-bit) syscalls. @item -@code{_TIME_BITS=64} and port from the outset uses 32-bit -@code{time_t} and word size equals to @w{32 bits} (e.g. ARM) -- the @code{time_t} is modified to be able to hold 64-bit time. +If @code{_TIME_BITS} is defined to be 32, @code{time_t} is defined to +be a 32-bit integer where that is supported. This is not recommended, +as 32-bit @code{time_t} stops working in the year 2038. @item -For any other use case the compile-time error is emitted. +For any other use case a compile-time error is emitted. @end enumerate -The @code{_TIME_BITS} can be only used when @code{_FILE_OFFSET_BITS=64} -is also defined. - -For the point @b{4} above, calls to proper syscalls depend on the -Linux kernel version on which the system is running. For Linux kernel -version above @b{5.1} syscalls supporting 64-bit time are used. Otherwise, -a fallback code is used with legacy (i.e. 32-bit) syscalls. +@code{_TIME_BITS=64} can be defined only when +@code{_FILE_OFFSET_BITS=64} is also defined. By using this macro certain ports gain support for 64-bit time and as -a result become immune to Y2038 problem. +a result become immune to the Y2038 problem. @end defvr @defvr Macro _ISOC99_SOURCE -- 2.30.2 --------------6487A8381EBBB4FDAEEA476A--