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-ASN: AS22989 209.51.188.0/24 X-Spam-Status: No, score=-4.7 required=3.0 tests=AWL,BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,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 lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id A10F61F8C6 for ; Wed, 7 Jul 2021 08:45:32 +0000 (UTC) Received: from localhost ([::1]:33570 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m13BT-0007M8-Fj for normalperson@yhbt.net; Wed, 07 Jul 2021 04:45:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58190) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m13BQ-0007Lu-GH for bug-gnulib@gnu.org; Wed, 07 Jul 2021 04:45:28 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:53463) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m13BN-0006hs-Kh for bug-gnulib@gnu.org; Wed, 07 Jul 2021 04:45:27 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1625647523; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=hndCl+SDeDsl5Tm8Ru85X4pHOQaZU1MsUo23cS97X/I=; b=CLzAWMmaj/SNwO6S4VCfaAQQz+MR3katoaWjsvtH8s7SzBmbj98rXSrYmJmVGO6iraBVww hmfua8p//Oke9djeaqHoH3jRLsWwbGazxT/dI3fWun1qtyIujJBPwU7BXEyb4XGLIn9v39 mN0X5FWNT3VTrkxR5D1Htp/7w3mVi1M= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-191-BGwkceWtMOiWI4LhpcgvjA-1; Wed, 07 Jul 2021 04:45:20 -0400 X-MC-Unique: BGwkceWtMOiWI4LhpcgvjA-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 764FC100C622; Wed, 7 Jul 2021 08:45:19 +0000 (UTC) Received: from oldenburg.str.redhat.com (ovpn-115-5.ams2.redhat.com [10.36.115.5]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5DBB660916; Wed, 7 Jul 2021 08:45:18 +0000 (UTC) From: Florian Weimer To: Bruno Haible Subject: Re: [PATCH] year2038: support glibc 2.34 _TIME_BITS=64 References: <20210702023332.2482490-1-eggert@cs.ucla.edu> <4302797.ikRTjI96fm@omega> <87y2akltl7.fsf@oldenburg.str.redhat.com> <1882389.maKspNx483@omega> Date: Wed, 07 Jul 2021 10:45:16 +0200 In-Reply-To: <1882389.maKspNx483@omega> (Bruno Haible's message of "Tue, 06 Jul 2021 04:11:50 +0200") Message-ID: <87eecabjhf.fsf@oldenburg.str.redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=fweimer@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain Received-SPF: pass client-ip=216.205.24.124; envelope-from=fweimer@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.442, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: bug-gnulib@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Gnulib discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Paul Eggert , bug-gnulib@gnu.org Errors-To: bug-gnulib-bounces+normalperson=yhbt.net@gnu.org Sender: "bug-gnulib" * Bruno Haible: > Florian Weimer wrote: > >> 64-bit file offsets enabled real use cases. > > Year 2038 is also a real use-case. It is not so rare that machines are > being used for 15 years. (I still occasionally use a 14-years old > computer, and had a washing machine that lasted 25 years.) > Year 2038 is less than 17 years away. So, it is time to do something for > year 2038 now, not in five years. Y2038 support requires recompilation. If you are able to do that, why not recompile for a 64-bit architecture? >> I assume GNU clisp (at least in a full build) need to link to some >> system libraries which are not dual ABI (and probably never will be). >> If gnulib forces the use of time64 mode, then it creates a push towards >> time64 mode in those libraries, too. At that point, these libraries >> will no longer be usable for running older binaries (in at least some >> cases; in others, the time_t symbols are not actually used). >> ... >> gnulib is pushing things in one particular direction, a >> direction ... > > Let me try to summarize your arguments, the way I understand them. > > 1) The ability to run older binaries is essential for nearly all > distros. > > 2) On i386, 32-bit time_t and 64-bit time_t are not binary compatible, > when used in the public API of a shared library. Assume an existing > old binary relies on /usr/lib/libfoo.so.5 and uses its API with > 32-bit time_t assumption. Then this library must stay in place with > the same API. > > 3) The distribution can provide a libfoo.so compiled with 64-bit > time_t, but it MUST reside in a different file. I think there is also the possibility of a dual ABI, see below. > Pieces that are missing, AFAICS, are: > > A) Possibly some glibc "magic" with shared library versioning would > make this situation simpler? Or is the combination of ldconfig and > LD_LIBRARY_PATH etc. sufficient? This probably needs per-package/component work to enable dual ABI, similar to what glibc did for its time_t interfaces. There is no linker magic involved, it's either symbol redirects (using a GCC extension) or a preprocessor macro. A dual ABI avoids the need for new soname and the introduction of symbol versioning (so that the object can be loaded twice into the same process with different ABIs). I don't expect many upstreams to support this effort. > B) A writeup for distributors, what is the recommended way to handle > the situation. > There are several _possible_ ways to handle it. But Linux distros > aim at being compatible at the binary level, and that requires > a _common_ approch among distros. IMO, the Linux Standard Base (LSB) > is the forum where such things should be standardized. > Have the LSB people already been involved in the discussion? LSB is quite dead, and it never covered the interesting packages anyway. I can see distributions building 32-bit Arm and a *new*, separate variant of i386 for 64-bit time_t, and the original i386 port remains at 32-bit. The new i386 port would have a glibc that defaults to 64-bit time_t. Two separate i386 ports seem to require the least human resources to maintain. If that's the chosen approach, gnulib should just use whatever the default time_t size is, and not attempt to override it. Thanks, Florian