From a4ed0471d71739928a0d0fa3258b3ff3b158e9b9 Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Thu, 18 Jan 2024 10:18:01 -0300 Subject: 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 --- manual/creature.texi | 6 ++++++ manual/maint.texi | 4 ++++ 2 files changed, 10 insertions(+) (limited to 'manual') diff --git a/manual/creature.texi b/manual/creature.texi index 3fc53619ea..be0a5ac7e6 100644 --- a/manual/creature.texi +++ b/manual/creature.texi @@ -192,6 +192,12 @@ Linux kernel version on which the system is running. For Linux kernel version above @b{5.1} syscalls supporting 64-bit time are used. Otherwise, a fallback code is used with legacy (i.e. 32-bit) syscalls. +On such platforms, @theglibc{} will also define @code{__USE_TIME64_REDIRECTS} +to indicate whether the declarations are expanded to different ones +(either by redefiniding the symbol name or using symbol aliais). +For instance, if the symbol @code{clock_gettime} expands to +@code{__glock_gettime64}. + @item If @code{_TIME_BITS} is defined to be 32, @code{time_t} is defined to be a 32-bit integer where that is supported. This is not recommended, diff --git a/manual/maint.texi b/manual/maint.texi index 89da704f45..04faa222e2 100644 --- a/manual/maint.texi +++ b/manual/maint.texi @@ -491,6 +491,10 @@ derived as in the dual-time configuration case, and which expands to the symbol's name. For instance, the macro @code{__clock_gettime64} expands to @code{clock_gettime}. +When @code{__TIMESIZE} is set to 64, @theglibc{} will also define +the@code{__USE_TIME_BITS64} macro. It is used by the Linux kernel ABI +to set the expected @code{time_t} size used on some syscalls. + These macros are purely internal to @theglibc{} and exist only so that a single definition of the 64-bit time functions can be used on both single-time and dual-time configurations, and so that glibc code can -- cgit 1.4.1