public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>
To: libc-alpha@sourceware.org
Subject: Re: time64 / Large File Support: 2) default time64 breaks legacy 32bit binaries
Date: Thu, 26 Jan 2023 10:21:10 -0300	[thread overview]
Message-ID: <2342ab66-6ac6-17d8-3693-8e2fd93fc8a1@linaro.org> (raw)
In-Reply-To: <7271eb94-b5d7-69d6-9be0-ca1afda29a50@cs.ucla.edu>



On 26/01/23 01:13, Paul Eggert wrote:
> On 1/25/23 15:59, Andreas K. Huettel via Libc-alpha wrote:
> 
>> This was discussed already in the previous thread on this list [1], with reactions
>> ranging from "need new triplet" via "need new libdir" to "meh"....
>> [1] https://sourceware.org/pipermail/libc-alpha/2022-November/143386.html
> 
> One thing new since that November email is that in bleeding-edge Autoconf we've scaled back AC_SYS_LARGEFILE so it no longer widens time_t by default. Instead, you need to pass a new option --enable-year2038 to 'configure' if you want 64-bit time_t on 32-bit glibc x86 and ARM platforms, which as I understand it are the only platforms that have this problem. If a package author wants --enable-year2038 to be the default, they need to use Autoconf's new AC_SYS_YEAR2038 macro. This change has also percolated into Gnulib so source packages using recent Gnulib will need to use the new Gnulib module year2038 if they want --enable-year2038 to be the default.
> 
> This change was done out of concern that although AC_SYS_LARGEFILE has long tweaked blkcnt_t, dev_t, ino_t, fsblkcnt_t, fsfilcnt_t and rlim_t (in addition to off_t of course), having it also tweak time_t was a compatibility bridge too far.
> 
>> Proposal: glibc gains two new build-time configure options:
>> * --enable-hard-time64
>> * --enable-hard-lfs
> 
> This sort of thing sounds like a good way to go. However, I suggest simplifying things, by having just one option (say, --enable-hard-sys-types64) that does both at once, because --enable-hard-time64 and --enable-hard-lfs would not be orthogonal and this would be confusing, and anyway nobody sane will want to use one option without also using the other - who wants the agony of *two* conversions?

I agree a single option make sense, there is no good reason to add LFS-only
with 64-bit support. It also simplify build systems that are not autoconf 
based.

A minor problem, which is for all configure switch, it adds another build 
permutation that incur in more testing requirements and maintenance. 

However it does not help with the rest of plumbing that a system will need
to do for correct set library selection, since ldconfig will see both 32 and
64 bit time_t shared library essentially being the same ABI.  A mixed 
environment with legacy binaries/libraries will still incur in similar 
issue, albeit in a different direction.  So to run old binaries one will 
need to either setup LD_PRELOAD/LD_LIBRARY_PATH/RUNPATH or run it in an 
isolated environment (which itself has its own issues).

And the configure switch also adds a kind of fragmentation, but it is also
we already have when a projects enables time64_t anyway.

So although I am not quite against --enable-hard-sys-types64, I personally
think we should do something more drastically (which not all other glibc
developers agree) and flip the switch to enable 64-bit time_t *as default*
and document 32-bit is opt-in. If Fedora or any distro wants to keep the
*broken* non-LFS / 32 bit time_t, it is up to them to patch glibc to do so.

  reply	other threads:[~2023-01-26 13:21 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-25 23:57 The time64 and Large File Support mess Andreas K. Huettel
2023-01-25 23:58 ` time64 / Large File Support: 1) [2.28 Regression]: New getdents{64} implementation breaks qemu-user Andreas K. Huettel
2023-01-26 12:21   ` Adhemerval Zanella Netto
2023-01-27 20:08     ` Andreas K. Huettel
2023-01-25 23:59 ` time64 / Large File Support: 2) default time64 breaks legacy 32bit binaries Andreas K. Huettel
2023-01-26  4:13   ` Paul Eggert
2023-01-26 13:21     ` Adhemerval Zanella Netto [this message]
2023-01-26 23:35       ` Sam James
2023-01-27 17:33         ` Adhemerval Zanella Netto
2023-02-01 16:26         ` Florian Weimer
2023-02-01 19:47           ` Sam James
2023-02-01 19:54             ` Sam James
2023-02-03 17:52             ` Florian Weimer
2023-02-01 22:22           ` Michael Hudson-Doyle
2023-02-03 14:17             ` Adhemerval Zanella Netto
2023-02-03 18:56               ` Florian Weimer
2023-01-27  2:38       ` Paul Eggert
2023-01-27 17:40         ` Adhemerval Zanella Netto
2023-01-27 23:51           ` Paul Eggert
2023-01-27 23:58             ` Joseph Myers
2023-02-01 12:27               ` Adhemerval Zanella Netto
2023-01-26 10:43   ` Florian Weimer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2342ab66-6ac6-17d8-3693-8e2fd93fc8a1@linaro.org \
    --to=adhemerval.zanella@linaro.org \
    --cc=libc-alpha@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).