bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gl_YEAR2038_EARLY is called too late


From: Daiki Ueno
Subject: gl_YEAR2038_EARLY is called too late
Date: Mon, 26 Sep 2022 13:56:45 +0900
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)

Hello Paul,

I have seen a test failure when cross-compiling GnuTLS to mingw32 and
running the testsuites with Wine[1].  It looks like the library
mis-calculates timeout value for DTLS, because of a confusion in time_t
size detection.

The configure output shows some clue:

  checking for 64-bit time_t... no
  checking for 64-bit time_t with _TIME_BITS=64... no
  configure: WARNING: This package requires a 64-bit 'time_t' type if there is 
any way to access timestamps outside the year range 1901-2038 on your platform. 
Perhaps you should configure with 'CPPFLAGS="-m64" LDFLAGS="-m64"'?
  checking whether time_t is signed... yes
  checking size of time_t... 8

where I observe:

- AC_CHECK_SIZEOF reports time_t is 64-bit, as gl_YEAR2038_EARLY sets
  __MINGW_USE_VC2005_COMPAT

- gl_YEAR2038_BODY is called before gl_YEAR2038_EARLY as a dependency of
  AC_SYS_LARGEFILE

- Therefore checks in gl_YEAR2038_BODY are not affected by
  __MINGW_USE_VC2005_COMPAT and report that time_t is NOT 64-bit

I guess a simple solution would be to swap the order of
gl_YEAR2038_EARLY and AC_SYS_LARGEFILE in modules/largefile, as with the
attached patch.

This doesn't fully resolve the issue with DTLS tests as mentioned, and I
suspect there might be some other confusions.  Any suggestions would be
appreciated.

Footnotes:
[1]  https://gitlab.com/dueno/gnutls/-/jobs/2613997489

Regards,
-- 
Daiki Ueno
>From eac9e4fe9fd9e432bce8765059ae29559258344f Mon Sep 17 00:00:00 2001
From: Daiki Ueno <ueno@gnu.org>
Date: Mon, 26 Sep 2022 13:48:42 +0900
Subject: [PATCH] largefile: fix detection of time_t size on mingw32

* modules/largefile (configure.ac-early): Ensure gl_YEAR2038_EARLY
is invoked before gl_YEAR2038_BODY.
---
 ChangeLog         | 6 ++++++
 modules/largefile | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index 6027e5ed94..3b97909de5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2022-09-26  Daiki Ueno  <ueno@gnu.org>
+
+       largefile: fix detection of time_t size on mingw32
+       * modules/largefile (configure.ac-early): Ensure gl_YEAR2038_EARLY
+       is invoked before gl_YEAR2038_BODY.
+
 2022-09-25  Paul Eggert  <eggert@cs.ucla.edu>
 
        fts: fix errno handling if dirfd fails
diff --git a/modules/largefile b/modules/largefile
index 8eb438a8e9..9e1d9f052a 100644
--- a/modules/largefile
+++ b/modules/largefile
@@ -13,8 +13,8 @@ m4/year2038.m4
 Depends-on:
 
 configure.ac-early:
-AC_REQUIRE([AC_SYS_LARGEFILE])
 AC_REQUIRE([gl_YEAR2038_EARLY])
+AC_REQUIRE([AC_SYS_LARGEFILE])
 
 configure.ac:
 AC_REQUIRE([gl_LARGEFILE])
-- 
2.37.3


reply via email to

[Prev in Thread] Current Thread [Next in Thread]