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