To test the new largefile + year2038 changes, I created a gnulib testdir

./gnulib-tool --create-testdir --dir=../testdir --single-configure 
largefile-required year2038-required

and compiled it on various platforms. Here are the results, by ABI:

i386     Linux: Ubuntu 22.04     OK
                Debian 9.1       ERROR
                Ubuntu 17.04     ERROR
                Ubuntu 18.04     ERROR
                Manjaro 17       ERROR
                openSUSE 12.1    ERROR
                Slackware 14     ERROR
                Alpine 3.7       ERROR
         Solaris 10              ERROR
         Solaris 11.4            ERROR
         Solaris 11 OmniOS       ERROR
         Solaris 11 OpenIndiana  ERROR
         Mac OS X                ERROR
         Hurd                    ERROR
         GNU/kFreeBSD            ERROR
         FreeBSD                 ERROR
         NetBSD                  OK
         OpenBSD                 OK
         MidnightBSD             ERROR
         Haiku                   ERROR
         Cygwin                  ERROR
         Windows mingw           BUG
                 MSVC            BUG
         Minix 3.3               OK
m68k     Linux                   ERROR
mips     Linux: 32-bit           ERROR
                n32              ERROR
sparc    Solaris 10              ERROR
         Solaris 11.3            ERROR
         Linux                   ERROR
         NetBSD                  OK
arm      Linux                   ERROR
         FreeBSD                 OK
powerpc  AIX                     ERROR
         Linux                   ERROR
         Mac OS X                ERROR
x86_64   Linux x32               OK
s390     Linux                   ERROR
riscv32  Linux                   ERROR

As you can see, it's highly non-trivial. (Would anyone have guessed that
the outcomes is ERROR for mips n32 but OK for x86_64 x32 ?)

So, let me include this list in the documentation.


2023-04-10  Bruno Haible  <br...@clisp.org>

        doc: Clarify list of platforms for year2038 support.
        * doc/year2038.texi (Avoiding the year 2038 problem): List the platforms
        on which year2038-required is known to fail vs. known to succeed.

diff --git a/doc/year2038.texi b/doc/year2038.texi
index d98753101e..abb7b54c84 100644
--- a/doc/year2038.texi
+++ b/doc/year2038.texi
@@ -18,6 +18,51 @@
 the year 2038, @samp{year2038-required} causes @command{configure} to
 fail.
 
+With the @samp{year2038-required} module, @command{configure} fails
+on the following 32-bit platforms (or ABIs in bi-arch systems):
+@itemize
+@item
+Linux with glibc < 2.34 on
+x86, arm, mips (32-bit or n32 ABI), powerpc, sparc, s390, hppa, m68k, sh, 
csky, microblaze, nios2,
+@item
+Linux/riscv32,
+@item
+Mac OS X on x86 and powerpc,
+@item
+GNU/Hurd/x86,
+@item
+GNU/kFreeBSD/x86,
+@item
+FreeBSD/x86,
+@item
+MidnightBSD/x86,
+@item
+AIX/powerpc,
+@item
+Solaris 10 and 11 on x86 and sparc,
+@item
+Cygwin/x86,
+@item
+Haiku/x86.
+@end itemize
+
+Whereas no failure will occur on the following 32-bit platforms or ABIs:
+@itemize
+@item
+Linux/x86 with glibc >= 2.34 on
+x86, arm, mips (32-bit or n32 ABI), powerpc, sparc, s390, hppa, m68k, sh, 
csky, microblaze, nios2,
+@item
+Linux/x86_64-x32,
+@item
+NetBSD on x86 and sparc,
+@item
+OpenBSD/x86,
+@item
+FreeBSD/arm,
+@item
+Minix 3.3.
+@end itemize
+
 The Gnulib module @samp{year2038} is like @samp{year2038-required},
 except that it causes @command{configure} to fail only when it appears
 that the current system should support post-2038 timestamps but




Reply via email to