aboutsummaryrefslogtreecommitdiff
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.zip
glibc-dd535f4f19ef2b5c367a362af445ecadcf45401e.tar.gz
glibc-dd535f4f19ef2b5c367a362af445ecadcf45401e.tar.bz2
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 489e811..1141015 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 3466137..0c8e88c 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 84d67f6..00cde92 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;