From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-il1-x142.google.com (mail-il1-x142.google.com [IPv6:2607:f8b0:4864:20::142]) by sourceware.org (Postfix) with ESMTPS id 19B01384A033 for ; Mon, 27 Apr 2020 21:54:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 19B01384A033 Received: by mail-il1-x142.google.com with SMTP id x2so18319958ilp.13 for ; Mon, 27 Apr 2020 14:54:57 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=nciIxVfsQAbsd/YEda+DlWX/4fe2+qvHsxVeBH1Fq5Q=; b=HHLDPoa12iiSoPUBcpSqPV7JjSWwlBtWNcnCB3DAdJxqwUTjBFkhCUGPp6V2fHAiA9 GrZS3sWGrY8C9jL2R+wEq6tvd3Z6fsWmMd/sCfsJv2e/L9N9aXW1J4eUHfvtflmIPzLi 6vSJArbBZcvq8jF7qx8OUZoBUzf1wUmewT8N/qrgkNs2r/CWmrcczkUO71M5FhSlQpSZ LmLDyVTVMKTSosLTMw62wKlWh3PwAo2VQzP89TjbhSggcuLL9dKIBEKzAG0OXtdu7Nc9 siuTxq3UrtHJOqQVr0XvYAZyxorQOPalFFUyo7RAatDg8kyYt3hTA0x047LpB4rB/z/V GSCg== X-Gm-Message-State: AGi0PuYTM4lUQksbkm+qeFgGicxeHw9KTnyYTaEy1Mp60LdDtk5DzPm2 CM9xK+am+M/JMQeGm2orSCYNxkI6WSe4TNSfFtk= X-Google-Smtp-Source: APiQypJ4wqoIziwQGW5C2UBDm5uWhcpP1LRXrnHk458FckVXTLOk5JN78URmAdk5j4l2tFfd8rX+SEWZadig+/vLi9o= X-Received: by 2002:a92:ad09:: with SMTP id w9mr24167029ilh.177.1588024496523; Mon, 27 Apr 2020 14:54:56 -0700 (PDT) MIME-Version: 1.0 References: <20200401165459.2016997-1-alistair.francis@wdc.com> In-Reply-To: From: Alistair Francis Date: Mon, 27 Apr 2020 14:46:17 -0700 Message-ID: Subject: Re: [PATCH] generic/typesizes.h: Add support for 32-bit arches with 64-bit types To: Alistair Francis Cc: GNU C Library , Joseph Myers , Lukasz Majewski Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-21.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, 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-List-Received-Date: Mon, 27 Apr 2020 21:54:58 -0000 On Thu, Apr 16, 2020 at 9:23 AM Alistair Francis wrote: > > On Wed, Apr 1, 2020 at 10:02 AM Alistair Francis > wrote: > > > > Update the default typesizes.h to match the new kernel sizes for 32-bit > > architectures with a 64-bit time_t and friends. This follows the sizes > > used for RV32 which is a y2038 safe architecture added after Linux 5.1. > > Ping! Ping^2. Alistair > > > --- > > .../unix/sysv/linux/generic/bits/typesizes.h | 37 +++++++++++++------ > > 1 file changed, 25 insertions(+), 12 deletions(-) > > > > diff --git a/sysdeps/unix/sysv/linux/generic/bits/typesizes.h b/sysdeps/unix/sysv/linux/generic/bits/typesizes.h > > index 4fb246ac74..05a6f6d1e5 100644 > > --- a/sysdeps/unix/sysv/linux/generic/bits/typesizes.h > > +++ b/sysdeps/unix/sysv/linux/generic/bits/typesizes.h > > @@ -24,33 +24,46 @@ > > #ifndef _BITS_TYPESIZES_H > > #define _BITS_TYPESIZES_H 1 > > > > -/* See for the meaning of these macros. This file exists so > > - that need not vary across different GNU platforms. */ > > +/* See for the meaning of these macros. This file exists so > > + that need not vary across different GNU platforms. */ > > +#if __TIMESIZE == 64 && __WORDSIZE == 32 > > +/* This is the "new" y2038 types defined for architectures added after > > + * the 5.1 kernel */ > > +# define __INO_T_TYPE __UQUAD_TYPE > > +# define __OFF_T_TYPE __SQUAD_TYPE > > +# define __RLIM_T_TYPE __UQUAD_TYPE > > +# define __BLKCNT_T_TYPE __SQUAD_TYPE > > +# define __FSBLKCNT_T_TYPE __UQUAD_TYPE > > +# define __FSFILCNT_T_TYPE __UQUAD_TYPE > > +# define __TIME_T_TYPE __SQUAD_TYPE > > +# define __SUSECONDS_T_TYPE __SQUAD_TYPE > > +#else > > +# define __INO_T_TYPE __ULONGWORD_TYPE > > +# define __OFF_T_TYPE __SLONGWORD_TYPE > > +# define __RLIM_T_TYPE __ULONGWORD_TYPE > > +# define __BLKCNT_T_TYPE __SLONGWORD_TYPE > > +# define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE > > +# define __FSFILCNT_T_TYPE __ULONGWORD_TYPE > > +# define __TIME_T_TYPE __SLONGWORD_TYPE > > +# define __SUSECONDS_T_TYPE __SLONGWORD_TYPE > > +#endif > > > > #define __DEV_T_TYPE __UQUAD_TYPE > > #define __UID_T_TYPE __U32_TYPE > > #define __GID_T_TYPE __U32_TYPE > > -#define __INO_T_TYPE __ULONGWORD_TYPE > > #define __INO64_T_TYPE __UQUAD_TYPE > > #define __MODE_T_TYPE __U32_TYPE > > #define __NLINK_T_TYPE __U32_TYPE > > -#define __OFF_T_TYPE __SLONGWORD_TYPE > > #define __OFF64_T_TYPE __SQUAD_TYPE > > #define __PID_T_TYPE __S32_TYPE > > -#define __RLIM_T_TYPE __ULONGWORD_TYPE > > #define __RLIM64_T_TYPE __UQUAD_TYPE > > -#define __BLKCNT_T_TYPE __SLONGWORD_TYPE > > #define __BLKCNT64_T_TYPE __SQUAD_TYPE > > -#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE > > #define __FSBLKCNT64_T_TYPE __UQUAD_TYPE > > -#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE > > #define __FSFILCNT64_T_TYPE __UQUAD_TYPE > > #define __FSWORD_T_TYPE __SWORD_TYPE > > #define __ID_T_TYPE __U32_TYPE > > #define __CLOCK_T_TYPE __SLONGWORD_TYPE > > -#define __TIME_T_TYPE __SLONGWORD_TYPE > > #define __USECONDS_T_TYPE __U32_TYPE > > -#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE > > #define __SUSECONDS64_T_TYPE __SQUAD_TYPE > > #define __DADDR_T_TYPE __S32_TYPE > > #define __KEY_T_TYPE __S32_TYPE > > @@ -63,7 +76,7 @@ > > #define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE > > #define __CPU_MASK_TYPE __ULONGWORD_TYPE > > > > -#ifdef __LP64__ > > +#if defined(__LP64__) || (__TIMESIZE == 64 && __WORDSIZE == 32) > > /* Tell the libc code that off_t and off64_t are actually the same type > > for all ABI purposes, even if possibly expressed as different base types > > for C type-checking purposes. */ > > @@ -79,7 +92,7 @@ > > # define __STATFS_MATCHES_STATFS64 1 > > > > /* And for getitimer, setitimer and rusage */ > > -# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 1 > > +# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 (__WORDSIZE == 64) > > #else > > # define __RLIM_T_MATCHES_RLIM64_T 0 > > > > -- > > 2.26.0 > >