about summary refs log tree commit diff
path: root/time/bits
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2024-01-18 10:18:01 -0300
committerFlorian Weimer <fweimer@redhat.com>2024-05-28 07:30:07 +0200
commitdd535f4f19ef2b5c367a362af445ecadcf45401e (patch)
tree9a5ed482f0baeb50c09ce587836918cb74fe5acb /time/bits
parent26e7005728f0eea2972474e6be2905c467661237 (diff)
downloadglibc-dd535f4f19ef2b5c367a362af445ecadcf45401e.tar.gz
glibc-dd535f4f19ef2b5c367a362af445ecadcf45401e.tar.xz
glibc-dd535f4f19ef2b5c367a362af445ecadcf45401e.zip
Always define __USE_TIME_BITS64 when 64 bit time_t is used
It was raised on libc-help [1] that some Linux kernel interfaces expect
the libc to define __USE_TIME_BITS64 to indicate the time_t size for the
kABI.  Different than defined by the initial y2038 design document [2],
the __USE_TIME_BITS64 is only defined for ABIs that support more than
one time_t size (by defining the _TIME_BITS for each module).

The 64 bit time_t redirects are now enabled using a different internal
define (__USE_TIME64_REDIRECTS). There is no expected change in semantic
or code generation.

Checked on x86_64-linux-gnu, i686-linux-gnu, aarch64-linux-gnu, and
arm-linux-gnueabi

[1] https://sourceware.org/pipermail/libc-help/2024-January/006557.html
[2] https://sourceware.org/glibc/wiki/Y2038ProofnessDesign

Reviewed-by: DJ Delorie <dj@redhat.com>
(cherry picked from commit a4ed0471d71739928a0d0fa3258b3ff3b158e9b9)
Diffstat (limited to 'time/bits')
-rw-r--r--time/bits/types/struct_timespec.h4
-rw-r--r--time/bits/types/struct_timeval.h2
-rw-r--r--time/bits/types/time_t.h2
3 files changed, 4 insertions, 4 deletions
diff --git a/time/bits/types/struct_timespec.h b/time/bits/types/struct_timespec.h
index 489e81136d..1141015f27 100644
--- a/time/bits/types/struct_timespec.h
+++ b/time/bits/types/struct_timespec.h
@@ -10,14 +10,14 @@
    has nanoseconds instead of microseconds.  */
 struct timespec
 {
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
   __time64_t tv_sec;		/* Seconds.  */
 #else
   __time_t tv_sec;		/* Seconds.  */
 #endif
 #if __WORDSIZE == 64 \
   || (defined __SYSCALL_WORDSIZE && __SYSCALL_WORDSIZE == 64) \
-  || (__TIMESIZE == 32 && !defined __USE_TIME_BITS64)
+  || (__TIMESIZE == 32 && !defined __USE_TIME64_REDIRECTS)
   __syscall_slong_t tv_nsec;	/* Nanoseconds.  */
 #else
 # if __BYTE_ORDER == __BIG_ENDIAN
diff --git a/time/bits/types/struct_timeval.h b/time/bits/types/struct_timeval.h
index 3466137c35..0c8e88c82c 100644
--- a/time/bits/types/struct_timeval.h
+++ b/time/bits/types/struct_timeval.h
@@ -7,7 +7,7 @@
    microsecond but also has a range of years.  */
 struct timeval
 {
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
   __time64_t tv_sec;		/* Seconds.  */
   __suseconds64_t tv_usec;	/* Microseconds.  */
 #else
diff --git a/time/bits/types/time_t.h b/time/bits/types/time_t.h
index 84d67f6ac3..00cde92c62 100644
--- a/time/bits/types/time_t.h
+++ b/time/bits/types/time_t.h
@@ -4,7 +4,7 @@
 #include <bits/types.h>
 
 /* Returned by `time'.  */
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
 typedef __time64_t time_t;
 #else
 typedef __time_t time_t;