On 7/5/21 7:32 AM, Florian Weimer wrote:

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.

Only in libraries that expose time_t (or time_t-dependent types like struct timespec and struct stat) directly to their users, right? For example, libselinux is unaffected by this issue even though it calls 'lstat' internally, because its user-side ABI is unaffected by time_t width.

I take your point, though, that there will be a hassle with libraries whose user-side ABIs depend on time_t width. I expect distros will migrate these libraries and their users to _TIME_BITS=64 in an all-or-nothing way.

But again, this is not strictly a Gnulib issue. Apps like Coreutils should be fine even with the new Gnulib, as Coreutils doesn't use any of the problematic libraries. Conversely, apps that '#define _TIME_BITS 64' directly and use GLib (or whatever) can have the problem, even if they don't use Gnulib.

It is not, gnulib is pushing things in one particular direction, a
direction that not everyone working on the GNU toolchain agrees with.

That's OK; we needn't have universal agreement on this point, which is a good thing because it'd be impractical to insist on universal agreement. There is a way to build with 32-bit time_t even in Gnulib-using apps, so distros wanting to stick with 32-bit time_t can build Gnulib-using apps with the appropriate flags so that they're still living in the 32-bit time_t world for now.

There are some major differences to _FILE_OFFSET_BITS=64:

There weren't 20+ years of backwards compatibility in 2005

Not on Linux-based platforms of course, but there were on BSD-based platforms with 20+ years of backwards compatibility back then (SunOS comes to mind). Admittedly there were fewer computers back then but the compatibility issues were quite extensive.

64-bit file offsets enabled real use cases.

Designing devices now, that will be used past 2038, is a real use case.

Reply via email to