* [PATCH v5] Always define __USE_TIME_BITS64 when 64 bit time_t is used
@ 2024-03-18 12:21 Adhemerval Zanella
2024-03-18 12:23 ` Adhemerval Zanella Netto
` (2 more replies)
0 siblings, 3 replies; 12+ messages in thread
From: Adhemerval Zanella @ 2024-03-18 12:21 UTC (permalink / raw)
To: libc-alpha; +Cc: DJ Delorie, Florian Weimer, Andreas Schwab
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
--
Changes from v5:
* Removed sysdeps/generic/features-time64.h.
* Fixes documentation wording.
Changes from v4:
* Move the __USE_TIME64_REDIRECTS documentation to creature.texi.
* Do not define __USE_TIME64_REDIRECTS for generic case.
Changes from v3:
* Add documentation about the __USE_TIME_BITS64 and
__USE_TIME64_REDIRECTS.
* Removed __USE_TIME_BITS64 references in comments.
* Rebased against master.
Changes from v2:
* Only defined __USE_TIME_BITS64 when 64 bit time_t is used.
Changes from v1:
* Use __USE_TIME64_REDIRECTS to allow replace the current macro.
---
io/bits/poll2.h | 2 +-
io/fcntl.h | 4 ++--
io/fts.h | 6 ++---
io/ftw.h | 12 +++++-----
io/sys/poll.h | 2 +-
io/sys/stat.h | 16 ++++++-------
io/utime.h | 4 ++--
manual/creature.texi | 6 +++++
manual/maint.texi | 4 ++++
misc/sys/ioctl.h | 2 +-
misc/sys/select.h | 4 ++--
posix/glob.h | 4 ++--
posix/sched.h | 2 +-
posix/sys/wait.h | 4 ++--
resolv/netdb.h | 2 +-
resource/sys/resource.h | 2 +-
rt/aio.h | 4 ++--
rt/mqueue.h | 2 +-
signal/signal.h | 2 +-
socket/sys/socket.h | 14 +++++------
support/timespec.h | 2 +-
support/xtime.h | 2 +-
support/xunistd.h | 2 +-
sysdeps/generic/features-time64.h | 19 ---------------
sysdeps/nptl/pthread.h | 18 +++++++-------
sysdeps/pthread/semaphore.h | 4 ++--
sysdeps/pthread/threads.h | 6 ++---
.../unix/sysv/linux/arm/bits/struct_stat.h | 8 +++----
.../unix/sysv/linux/bits/socket-constants.h | 2 +-
sysdeps/unix/sysv/linux/bits/time.h | 2 +-
sysdeps/unix/sysv/linux/bits/timex.h | 2 +-
.../sysv/linux/bits/types/struct_msqid_ds.h | 2 +-
.../sysv/linux/bits/types/struct_semid_ds.h | 2 +-
.../sysv/linux/bits/types/struct_shmid_ds.h | 2 +-
.../unix/sysv/linux/csky/bits/struct_stat.h | 4 ++--
sysdeps/unix/sysv/linux/features-time64.h | 9 +++++--
.../sysv/linux/hppa/bits/socket-constants.h | 2 +-
.../unix/sysv/linux/hppa/bits/struct_stat.h | 8 +++----
.../linux/hppa/bits/types/struct_msqid_ds.h | 2 +-
.../linux/hppa/bits/types/struct_semid_ds.h | 2 +-
.../linux/hppa/bits/types/struct_shmid_ds.h | 2 +-
.../unix/sysv/linux/m68k/bits/struct_stat.h | 8 +++----
.../sysv/linux/microblaze/bits/struct_stat.h | 12 +++++-----
.../sysv/linux/mips/bits/socket-constants.h | 2 +-
.../unix/sysv/linux/mips/bits/struct_stat.h | 14 +++++------
.../linux/mips/bits/types/struct_msqid_ds.h | 2 +-
.../linux/mips/bits/types/struct_semid_ds.h | 2 +-
.../linux/mips/bits/types/struct_shmid_ds.h | 2 +-
.../unix/sysv/linux/nios2/bits/struct_stat.h | 4 ++--
.../linux/powerpc/bits/socket-constants.h | 2 +-
.../sysv/linux/powerpc/bits/struct_stat.h | 8 +++----
.../powerpc/bits/types/struct_msqid_ds.h | 2 +-
.../powerpc/bits/types/struct_semid_ds.h | 2 +-
.../powerpc/bits/types/struct_shmid_ds.h | 2 +-
.../unix/sysv/linux/s390/bits/struct_stat.h | 4 ++--
sysdeps/unix/sysv/linux/sh/bits/struct_stat.h | 8 +++----
.../sysv/linux/sparc/bits/socket-constants.h | 2 +-
.../unix/sysv/linux/sparc/bits/struct_stat.h | 8 +++----
.../linux/sparc/bits/types/struct_msqid_ds.h | 2 +-
.../linux/sparc/bits/types/struct_semid_ds.h | 2 +-
.../linux/sparc/bits/types/struct_shmid_ds.h | 2 +-
sysdeps/unix/sysv/linux/sys/epoll.h | 2 +-
sysdeps/unix/sysv/linux/sys/prctl.h | 2 +-
sysdeps/unix/sysv/linux/sys/timerfd.h | 4 ++--
sysdeps/unix/sysv/linux/sys/timex.h | 2 +-
.../unix/sysv/linux/x86/bits/struct_stat.h | 8 +++----
.../linux/x86/bits/types/struct_semid_ds.h | 2 +-
sysvipc/sys/msg.h | 2 +-
sysvipc/sys/sem.h | 4 ++--
sysvipc/sys/shm.h | 2 +-
time/bits/types/struct_timespec.h | 4 ++--
time/bits/types/struct_timeval.h | 2 +-
time/bits/types/time_t.h | 2 +-
time/sys/time.h | 10 ++++----
time/time.h | 24 +++++++++----------
75 files changed, 178 insertions(+), 182 deletions(-)
delete mode 100644 sysdeps/generic/features-time64.h
diff --git a/io/bits/poll2.h b/io/bits/poll2.h
index 24ec1056eb..ca9d58badd 100644
--- a/io/bits/poll2.h
+++ b/io/bits/poll2.h
@@ -48,7 +48,7 @@ poll (__fortify_clang_overload_arg (struct pollfd *, ,__fds), nfds_t __nfds,
#ifdef __USE_GNU
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
extern int __REDIRECT (__ppoll64_alias, (struct pollfd *__fds, nfds_t __nfds,
const struct timespec *__timeout,
const __sigset_t *__ss), __ppoll64);
diff --git a/io/fcntl.h b/io/fcntl.h
index 38aa12d7f2..f157991782 100644
--- a/io/fcntl.h
+++ b/io/fcntl.h
@@ -172,7 +172,7 @@ typedef __pid_t pid_t;
This function is a cancellation point and therefore not marked with
__THROW. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
# ifndef __USE_FILE_OFFSET64
extern int fcntl (int __fd, int __cmd, ...);
# else
@@ -185,7 +185,7 @@ extern int __REDIRECT (fcntl, (int __fd, int __cmd, ...), fcntl64);
# ifdef __USE_LARGEFILE64
extern int fcntl64 (int __fd, int __cmd, ...);
# endif
-#else /* __USE_TIME_BITS64 */
+#else /* __USE_TIME64_REDIRECTS */
# ifdef __REDIRECT
extern int __REDIRECT_NTH (fcntl, (int __fd, int __request, ...),
__fcntl_time64);
diff --git a/io/fts.h b/io/fts.h
index 61f95bb441..97a031ebbd 100644
--- a/io/fts.h
+++ b/io/fts.h
@@ -187,7 +187,7 @@ FTSENT *fts_read (FTS *);
int fts_set (FTS *, FTSENT *, int) __THROW;
#else
# ifdef __REDIRECT
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
FTSENT *__REDIRECT (fts_children, (FTS *, int), fts64_children);
int __REDIRECT (fts_close, (FTS *), fts64_close);
FTS *__REDIRECT (fts_open, (char * const *, int,
@@ -206,7 +206,7 @@ int __REDIRECT_NTH (fts_set, (FTS *, FTSENT *, int),
__fts64_set_time64);
# endif
# else
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
# define fts_children fts64_children
# define fts_close fts64_close
# define fts_open fts64_open
@@ -217,7 +217,7 @@ int __REDIRECT_NTH (fts_set, (FTS *, FTSENT *, int),
# endif
#endif
#ifdef __USE_LARGEFILE64
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
FTSENT64 *fts64_children (FTS64 *, int);
int fts64_close (FTS64 *);
FTS64 *fts64_open (char * const *, int,
diff --git a/io/ftw.h b/io/ftw.h
index e4d1b84d53..39cf595b27 100644
--- a/io/ftw.h
+++ b/io/ftw.h
@@ -137,7 +137,7 @@ extern int ftw (const char *__dir, __ftw_func_t __func, int __descriptors)
__nonnull ((1, 2));
#else
# ifdef __REDIRECT
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int __REDIRECT (ftw, (const char *__dir, __ftw_func_t __func,
int __descriptors), ftw64) __nonnull ((1, 2));
# else
@@ -146,7 +146,7 @@ extern int __REDIRECT (ftw, (const char *__dir, __ftw_func_t __func,
__nonnull ((1, 2));
# endif
# else
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
# define ftw ftw64
# else
# define ftw __ftw64_time64
@@ -154,7 +154,7 @@ extern int __REDIRECT (ftw, (const char *__dir, __ftw_func_t __func,
# endif
#endif
#ifdef __USE_LARGEFILE64
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int ftw64 (const char *__dir, __ftw64_func_t __func,
int __descriptors) __nonnull ((1, 2));
# else
@@ -180,7 +180,7 @@ extern int nftw (const char *__dir, __nftw_func_t __func, int __descriptors,
int __flag) __nonnull ((1, 2));
# else
# ifdef __REDIRECT
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int __REDIRECT (nftw, (const char *__dir, __nftw_func_t __func,
int __descriptors, int __flag), nftw64)
__nonnull ((1, 2));
@@ -190,7 +190,7 @@ extern int __REDIRECT (nftw, (const char *__dir, __nftw_func_t __func,
__nonnull ((1, 2));
# endif
# else
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
# define nftw nftw64
# else
# define nftw __nftw64_time64
@@ -198,7 +198,7 @@ extern int __REDIRECT (nftw, (const char *__dir, __nftw_func_t __func,
# endif
# endif
# ifdef __USE_LARGEFILE64
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int nftw64 (const char *__dir, __nftw64_func_t __func,
int __descriptors, int __flag) __nonnull ((1, 2));
# else
diff --git a/io/sys/poll.h b/io/sys/poll.h
index 7858fad6b9..c324ff5dad 100644
--- a/io/sys/poll.h
+++ b/io/sys/poll.h
@@ -66,7 +66,7 @@ extern int ppoll (struct pollfd *__fds, nfds_t __nfds,
const __sigset_t *__ss)
__fortified_attr_access (__write_only__, 1, 2);
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# ifdef __REDIRECT
extern int __REDIRECT (ppoll, (struct pollfd *__fds, nfds_t __nfds,
const struct timespec *__timeout,
diff --git a/io/sys/stat.h b/io/sys/stat.h
index 1fa6d6e62e..3b4ba80132 100644
--- a/io/sys/stat.h
+++ b/io/sys/stat.h
@@ -209,7 +209,7 @@ extern int stat (const char *__restrict __file,
that file descriptor FD is open on and put them in BUF. */
extern int fstat (int __fd, struct stat *__buf) __THROW __nonnull ((2));
#else
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# ifdef __REDIRECT_NTH
extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
struct stat *__restrict __buf),
@@ -236,7 +236,7 @@ extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf), fstat64)
# endif
#endif
#ifdef __USE_LARGEFILE64
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int stat64 (const char *__restrict __file,
struct stat64 *__restrict __buf) __THROW __nonnull ((1, 2));
extern int fstat64 (int __fd, struct stat64 *__buf) __THROW __nonnull ((2));
@@ -265,7 +265,7 @@ extern int fstatat (int __fd, const char *__restrict __file,
struct stat *__restrict __buf, int __flag)
__THROW __nonnull ((2, 3));
# else
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# ifdef __REDIRECT_NTH
extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
struct stat *__restrict __buf,
@@ -287,7 +287,7 @@ extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
# endif
# ifdef __USE_LARGEFILE64
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int fstatat64 (int __fd, const char *__restrict __file,
struct stat64 *__restrict __buf, int __flag)
__THROW __nonnull ((2, 3));
@@ -313,7 +313,7 @@ extern int __REDIRECT_NTH (fstatat64, (int __fd,
extern int lstat (const char *__restrict __file,
struct stat *__restrict __buf) __THROW __nonnull ((1, 2));
# else
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# ifdef __REDIRECT_NTH
extern int __REDIRECT_NTH (lstat,
(const char *__restrict __file,
@@ -334,7 +334,7 @@ extern int __REDIRECT_NTH (lstat,
# endif
# endif
# ifdef __USE_LARGEFILE64
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int lstat64 (const char *__restrict __file,
struct stat64 *__restrict __buf)
__THROW __nonnull ((1, 2));
@@ -427,7 +427,7 @@ extern int mkfifoat (int __fd, const char *__path, __mode_t __mode)
#endif
\f
#ifdef __USE_ATFILE
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* Set file access and modification times relative to directory file
descriptor. */
extern int utimensat (int __fd, const char *__path,
@@ -447,7 +447,7 @@ extern int __REDIRECT_NTH (utimensat, (int fd, const char *__path,
#endif
#ifdef __USE_XOPEN2K8
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* Set file access and modification times of the file associated with FD. */
extern int futimens (int __fd, const struct timespec __times[2]) __THROW;
diff --git a/io/utime.h b/io/utime.h
index c5eacedd6a..1c7587d9c1 100644
--- a/io/utime.h
+++ b/io/utime.h
@@ -35,7 +35,7 @@ __BEGIN_DECLS
/* Structure describing file times. */
struct utimbuf
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
__time64_t actime; /* Access time. */
__time64_t modtime; /* Modification time. */
#else
@@ -46,7 +46,7 @@ struct utimbuf
/* Set the access and modification times of FILE to those given in
*FILE_TIMES. If FILE_TIMES is NULL, set them to the current time. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int utime (const char *__file,
const struct utimbuf *__file_times)
__THROW __nonnull ((1));
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..d08f30a6e0 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 == 64} 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
diff --git a/misc/sys/ioctl.h b/misc/sys/ioctl.h
index 3f2338ddd3..ea6583e122 100644
--- a/misc/sys/ioctl.h
+++ b/misc/sys/ioctl.h
@@ -38,7 +38,7 @@ __BEGIN_DECLS
/* Perform the I/O control operation specified by REQUEST on FD.
One argument may follow; its presence and type depend on REQUEST.
Return value depends on REQUEST. Usually -1 indicates error. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int ioctl (int __fd, unsigned long int __request, ...) __THROW;
#else
# ifdef __REDIRECT
diff --git a/misc/sys/select.h b/misc/sys/select.h
index e6a0c1b8b2..2e45e94bc1 100644
--- a/misc/sys/select.h
+++ b/misc/sys/select.h
@@ -98,7 +98,7 @@ __BEGIN_DECLS
This function is a cancellation point and therefore not marked with
__THROW. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int select (int __nfds, fd_set *__restrict __readfds,
fd_set *__restrict __writefds,
fd_set *__restrict __exceptfds,
@@ -123,7 +123,7 @@ extern int __REDIRECT (select,
This function is a cancellation point and therefore not marked with
__THROW. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int pselect (int __nfds, fd_set *__restrict __readfds,
fd_set *__restrict __writefds,
fd_set *__restrict __exceptfds,
diff --git a/posix/glob.h b/posix/glob.h
index 3406662840..b6bba0fbcd 100644
--- a/posix/glob.h
+++ b/posix/glob.h
@@ -150,7 +150,7 @@ extern int glob (const char *__restrict __pattern, int __flags,
/* Free storage allocated in PGLOB by a previous `glob' call. */
extern void globfree (glob_t *__pglob) __THROW;
#else
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
extern int __REDIRECT_NTHNL (glob, (const char *__restrict __pattern,
int __flags,
int (*__errfunc) (const char *, int),
@@ -170,7 +170,7 @@ extern void __REDIRECT_NTH (globfree, (glob_t *__pglob), globfree64);
#endif
#ifdef __USE_LARGEFILE64
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
extern int __REDIRECT_NTHNL (glob64, (const char *__restrict __pattern,
int __flags,
int (*__errfunc) (const char *, int),
diff --git a/posix/sched.h b/posix/sched.h
index 3eac206f35..49f504a488 100644
--- a/posix/sched.h
+++ b/posix/sched.h
@@ -74,7 +74,7 @@ extern int sched_get_priority_max (int __algorithm) __THROW;
extern int sched_get_priority_min (int __algorithm) __THROW;
/* Get the SCHED_RR interval for the named process. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __THROW;
#else
# ifdef __REDIRECT_NTH
diff --git a/posix/sys/wait.h b/posix/sys/wait.h
index edbb7b4392..1f44ee1145 100644
--- a/posix/sys/wait.h
+++ b/posix/sys/wait.h
@@ -139,7 +139,7 @@ struct rusage;
nil, store information about the child's resource usage there. If the
WUNTRACED bit is set in OPTIONS, return status for stopped children;
otherwise don't. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern __pid_t wait3 (int *__stat_loc, int __options,
struct rusage * __usage) __THROWNL;
# else
@@ -154,7 +154,7 @@ extern __pid_t __REDIRECT_NTHNL (wait3, (int *__stat_loc, int __options,
#endif
#ifdef __USE_MISC
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* PID is like waitpid. Other args are like wait3. */
extern __pid_t wait4 (__pid_t __pid, int *__stat_loc, int __options,
struct rusage *__usage) __THROWNL;
diff --git a/resolv/netdb.h b/resolv/netdb.h
index 14228b0d95..b7f473fafe 100644
--- a/resolv/netdb.h
+++ b/resolv/netdb.h
@@ -701,7 +701,7 @@ extern int getaddrinfo_a (int __mode, struct gaicb *__list[__restrict_arr],
extern int gai_suspend (const struct gaicb *const __list[], int __ent,
const struct timespec *__timeout);
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# if defined(__REDIRECT)
extern int __REDIRECT (gai_suspend, (const struct gaicb *const __list[],
int __ent,
diff --git a/resource/sys/resource.h b/resource/sys/resource.h
index a5634ba715..b0bf751e92 100644
--- a/resource/sys/resource.h
+++ b/resource/sys/resource.h
@@ -88,7 +88,7 @@ extern int setrlimit64 (__rlimit_resource_t __resource,
and put it in *USAGE. Returns 0 for success, -1 for failure. */
extern int getrusage (__rusage_who_t __who, struct rusage *__usage) __THROW;
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# if defined(__REDIRECT_NTH)
extern int __REDIRECT_NTH (getrusage, (__rusage_who_t __who,
struct rusage *__usage),
diff --git a/rt/aio.h b/rt/aio.h
index 37d19abf16..e71435733f 100644
--- a/rt/aio.h
+++ b/rt/aio.h
@@ -193,7 +193,7 @@ extern __ssize_t __REDIRECT_NTH (aio_return, (struct aiocb *__aiocbp),
extern int __REDIRECT_NTH (aio_cancel,
(int __fildes, struct aiocb *__aiocbp),
aio_cancel64);
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
extern int __REDIRECT_NTH (aio_suspend,
(const struct aiocb *const __list[], int __nent,
const struct timespec *__restrict __timeout),
@@ -215,7 +215,7 @@ extern int __REDIRECT_NTH (aio_fsync,
# define aio_error aio_error64
# define aio_return aio_return64
# define aio_cancel aio_cancel64
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# define aio_suspend __aio_suspend_time64
# else
# define aio_suspend aio_suspend64
diff --git a/rt/mqueue.h b/rt/mqueue.h
index d39334ba16..14fc2a6195 100644
--- a/rt/mqueue.h
+++ b/rt/mqueue.h
@@ -71,7 +71,7 @@ extern int mq_send (mqd_t __mqdes, const char *__msg_ptr, size_t __msg_len,
unsigned int __msg_prio) __nonnull ((2));
#ifdef __USE_XOPEN2K
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* Receive the oldest from highest priority messages in message queue
MQDES, stop waiting if ABS_TIMEOUT expires. */
extern ssize_t mq_timedreceive (mqd_t __mqdes, char *__restrict __msg_ptr,
diff --git a/signal/signal.h b/signal/signal.h
index f37499ce60..8e07b041b1 100644
--- a/signal/signal.h
+++ b/signal/signal.h
@@ -269,7 +269,7 @@ extern int sigwaitinfo (const sigset_t *__restrict __set,
This function is a cancellation point and therefore not marked with
__THROW. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int sigtimedwait (const sigset_t *__restrict __set,
siginfo_t *__restrict __info,
const struct timespec *__restrict __timeout)
diff --git a/socket/sys/socket.h b/socket/sys/socket.h
index 366eaab845..463cf3291b 100644
--- a/socket/sys/socket.h
+++ b/socket/sys/socket.h
@@ -170,7 +170,7 @@ extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n,
This function is a cancellation point and therefore not marked with
__THROW. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern ssize_t sendmsg (int __fd, const struct msghdr *__message,
int __flags);
#else
@@ -191,7 +191,7 @@ extern ssize_t __sendmsg64 (int __fd, const struct msghdr *__message,
This function is a cancellation point and therefore not marked with
__THROW. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int sendmmsg (int __fd, struct mmsghdr *__vmessages,
unsigned int __vlen, int __flags);
# else
@@ -204,7 +204,7 @@ extern int __sendmmsg64 (int __fd, struct mmsghdr *__vmessages,
unsigned int __vlen, int __flags);
# define sendmmsg __sendmmsg64
# endif
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
#endif /* __USE_GNU */
/* Receive a message as described by MESSAGE from socket FD.
@@ -212,7 +212,7 @@ extern int __sendmmsg64 (int __fd, struct mmsghdr *__vmessages,
This function is a cancellation point and therefore not marked with
__THROW. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags);
#else
# ifdef __REDIRECT
@@ -231,7 +231,7 @@ extern ssize_t __recvmsg64 (int __fd, struct msghdr *__message, int __flags);
This function is a cancellation point and therefore not marked with
__THROW. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
unsigned int __vlen, int __flags,
struct timespec *__tmo);
@@ -251,7 +251,7 @@ extern int __REDIRECT (recvmmsg, (int __fd, struct mmsghdr *__vmessages,
/* Put the current value for socket FD's option OPTNAME at protocol level LEVEL
into OPTVAL (which is *OPTLEN bytes long), and set *OPTLEN to the value's
actual length. Returns 0 on success, -1 for errors. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int getsockopt (int __fd, int __level, int __optname,
void *__restrict __optval,
socklen_t *__restrict __optlen) __THROW;
@@ -273,7 +273,7 @@ extern int __getsockopt64 (int __fd, int __level, int __optname,
/* Set socket FD's option OPTNAME at protocol level LEVEL
to *OPTVAL (which is OPTLEN bytes long).
Returns 0 on success, -1 for errors. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int setsockopt (int __fd, int __level, int __optname,
const void *__optval, socklen_t __optlen) __THROW;
#else
diff --git a/support/timespec.h b/support/timespec.h
index 42f32bcc2c..5ccc7163a5 100644
--- a/support/timespec.h
+++ b/support/timespec.h
@@ -35,7 +35,7 @@ make_timespec (time_t s, long int ns)
enum { TIMESPEC_HZ = 1000000000 };
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
struct timespec timespec_add (struct timespec, struct timespec)
__attribute__((const));
struct timespec timespec_sub (struct timespec, struct timespec)
diff --git a/support/xtime.h b/support/xtime.h
index 5200eef2e0..9961899634 100644
--- a/support/xtime.h
+++ b/support/xtime.h
@@ -30,7 +30,7 @@ __BEGIN_DECLS
/* The following functions call the corresponding libc functions and
terminate the process on error. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
void xclock_gettime (clockid_t clock, struct timespec *ts);
void xclock_settime (clockid_t clock, const struct timespec *ts);
#else
diff --git a/support/xunistd.h b/support/xunistd.h
index b5e8c2f420..13be9a46a3 100644
--- a/support/xunistd.h
+++ b/support/xunistd.h
@@ -36,7 +36,7 @@ pid_t xwaitpid (pid_t, int *status, int flags);
void xpipe (int[2]);
void xdup2 (int, int);
int xopen (const char *path, int flags, mode_t);
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
# ifdef __USE_FILE_OFFSET64
void xstat (const char *path, struct stat *);
void xlstat (const char *path, struct stat *);
diff --git a/sysdeps/generic/features-time64.h b/sysdeps/generic/features-time64.h
deleted file mode 100644
index 4d38b8ba76..0000000000
--- a/sysdeps/generic/features-time64.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Features part to handle 64-bit time_t support. Generic version.
- Copyright (C) 2021-2024 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-/* The generic configuration only support _TIME_BITS=32. */
diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h
index 1607fdf29a..3d4f4a756c 100644
--- a/sysdeps/nptl/pthread.h
+++ b/sysdeps/nptl/pthread.h
@@ -223,7 +223,7 @@ extern int pthread_join (pthread_t __th, void **__thread_return);
the thread in *THREAD_RETURN, if THREAD_RETURN is not NULL. */
extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __THROW;
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* Make calling thread wait for termination of the thread TH, but only
until TIMEOUT. The exit status of the thread is stored in
*THREAD_RETURN, if THREAD_RETURN is not NULL.
@@ -796,7 +796,7 @@ extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
#ifdef __USE_XOPEN2K
/* Wait until lock becomes available, or specified time passes. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
const struct timespec *__restrict
__abstime) __THROWNL __nonnull ((1, 2));
@@ -813,7 +813,7 @@ extern int __REDIRECT_NTHNL (pthread_mutex_timedlock,
#endif
#ifdef __USE_GNU
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex,
clockid_t __clockid,
const struct timespec *__restrict
@@ -982,7 +982,7 @@ extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
# ifdef __USE_XOPEN2K
/* Try to acquire read lock for RWLOCK or return after specified time. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
const struct timespec *__restrict
__abstime) __THROWNL __nonnull ((1, 2));
@@ -1000,7 +1000,7 @@ extern int __REDIRECT_NTHNL (pthread_rwlock_timedrdlock,
# endif
# ifdef __USE_GNU
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock,
clockid_t __clockid,
const struct timespec *__restrict
@@ -1029,7 +1029,7 @@ extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
# ifdef __USE_XOPEN2K
/* Try to acquire write lock for RWLOCK or return after specified time. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
const struct timespec *__restrict
__abstime) __THROWNL __nonnull ((1, 2));
@@ -1047,7 +1047,7 @@ extern int __REDIRECT_NTHNL (pthread_rwlock_timedwrlock,
# endif
# ifdef __USE_GNU
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock,
clockid_t __clockid,
const struct timespec *__restrict
@@ -1141,7 +1141,7 @@ extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
This function is a cancellation point and therefore not marked with
__THROW. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
pthread_mutex_t *__restrict __mutex,
const struct timespec *__restrict __abstime)
@@ -1167,7 +1167,7 @@ extern int __REDIRECT (pthread_cond_timedwait,
This function is a cancellation point and therefore not marked with
__THROW. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond,
pthread_mutex_t *__restrict __mutex,
__clockid_t __clock_id,
diff --git a/sysdeps/pthread/semaphore.h b/sysdeps/pthread/semaphore.h
index c75ca4ce6d..8a09633699 100644
--- a/sysdeps/pthread/semaphore.h
+++ b/sysdeps/pthread/semaphore.h
@@ -59,7 +59,7 @@ extern int sem_wait (sem_t *__sem) __nonnull ((1));
This function is a cancellation point and therefore not marked with
__THROW. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int sem_timedwait (sem_t *__restrict __sem,
const struct timespec *__restrict __abstime)
__nonnull ((1, 2));
@@ -77,7 +77,7 @@ extern int __REDIRECT (sem_timedwait,
#endif
#ifdef __USE_GNU
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int sem_clockwait (sem_t *__restrict __sem,
clockid_t clock,
const struct timespec *__restrict __abstime)
diff --git a/sysdeps/pthread/threads.h b/sysdeps/pthread/threads.h
index c5410b5c3a..7cade24e1f 100644
--- a/sysdeps/pthread/threads.h
+++ b/sysdeps/pthread/threads.h
@@ -90,7 +90,7 @@ extern thrd_t thrd_current (void);
__TIME_POINT. The current thread may resume if receives a signal. In
that case, if __REMAINING is not NULL, the remaining time is stored in
the object pointed by it. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int thrd_sleep (const struct timespec *__time_point,
struct timespec *__remaining);
#else
@@ -143,7 +143,7 @@ extern int mtx_lock (mtx_t *__mutex);
/* Block the current thread until the mutex pointed by __MUTEX is unlocked
or time pointed by __TIME_POINT is reached. In case the mutex is unlock,
the current thread will not be blocked. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int mtx_timedlock (mtx_t *__restrict __mutex,
const struct timespec *__restrict __time_point);
#else
@@ -194,7 +194,7 @@ extern int cnd_wait (cnd_t *__cond, mtx_t *__mutex);
/* Block current thread on the condition variable until condition variable
pointed by __COND is signaled or time pointed by __TIME_POINT is
reached. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int cnd_timedwait (cnd_t *__restrict __cond,
mtx_t *__restrict __mutex,
const struct timespec *__restrict __time_point);
diff --git a/sysdeps/unix/sysv/linux/arm/bits/struct_stat.h b/sysdeps/unix/sysv/linux/arm/bits/struct_stat.h
index 255feaa8cb..89534fea85 100644
--- a/sysdeps/unix/sysv/linux/arm/bits/struct_stat.h
+++ b/sysdeps/unix/sysv/linux/arm/bits/struct_stat.h
@@ -28,7 +28,7 @@
struct stat
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
#else
__dev_t st_dev; /* Device. */
@@ -83,13 +83,13 @@ struct stat
# else
__ino64_t st_ino; /* File serial number. */
# endif
-#endif /* __USE_TIME_BITS64 */
+#endif /* __USE_TIME64_REDIRECTS */
};
#ifdef __USE_LARGEFILE64
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev; /* Device. */
@@ -125,7 +125,7 @@ struct stat64
unsigned long int st_ctimensec; /* Nsecs of last status change. */
# endif
__ino64_t st_ino; /* File serial number. */
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
#endif
diff --git a/sysdeps/unix/sysv/linux/bits/socket-constants.h b/sysdeps/unix/sysv/linux/bits/socket-constants.h
index d997dbf594..b2102d3abf 100644
--- a/sysdeps/unix/sysv/linux/bits/socket-constants.h
+++ b/sysdeps/unix/sysv/linux/bits/socket-constants.h
@@ -64,7 +64,7 @@
# define SO_TIMESTAMPNS_NEW 64
# define SO_TIMESTAMPING_NEW 65
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# define SO_RCVTIMEO SO_RCVTIMEO_NEW
# define SO_SNDTIMEO SO_SNDTIMEO_NEW
# define SO_TIMESTAMP SO_TIMESTAMP_NEW
diff --git a/sysdeps/unix/sysv/linux/bits/time.h b/sysdeps/unix/sysv/linux/bits/time.h
index b70ba58a7d..cab4057971 100644
--- a/sysdeps/unix/sysv/linux/bits/time.h
+++ b/sysdeps/unix/sysv/linux/bits/time.h
@@ -77,7 +77,7 @@ __BEGIN_DECLS
/* Tune a POSIX clock. */
extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) __THROW __nonnull((2));
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# if defined(__REDIRECT_NTH)
extern int __REDIRECT_NTH (clock_adjtime, (__clockid_t __clock_id,
struct timex *__utx),
diff --git a/sysdeps/unix/sysv/linux/bits/timex.h b/sysdeps/unix/sysv/linux/bits/timex.h
index 398d8094f2..03ccde6d0a 100644
--- a/sysdeps/unix/sysv/linux/bits/timex.h
+++ b/sysdeps/unix/sysv/linux/bits/timex.h
@@ -25,7 +25,7 @@
struct timex
{
-# if defined __USE_TIME_BITS64 || (__TIMESIZE == 64 && __WORDSIZE == 32)
+# if defined __USE_TIME64_REDIRECTS || (__TIMESIZE == 64 && __WORDSIZE == 32)
unsigned int modes; /* mode selector */
int :32; /* pad */
long long offset; /* time offset (usec) */
diff --git a/sysdeps/unix/sysv/linux/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_msqid_ds.h
index fae50281c7..86296ca922 100644
--- a/sysdeps/unix/sysv/linux/bits/types/struct_msqid_ds.h
+++ b/sysdeps/unix/sysv/linux/bits/types/struct_msqid_ds.h
@@ -26,7 +26,7 @@
The type `struct msg' is opaque. */
struct msqid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_msqid64_ds_helper.h>
#else
struct ipc_perm msg_perm; /* structure describing operation permission */
diff --git a/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h
index 3c277ed1d8..2ac89b3ce4 100644
--- a/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h
+++ b/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h
@@ -23,7 +23,7 @@
/* Data structure describing a set of semaphores. */
struct semid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_semid64_ds_helper.h>
#else
struct ipc_perm sem_perm; /* operation permission struct */
diff --git a/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h
index 09de0b4e3a..1012ed0317 100644
--- a/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h
+++ b/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h
@@ -23,7 +23,7 @@
/* Data structure describing a shared memory segment. */
struct shmid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_shmid64_ds_helper.h>
#else
struct ipc_perm shm_perm; /* operation permission struct */
diff --git a/sysdeps/unix/sysv/linux/csky/bits/struct_stat.h b/sysdeps/unix/sysv/linux/csky/bits/struct_stat.h
index 4b4822d6d0..47a9f0aaff 100644
--- a/sysdeps/unix/sysv/linux/csky/bits/struct_stat.h
+++ b/sysdeps/unix/sysv/linux/csky/bits/struct_stat.h
@@ -43,7 +43,7 @@
struct stat
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
#else
__dev_t st_dev; /* Device. */
@@ -88,7 +88,7 @@ struct stat
#ifdef __USE_LARGEFILE64
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev; /* Device. */
diff --git a/sysdeps/unix/sysv/linux/features-time64.h b/sysdeps/unix/sysv/linux/features-time64.h
index dd3442c2ea..8d573cd23e 100644
--- a/sysdeps/unix/sysv/linux/features-time64.h
+++ b/sysdeps/unix/sysv/linux/features-time64.h
@@ -24,9 +24,8 @@
# if _TIME_BITS == 64
# if ! defined (_FILE_OFFSET_BITS) || _FILE_OFFSET_BITS != 64
# error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64"
-# elif __TIMESIZE == 32
-# define __USE_TIME_BITS64 1
# endif
+# define __USE_TIME_BITS64 1
# elif _TIME_BITS == 32
# if __TIMESIZE > 32
# error "_TIME_BITS=32 is not compatible with __TIMESIZE > 32"
@@ -34,4 +33,10 @@
# else
# error Invalid _TIME_BITS value (can only be 32 or 64-bit)
# endif
+#elif __TIMESIZE == 64
+# define __USE_TIME_BITS64 1
+#endif
+
+#if defined __USE_TIME_BITS64 && __TIMESIZE == 32
+# define __USE_TIME64_REDIRECTS 1
#endif
diff --git a/sysdeps/unix/sysv/linux/hppa/bits/socket-constants.h b/sysdeps/unix/sysv/linux/hppa/bits/socket-constants.h
index 58b523d03a..80a76a17dc 100644
--- a/sysdeps/unix/sysv/linux/hppa/bits/socket-constants.h
+++ b/sysdeps/unix/sysv/linux/hppa/bits/socket-constants.h
@@ -54,7 +54,7 @@
# define SO_TIMESTAMPNS_NEW 0x4039
# define SO_TIMESTAMPING_NEW 0x403A
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# define SO_RCVTIMEO SO_RCVTIMEO_NEW
# define SO_SNDTIMEO SO_SNDTIMEO_NEW
# define SO_TIMESTAMP SO_TIMESTAMP_NEW
diff --git a/sysdeps/unix/sysv/linux/hppa/bits/struct_stat.h b/sysdeps/unix/sysv/linux/hppa/bits/struct_stat.h
index 069efdbc55..09ea40054b 100644
--- a/sysdeps/unix/sysv/linux/hppa/bits/struct_stat.h
+++ b/sysdeps/unix/sysv/linux/hppa/bits/struct_stat.h
@@ -28,7 +28,7 @@
struct stat
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
#else
__dev_t st_dev; /* Device. */
@@ -83,13 +83,13 @@ struct stat
# else
__ino64_t st_ino; /* File serial number. */
# endif
-#endif /* __USE_TIME_BITS64 */
+#endif /* __USE_TIME64_REDIRECTS */
};
#ifdef __USE_LARGEFILE64
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev; /* Device. */
@@ -125,7 +125,7 @@ struct stat64
unsigned long int st_ctimensec; /* Nsecs of last status change. */
# endif
__ino64_t st_ino; /* File serial number. */
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
#endif
diff --git a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_msqid_ds.h
index 2bc7cac06d..4995e0a4a5 100644
--- a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_msqid_ds.h
+++ b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_msqid_ds.h
@@ -26,7 +26,7 @@
The type `struct msg' is opaque. */
struct msqid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_msqid64_ds_helper.h>
#else
struct ipc_perm msg_perm; /* structure describing operation permission */
diff --git a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h
index dd8fbebcf4..df88949dc2 100644
--- a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h
+++ b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h
@@ -23,7 +23,7 @@
/* Data structure describing a set of semaphores. */
struct semid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_semid64_ds_helper.h>
#else
struct ipc_perm sem_perm; /* operation permission struct */
diff --git a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h
index 58ac572b6e..cb3b0303aa 100644
--- a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h
+++ b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h
@@ -23,7 +23,7 @@
/* Data structure describing a shared memory segment. */
struct shmid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_shmid64_ds_helper.h>
#else
struct ipc_perm shm_perm; /* operation permission struct */
diff --git a/sysdeps/unix/sysv/linux/m68k/bits/struct_stat.h b/sysdeps/unix/sysv/linux/m68k/bits/struct_stat.h
index 3b1db157bc..b7f20189b1 100644
--- a/sysdeps/unix/sysv/linux/m68k/bits/struct_stat.h
+++ b/sysdeps/unix/sysv/linux/m68k/bits/struct_stat.h
@@ -25,7 +25,7 @@
struct stat
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
#else
__dev_t st_dev; /* Device. */
@@ -80,13 +80,13 @@ struct stat
# else
__ino64_t st_ino; /* File serial number. */
# endif
-#endif /* __USE_TIME_BITS64 */
+#endif /* __USE_TIME64_REDIRECTS */
};
#ifdef __USE_LARGEFILE64
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev; /* Device. */
@@ -122,7 +122,7 @@ struct stat64
unsigned long int st_ctimensec; /* Nsecs of last status change. */
# endif
__ino64_t st_ino; /* File serial number. */
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
#endif
diff --git a/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h b/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h
index 0f4693fb1f..ff1e269f14 100644
--- a/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h
+++ b/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h
@@ -26,7 +26,7 @@
#ifndef __USE_FILE_OFFSET64
struct stat
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
#else
__dev_t st_dev; /* Device. */
@@ -64,7 +64,7 @@ struct stat
# endif
unsigned int __glibc_reserved4;
unsigned int __glibc_reserved5;
-#endif /* __USE_TIME_BITS64 */
+#endif /* __USE_TIME64_REDIRECTS */
};
#else /* __USE_FILE_OFFSET64 */
/* MS: If __USE_FILE_OFFSET64 is setup then struct stat should match stat64
@@ -74,7 +74,7 @@ struct stat
* create one ifdef to separate stats structures. */
struct stat
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
#else
unsigned long long st_dev; /* Device. */
@@ -112,14 +112,14 @@ struct stat
# endif
unsigned int __glibc_reserved4;
unsigned int __glibc_reserved5;
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
#endif /* __USE_FILE_OFFSET64 */
#ifdef __USE_LARGEFILE64
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
unsigned long long st_dev; /* Device. */
@@ -157,7 +157,7 @@ struct stat64
# endif
unsigned int __glibc_reserved4;
unsigned int __glibc_reserved5;
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
#endif
diff --git a/sysdeps/unix/sysv/linux/mips/bits/socket-constants.h b/sysdeps/unix/sysv/linux/mips/bits/socket-constants.h
index c6908a2793..77ffc8b890 100644
--- a/sysdeps/unix/sysv/linux/mips/bits/socket-constants.h
+++ b/sysdeps/unix/sysv/linux/mips/bits/socket-constants.h
@@ -54,7 +54,7 @@
# define SO_TIMESTAMPNS_NEW 64
# define SO_TIMESTAMPING_NEW 65
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# define SO_RCVTIMEO SO_RCVTIMEO_NEW
# define SO_SNDTIMEO SO_SNDTIMEO_NEW
# define SO_TIMESTAMP SO_TIMESTAMP_NEW
diff --git a/sysdeps/unix/sysv/linux/mips/bits/struct_stat.h b/sysdeps/unix/sysv/linux/mips/bits/struct_stat.h
index 277ebad9b6..50a4b367f6 100644
--- a/sysdeps/unix/sysv/linux/mips/bits/struct_stat.h
+++ b/sysdeps/unix/sysv/linux/mips/bits/struct_stat.h
@@ -29,7 +29,7 @@
/* Structure describing file characteristics. */
struct stat
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
unsigned long int st_dev;
@@ -82,13 +82,13 @@ struct stat
__blkcnt64_t st_blocks; /* Number of 512-byte blocks allocated. */
# endif
long int st_pad5[14];
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
# ifdef __USE_LARGEFILE64
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
unsigned long int st_dev;
@@ -123,7 +123,7 @@ struct stat64
long int st_pad3;
__blkcnt64_t st_blocks; /* Number of 512-byte blocks allocated. */
long int st_pad4[14];
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
# endif /* __USE_LARGEFILE64 */
@@ -131,7 +131,7 @@ struct stat64
struct stat
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev;
@@ -189,7 +189,7 @@ struct stat
#ifdef __USE_LARGEFILE64
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev;
@@ -224,7 +224,7 @@ struct stat64
unsigned int st_pad3;
__blkcnt64_t st_blocks;
int st_pad4[14];
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
#endif
diff --git a/sysdeps/unix/sysv/linux/mips/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/mips/bits/types/struct_msqid_ds.h
index 4e8bd51b0a..09c53648b7 100644
--- a/sysdeps/unix/sysv/linux/mips/bits/types/struct_msqid_ds.h
+++ b/sysdeps/unix/sysv/linux/mips/bits/types/struct_msqid_ds.h
@@ -26,7 +26,7 @@
The type `struct msg' is opaque. */
struct msqid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_msqid64_ds_helper.h>
#else
struct ipc_perm msg_perm; /* structure describing operation permission */
diff --git a/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h
index d1a30e3164..0746684a7d 100644
--- a/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h
+++ b/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h
@@ -23,7 +23,7 @@
/* Data structure describing a set of semaphores. */
struct semid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_semid64_ds_helper.h>
#else
struct ipc_perm sem_perm; /* operation permission struct */
diff --git a/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h
index 8771164b57..c665af1874 100644
--- a/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h
+++ b/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h
@@ -23,7 +23,7 @@
/* Data structure describing a shared memory segment. */
struct shmid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_shmid64_ds_helper.h>
#else
struct ipc_perm shm_perm; /* operation permission struct */
diff --git a/sysdeps/unix/sysv/linux/nios2/bits/struct_stat.h b/sysdeps/unix/sysv/linux/nios2/bits/struct_stat.h
index 672c7c6bb8..dab466d881 100644
--- a/sysdeps/unix/sysv/linux/nios2/bits/struct_stat.h
+++ b/sysdeps/unix/sysv/linux/nios2/bits/struct_stat.h
@@ -43,7 +43,7 @@
struct stat
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
#else
__dev_t st_dev; /* Device. */
@@ -88,7 +88,7 @@ struct stat
#ifdef __USE_LARGEFILE64
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev; /* Device. */
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/socket-constants.h b/sysdeps/unix/sysv/linux/powerpc/bits/socket-constants.h
index 6be5055e65..0d3e095c5d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/socket-constants.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/socket-constants.h
@@ -54,7 +54,7 @@
# define SO_TIMESTAMPNS_NEW 64
# define SO_TIMESTAMPING_NEW 65
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# define SO_RCVTIMEO SO_RCVTIMEO_NEW
# define SO_SNDTIMEO SO_SNDTIMEO_NEW
# define SO_TIMESTAMP SO_TIMESTAMP_NEW
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/struct_stat.h b/sysdeps/unix/sysv/linux/powerpc/bits/struct_stat.h
index f6328399cd..2cf331544a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/struct_stat.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/struct_stat.h
@@ -28,7 +28,7 @@
#if __WORDSIZE == 32
struct stat
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev; /* Device. */
@@ -79,13 +79,13 @@ struct stat
# endif
unsigned long int __glibc_reserved4;
unsigned long int __glibc_reserved5;
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
# ifdef __USE_LARGEFILE64
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev; /* Device. */
@@ -122,7 +122,7 @@ struct stat64
# endif
unsigned long int __glibc_reserved4;
unsigned long int __glibc_reserved5;
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
# endif /* __USE_LARGEFILE64 */
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_msqid_ds.h
index 830629cd37..44ae08265d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_msqid_ds.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_msqid_ds.h
@@ -26,7 +26,7 @@
The type `struct msg' is opaque. */
struct msqid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_msqid64_ds_helper.h>
#else
struct ipc_perm msg_perm; /* structure describing operation permission */
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h
index 4370257557..ccee57c28b 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h
@@ -23,7 +23,7 @@
/* Data structure describing a set of semaphores. */
struct semid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_semid64_ds_helper.h>
#else
struct ipc_perm sem_perm; /* operation permission struct */
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h
index da1b4b3c56..58145d0a5d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h
@@ -23,7 +23,7 @@
/* Data structure describing a shared memory segment. */
struct shmid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_shmid64_ds_helper.h>
#else
struct ipc_perm shm_perm; /* operation permission struct */
diff --git a/sysdeps/unix/sysv/linux/s390/bits/struct_stat.h b/sysdeps/unix/sysv/linux/s390/bits/struct_stat.h
index 9911c47bb2..e5c9024fb2 100644
--- a/sysdeps/unix/sysv/linux/s390/bits/struct_stat.h
+++ b/sysdeps/unix/sysv/linux/s390/bits/struct_stat.h
@@ -65,7 +65,7 @@ struct stat
#else
struct stat
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev; /* Device. */
@@ -166,7 +166,7 @@ struct stat64
# else
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev; /* Device. */
diff --git a/sysdeps/unix/sysv/linux/sh/bits/struct_stat.h b/sysdeps/unix/sysv/linux/sh/bits/struct_stat.h
index cbd4bc0f31..d47cd7be1e 100644
--- a/sysdeps/unix/sysv/linux/sh/bits/struct_stat.h
+++ b/sysdeps/unix/sysv/linux/sh/bits/struct_stat.h
@@ -28,7 +28,7 @@
struct stat
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
#else
__dev_t st_dev; /* Device. */
@@ -83,13 +83,13 @@ struct stat
# else
__ino64_t st_ino; /* File serial number. */
# endif
-#endif /* __USE_TIME_BITS64 */
+#endif /* __USE_TIME64_REDIRECTS */
};
#ifdef __USE_LARGEFILE64
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev; /* Device. */
@@ -125,7 +125,7 @@ struct stat64
unsigned long int st_ctimensec; /* Nsecs of last status change. */
# endif
__ino64_t st_ino; /* File serial number. */
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
#endif
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h b/sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h
index 59958611c4..e7a6b684cc 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h
@@ -54,7 +54,7 @@
# define SO_TIMESTAMPNS_NEW 0x0042
# define SO_TIMESTAMPING_NEW 0x0043
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# define SO_RCVTIMEO SO_RCVTIMEO_NEW
# define SO_SNDTIMEO SO_SNDTIMEO_NEW
# define SO_TIMESTAMP SO_TIMESTAMP_NEW
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/struct_stat.h b/sysdeps/unix/sysv/linux/sparc/bits/struct_stat.h
index 4e48634edc..fcab5f4804 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/struct_stat.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/struct_stat.h
@@ -28,7 +28,7 @@
struct stat
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
#else
__dev_t st_dev; /* Device. */
@@ -79,13 +79,13 @@ struct stat
# endif
unsigned long int __glibc_reserved4;
unsigned long int __glibc_reserved5;
-#endif /* __USE_TIME_BITS64 */
+#endif /* __USE_TIME64_REDIRECTS */
};
#ifdef __USE_LARGEFILE64
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev; /* Device. */
@@ -126,7 +126,7 @@ struct stat64
# endif
unsigned long int __glibc_reserved4;
unsigned long int __glibc_reserved5;
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
#endif
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_msqid_ds.h
index db783c28d4..ed8d47c9b6 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_msqid_ds.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_msqid_ds.h
@@ -26,7 +26,7 @@
The type `struct msg' is opaque. */
struct msqid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_msqid64_ds_helper.h>
#else
struct ipc_perm msg_perm; /* structure describing operation permission */
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h
index 1c8a3693db..b9e729b8b4 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h
@@ -23,7 +23,7 @@
/* Data structure describing a set of semaphores. */
struct semid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_semid64_ds_helper.h>
#else
struct ipc_perm sem_perm; /* operation permission struct */
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h
index 35a0cc36ab..7885d2ab25 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h
@@ -23,7 +23,7 @@
/* Data structure describing a shared memory segment. */
struct shmid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_shmid64_ds_helper.h>
#else
struct ipc_perm shm_perm; /* operation permission struct */
diff --git a/sysdeps/unix/sysv/linux/sys/epoll.h b/sysdeps/unix/sysv/linux/sys/epoll.h
index 9b51e3bd14..fc8dce45c8 100644
--- a/sysdeps/unix/sysv/linux/sys/epoll.h
+++ b/sysdeps/unix/sysv/linux/sys/epoll.h
@@ -140,7 +140,7 @@ extern int epoll_pwait (int __epfd, struct epoll_event *__events,
This function is a cancellation point and therefore not marked with
__THROW. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int epoll_pwait2 (int __epfd, struct epoll_event *__events,
int __maxevents, const struct timespec *__timeout,
const __sigset_t *__ss)
diff --git a/sysdeps/unix/sysv/linux/sys/prctl.h b/sysdeps/unix/sysv/linux/sys/prctl.h
index b13b846261..79a9b31273 100644
--- a/sysdeps/unix/sysv/linux/sys/prctl.h
+++ b/sysdeps/unix/sysv/linux/sys/prctl.h
@@ -38,7 +38,7 @@
__BEGIN_DECLS
/* Control process execution. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int prctl (int __option, ...) __THROW;
#else
# ifdef __REDIRECT
diff --git a/sysdeps/unix/sysv/linux/sys/timerfd.h b/sysdeps/unix/sysv/linux/sys/timerfd.h
index 19d0cbfae0..f66ece306a 100644
--- a/sysdeps/unix/sysv/linux/sys/timerfd.h
+++ b/sysdeps/unix/sysv/linux/sys/timerfd.h
@@ -47,7 +47,7 @@ extern int timerfd_settime (int __ufd, int __flags,
const struct itimerspec *__utmr,
struct itimerspec *__otmr) __THROW;
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# if defined(__REDIRECT_NTH)
extern int __REDIRECT_NTH (timerfd_settime,
(int __ufd, int __flags,
@@ -62,7 +62,7 @@ extern int __REDIRECT_NTH (timerfd_settime,
/* Return the next expiration time of UFD. */
extern int timerfd_gettime (int __ufd, struct itimerspec *__otmr) __THROW;
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# if defined(__REDIRECT_NTH)
extern int __REDIRECT_NTH (timerfd_gettime, (int __ufd,
struct itimerspec *__otmr),
diff --git a/sysdeps/unix/sysv/linux/sys/timex.h b/sysdeps/unix/sysv/linux/sys/timex.h
index 28ce022253..568748d767 100644
--- a/sysdeps/unix/sysv/linux/sys/timex.h
+++ b/sysdeps/unix/sysv/linux/sys/timex.h
@@ -54,7 +54,7 @@ struct ntptimeval
__BEGIN_DECLS
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int adjtimex (struct timex *__ntx) __THROW __nonnull ((1));
extern int ntp_gettimex (struct ntptimeval *__ntv) __THROW __nonnull ((1));
diff --git a/sysdeps/unix/sysv/linux/x86/bits/struct_stat.h b/sysdeps/unix/sysv/linux/x86/bits/struct_stat.h
index 21aa315d8d..810d6566f0 100644
--- a/sysdeps/unix/sysv/linux/x86/bits/struct_stat.h
+++ b/sysdeps/unix/sysv/linux/x86/bits/struct_stat.h
@@ -25,7 +25,7 @@
struct stat
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
#else
__dev_t st_dev; /* Device. */
@@ -95,14 +95,14 @@ struct stat
__ino64_t st_ino; /* File serial number. */
# endif
# endif
-#endif /* __USE_TIME_BITS64 */
+#endif /* __USE_TIME64_REDIRECTS */
};
#ifdef __USE_LARGEFILE64
/* Note stat64 has the same shape as stat for x86-64. */
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev; /* Device. */
@@ -152,7 +152,7 @@ struct stat64
# else
__ino64_t st_ino; /* File serial number. */
# endif
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
#endif
diff --git a/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h
index 9f3d170b65..81867c0316 100644
--- a/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h
+++ b/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h
@@ -23,7 +23,7 @@
/* Data structure describing a set of semaphores. */
struct semid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_semid64_ds_helper.h>
#else
struct ipc_perm sem_perm; /* operation permission struct */
diff --git a/sysvipc/sys/msg.h b/sysvipc/sys/msg.h
index d0388b0522..4178ad9955 100644
--- a/sysvipc/sys/msg.h
+++ b/sysvipc/sys/msg.h
@@ -58,7 +58,7 @@ struct msgbuf
__BEGIN_DECLS
/* Message queue control operation. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int msgctl (int __msqid, int __cmd, struct msqid_ds *__buf) __THROW;
#else
# ifdef __REDIRECT_NTH
diff --git a/sysvipc/sys/sem.h b/sysvipc/sys/sem.h
index 5d9ec39296..812f1303b3 100644
--- a/sysvipc/sys/sem.h
+++ b/sysvipc/sys/sem.h
@@ -48,7 +48,7 @@ struct sembuf
__BEGIN_DECLS
/* Semaphore control operation. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int semctl (int __semid, int __semnum, int __cmd, ...) __THROW;
#else
# ifdef __REDIRECT_NTH
@@ -68,7 +68,7 @@ extern int semop (int __semid, struct sembuf *__sops, size_t __nsops) __THROW;
#ifdef __USE_GNU
/* Operate on semaphore with timeout. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int semtimedop (int __semid, struct sembuf *__sops, size_t __nsops,
const struct timespec *__timeout) __THROW;
# else
diff --git a/sysvipc/sys/shm.h b/sysvipc/sys/shm.h
index 04191656d5..496e57ef45 100644
--- a/sysvipc/sys/shm.h
+++ b/sysvipc/sys/shm.h
@@ -46,7 +46,7 @@ __BEGIN_DECLS
facility. The definition is found in XPG4.2. */
/* Shared memory control operation. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int shmctl (int __shmid, int __cmd, struct shmid_ds *__buf) __THROW;
#else
# ifdef __REDIRECT_NTH
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;
diff --git a/time/sys/time.h b/time/sys/time.h
index c8708198a5..8c3d0c3022 100644
--- a/time/sys/time.h
+++ b/time/sys/time.h
@@ -63,7 +63,7 @@ struct timezone
use localtime etc. instead.
This function itself is semi-obsolete;
most callers should use time or clock_gettime instead. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int gettimeofday (struct timeval *__restrict __tv,
void *__restrict __tz) __THROW __nonnull ((1));
#else
@@ -77,7 +77,7 @@ extern int __REDIRECT_NTH (gettimeofday, (struct timeval *__restrict __tv,
#endif
#ifdef __USE_MISC
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* Set the current time of day and timezone information.
This call is restricted to the super-user.
Setting the timezone in this way is obsolete, but we don't yet
@@ -143,7 +143,7 @@ typedef enum __itimer_which __itimer_which_t;
typedef int __itimer_which_t;
#endif
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
/* Set *VALUE to the current setting of timer WHICH.
Return 0 on success, -1 on errors. */
extern int getitimer (__itimer_which_t __which,
@@ -184,7 +184,7 @@ extern int __REDIRECT_NTH (utimes, (const char *__file,
#endif
#ifdef __USE_MISC
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* Same as `utimes', but does not follow symbolic links. */
extern int lutimes (const char *__file, const struct timeval __tvp[2])
__THROW __nonnull ((1));
@@ -207,7 +207,7 @@ extern int __REDIRECT_NTH (futimes, (int __fd, const struct timeval __tvp[2]),
#endif
#ifdef __USE_GNU
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* Change the access time of FILE relative to FD to TVP[0] and the
modification time of FILE to TVP[1]. If TVP is a null pointer, use
the current time instead. Returns 0 on success, -1 on errors. */
diff --git a/time/time.h b/time/time.h
index b34cf22b4e..bc043188e1 100644
--- a/time/time.h
+++ b/time/time.h
@@ -71,7 +71,7 @@ __BEGIN_DECLS
The result / CLOCKS_PER_SEC is program time in seconds. */
extern clock_t clock (void) __THROW;
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
/* Return the current time and put it in *TIMER if TIMER is not NULL. */
extern time_t time (time_t *__timer) __THROW;
@@ -127,7 +127,7 @@ extern char *strptime_l (const char *__restrict __s,
#endif
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
/* Return the `struct tm' representation of *TIMER
in Universal Coordinated Time (aka Greenwich Mean Time). */
extern struct tm *gmtime (const time_t *__timer) __THROW;
@@ -149,7 +149,7 @@ extern struct tm *__REDIRECT_NTH (localtime, (const time_t *__timer),
#if defined __USE_POSIX || __GLIBC_USE (ISOC23)
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* Return the `struct tm' representation of *TIMER in UTC,
using *TP to store the result. */
extern struct tm *gmtime_r (const time_t *__restrict __timer,
@@ -180,7 +180,7 @@ extern struct tm*__REDIRECT_NTH (localtime_r, (const time_t *__restrict __t,
extern char *asctime (const struct tm *__tp) __THROW;
/* Equivalent to `asctime (localtime (timer))'. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern char *ctime (const time_t *__timer) __THROW;
#else
# ifdef __REDIRECT_NTH
@@ -199,7 +199,7 @@ extern char *asctime_r (const struct tm *__restrict __tp,
char *__restrict __buf) __THROW;
/* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern char *ctime_r (const time_t *__restrict __timer,
char *__restrict __buf) __THROW;
#else
@@ -242,7 +242,7 @@ extern long int timezone;
#if defined __USE_MISC || __GLIBC_USE (ISOC23)
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* Like `mktime', but for TP represents Universal Time, not local time. */
extern time_t timegm (struct tm *__tp) __THROW;
# else
@@ -259,7 +259,7 @@ extern time_t __REDIRECT_NTH (timegm, (struct tm *__tp), __timegm64);
/* Miscellaneous functions many Unices inherited from the public domain
localtime package. These are included only for compatibility. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
/* Another name for `mktime'. */
extern time_t timelocal (struct tm *__tp) __THROW;
#else
@@ -274,7 +274,7 @@ extern int dysize (int __year) __THROW __attribute__ ((__const__));
#ifdef __USE_POSIX199309
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* Pause execution for a number of nanoseconds.
This function is a cancellation point and therefore not marked with
@@ -320,7 +320,7 @@ extern int __REDIRECT_NTH (clock_settime, (clockid_t __clock_id, const struct
This function is a cancellation point and therefore not marked with
__THROW. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int clock_nanosleep (clockid_t __clock_id, int __flags,
const struct timespec *__req,
struct timespec *__rem);
@@ -349,7 +349,7 @@ extern int timer_create (clockid_t __clock_id,
extern int timer_delete (timer_t __timerid) __THROW;
/* Set timer TIMERID to VALUE, returning old value in OVALUE. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int timer_settime (timer_t __timerid, int __flags,
const struct itimerspec *__restrict __value,
struct itimerspec *__restrict __ovalue) __THROW;
@@ -379,7 +379,7 @@ extern int timer_getoverrun (timer_t __timerid) __THROW;
#ifdef __USE_ISOC11
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* Set TS to calendar time based in time base BASE. */
extern int timespec_get (struct timespec *__ts, int __base)
__THROW __nonnull ((1));
@@ -395,7 +395,7 @@ extern int __REDIRECT_NTH (timespec_get, (struct timespec *__ts, int __base),
#if __GLIBC_USE (ISOC23)
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* Set TS to resolution of time base BASE. */
extern int timespec_getres (struct timespec *__ts, int __base)
__THROW;
--
2.34.1
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v5] Always define __USE_TIME_BITS64 when 64 bit time_t is used
2024-03-18 12:21 [PATCH v5] Always define __USE_TIME_BITS64 when 64 bit time_t is used Adhemerval Zanella
@ 2024-03-18 12:23 ` Adhemerval Zanella Netto
2024-03-18 12:37 ` Andreas Schwab
2024-04-02 2:57 ` [PATCH v6] " DJ Delorie
2 siblings, 0 replies; 12+ messages in thread
From: Adhemerval Zanella Netto @ 2024-03-18 12:23 UTC (permalink / raw)
To: libc-alpha
And it should v6 here...
On 18/03/24 09:21, Adhemerval Zanella wrote:
> 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
> --
> Changes from v5:
> * Removed sysdeps/generic/features-time64.h.
> * Fixes documentation wording.
>
> Changes from v4:
> * Move the __USE_TIME64_REDIRECTS documentation to creature.texi.
> * Do not define __USE_TIME64_REDIRECTS for generic case.
>
> Changes from v3:
> * Add documentation about the __USE_TIME_BITS64 and
> __USE_TIME64_REDIRECTS.
> * Removed __USE_TIME_BITS64 references in comments.
> * Rebased against master.
>
> Changes from v2:
> * Only defined __USE_TIME_BITS64 when 64 bit time_t is used.
>
> Changes from v1:
> * Use __USE_TIME64_REDIRECTS to allow replace the current macro.
> ---
> io/bits/poll2.h | 2 +-
> io/fcntl.h | 4 ++--
> io/fts.h | 6 ++---
> io/ftw.h | 12 +++++-----
> io/sys/poll.h | 2 +-
> io/sys/stat.h | 16 ++++++-------
> io/utime.h | 4 ++--
> manual/creature.texi | 6 +++++
> manual/maint.texi | 4 ++++
> misc/sys/ioctl.h | 2 +-
> misc/sys/select.h | 4 ++--
> posix/glob.h | 4 ++--
> posix/sched.h | 2 +-
> posix/sys/wait.h | 4 ++--
> resolv/netdb.h | 2 +-
> resource/sys/resource.h | 2 +-
> rt/aio.h | 4 ++--
> rt/mqueue.h | 2 +-
> signal/signal.h | 2 +-
> socket/sys/socket.h | 14 +++++------
> support/timespec.h | 2 +-
> support/xtime.h | 2 +-
> support/xunistd.h | 2 +-
> sysdeps/generic/features-time64.h | 19 ---------------
> sysdeps/nptl/pthread.h | 18 +++++++-------
> sysdeps/pthread/semaphore.h | 4 ++--
> sysdeps/pthread/threads.h | 6 ++---
> .../unix/sysv/linux/arm/bits/struct_stat.h | 8 +++----
> .../unix/sysv/linux/bits/socket-constants.h | 2 +-
> sysdeps/unix/sysv/linux/bits/time.h | 2 +-
> sysdeps/unix/sysv/linux/bits/timex.h | 2 +-
> .../sysv/linux/bits/types/struct_msqid_ds.h | 2 +-
> .../sysv/linux/bits/types/struct_semid_ds.h | 2 +-
> .../sysv/linux/bits/types/struct_shmid_ds.h | 2 +-
> .../unix/sysv/linux/csky/bits/struct_stat.h | 4 ++--
> sysdeps/unix/sysv/linux/features-time64.h | 9 +++++--
> .../sysv/linux/hppa/bits/socket-constants.h | 2 +-
> .../unix/sysv/linux/hppa/bits/struct_stat.h | 8 +++----
> .../linux/hppa/bits/types/struct_msqid_ds.h | 2 +-
> .../linux/hppa/bits/types/struct_semid_ds.h | 2 +-
> .../linux/hppa/bits/types/struct_shmid_ds.h | 2 +-
> .../unix/sysv/linux/m68k/bits/struct_stat.h | 8 +++----
> .../sysv/linux/microblaze/bits/struct_stat.h | 12 +++++-----
> .../sysv/linux/mips/bits/socket-constants.h | 2 +-
> .../unix/sysv/linux/mips/bits/struct_stat.h | 14 +++++------
> .../linux/mips/bits/types/struct_msqid_ds.h | 2 +-
> .../linux/mips/bits/types/struct_semid_ds.h | 2 +-
> .../linux/mips/bits/types/struct_shmid_ds.h | 2 +-
> .../unix/sysv/linux/nios2/bits/struct_stat.h | 4 ++--
> .../linux/powerpc/bits/socket-constants.h | 2 +-
> .../sysv/linux/powerpc/bits/struct_stat.h | 8 +++----
> .../powerpc/bits/types/struct_msqid_ds.h | 2 +-
> .../powerpc/bits/types/struct_semid_ds.h | 2 +-
> .../powerpc/bits/types/struct_shmid_ds.h | 2 +-
> .../unix/sysv/linux/s390/bits/struct_stat.h | 4 ++--
> sysdeps/unix/sysv/linux/sh/bits/struct_stat.h | 8 +++----
> .../sysv/linux/sparc/bits/socket-constants.h | 2 +-
> .../unix/sysv/linux/sparc/bits/struct_stat.h | 8 +++----
> .../linux/sparc/bits/types/struct_msqid_ds.h | 2 +-
> .../linux/sparc/bits/types/struct_semid_ds.h | 2 +-
> .../linux/sparc/bits/types/struct_shmid_ds.h | 2 +-
> sysdeps/unix/sysv/linux/sys/epoll.h | 2 +-
> sysdeps/unix/sysv/linux/sys/prctl.h | 2 +-
> sysdeps/unix/sysv/linux/sys/timerfd.h | 4 ++--
> sysdeps/unix/sysv/linux/sys/timex.h | 2 +-
> .../unix/sysv/linux/x86/bits/struct_stat.h | 8 +++----
> .../linux/x86/bits/types/struct_semid_ds.h | 2 +-
> sysvipc/sys/msg.h | 2 +-
> sysvipc/sys/sem.h | 4 ++--
> sysvipc/sys/shm.h | 2 +-
> time/bits/types/struct_timespec.h | 4 ++--
> time/bits/types/struct_timeval.h | 2 +-
> time/bits/types/time_t.h | 2 +-
> time/sys/time.h | 10 ++++----
> time/time.h | 24 +++++++++----------
> 75 files changed, 178 insertions(+), 182 deletions(-)
> delete mode 100644 sysdeps/generic/features-time64.h
>
> diff --git a/io/bits/poll2.h b/io/bits/poll2.h
> index 24ec1056eb..ca9d58badd 100644
> --- a/io/bits/poll2.h
> +++ b/io/bits/poll2.h
> @@ -48,7 +48,7 @@ poll (__fortify_clang_overload_arg (struct pollfd *, ,__fds), nfds_t __nfds,
>
>
> #ifdef __USE_GNU
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> extern int __REDIRECT (__ppoll64_alias, (struct pollfd *__fds, nfds_t __nfds,
> const struct timespec *__timeout,
> const __sigset_t *__ss), __ppoll64);
> diff --git a/io/fcntl.h b/io/fcntl.h
> index 38aa12d7f2..f157991782 100644
> --- a/io/fcntl.h
> +++ b/io/fcntl.h
> @@ -172,7 +172,7 @@ typedef __pid_t pid_t;
>
> This function is a cancellation point and therefore not marked with
> __THROW. */
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> # ifndef __USE_FILE_OFFSET64
> extern int fcntl (int __fd, int __cmd, ...);
> # else
> @@ -185,7 +185,7 @@ extern int __REDIRECT (fcntl, (int __fd, int __cmd, ...), fcntl64);
> # ifdef __USE_LARGEFILE64
> extern int fcntl64 (int __fd, int __cmd, ...);
> # endif
> -#else /* __USE_TIME_BITS64 */
> +#else /* __USE_TIME64_REDIRECTS */
> # ifdef __REDIRECT
> extern int __REDIRECT_NTH (fcntl, (int __fd, int __request, ...),
> __fcntl_time64);
> diff --git a/io/fts.h b/io/fts.h
> index 61f95bb441..97a031ebbd 100644
> --- a/io/fts.h
> +++ b/io/fts.h
> @@ -187,7 +187,7 @@ FTSENT *fts_read (FTS *);
> int fts_set (FTS *, FTSENT *, int) __THROW;
> #else
> # ifdef __REDIRECT
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> FTSENT *__REDIRECT (fts_children, (FTS *, int), fts64_children);
> int __REDIRECT (fts_close, (FTS *), fts64_close);
> FTS *__REDIRECT (fts_open, (char * const *, int,
> @@ -206,7 +206,7 @@ int __REDIRECT_NTH (fts_set, (FTS *, FTSENT *, int),
> __fts64_set_time64);
> # endif
> # else
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> # define fts_children fts64_children
> # define fts_close fts64_close
> # define fts_open fts64_open
> @@ -217,7 +217,7 @@ int __REDIRECT_NTH (fts_set, (FTS *, FTSENT *, int),
> # endif
> #endif
> #ifdef __USE_LARGEFILE64
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> FTSENT64 *fts64_children (FTS64 *, int);
> int fts64_close (FTS64 *);
> FTS64 *fts64_open (char * const *, int,
> diff --git a/io/ftw.h b/io/ftw.h
> index e4d1b84d53..39cf595b27 100644
> --- a/io/ftw.h
> +++ b/io/ftw.h
> @@ -137,7 +137,7 @@ extern int ftw (const char *__dir, __ftw_func_t __func, int __descriptors)
> __nonnull ((1, 2));
> #else
> # ifdef __REDIRECT
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern int __REDIRECT (ftw, (const char *__dir, __ftw_func_t __func,
> int __descriptors), ftw64) __nonnull ((1, 2));
> # else
> @@ -146,7 +146,7 @@ extern int __REDIRECT (ftw, (const char *__dir, __ftw_func_t __func,
> __nonnull ((1, 2));
> # endif
> # else
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> # define ftw ftw64
> # else
> # define ftw __ftw64_time64
> @@ -154,7 +154,7 @@ extern int __REDIRECT (ftw, (const char *__dir, __ftw_func_t __func,
> # endif
> #endif
> #ifdef __USE_LARGEFILE64
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern int ftw64 (const char *__dir, __ftw64_func_t __func,
> int __descriptors) __nonnull ((1, 2));
> # else
> @@ -180,7 +180,7 @@ extern int nftw (const char *__dir, __nftw_func_t __func, int __descriptors,
> int __flag) __nonnull ((1, 2));
> # else
> # ifdef __REDIRECT
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern int __REDIRECT (nftw, (const char *__dir, __nftw_func_t __func,
> int __descriptors, int __flag), nftw64)
> __nonnull ((1, 2));
> @@ -190,7 +190,7 @@ extern int __REDIRECT (nftw, (const char *__dir, __nftw_func_t __func,
> __nonnull ((1, 2));
> # endif
> # else
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> # define nftw nftw64
> # else
> # define nftw __nftw64_time64
> @@ -198,7 +198,7 @@ extern int __REDIRECT (nftw, (const char *__dir, __nftw_func_t __func,
> # endif
> # endif
> # ifdef __USE_LARGEFILE64
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern int nftw64 (const char *__dir, __nftw64_func_t __func,
> int __descriptors, int __flag) __nonnull ((1, 2));
> # else
> diff --git a/io/sys/poll.h b/io/sys/poll.h
> index 7858fad6b9..c324ff5dad 100644
> --- a/io/sys/poll.h
> +++ b/io/sys/poll.h
> @@ -66,7 +66,7 @@ extern int ppoll (struct pollfd *__fds, nfds_t __nfds,
> const __sigset_t *__ss)
> __fortified_attr_access (__write_only__, 1, 2);
>
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # ifdef __REDIRECT
> extern int __REDIRECT (ppoll, (struct pollfd *__fds, nfds_t __nfds,
> const struct timespec *__timeout,
> diff --git a/io/sys/stat.h b/io/sys/stat.h
> index 1fa6d6e62e..3b4ba80132 100644
> --- a/io/sys/stat.h
> +++ b/io/sys/stat.h
> @@ -209,7 +209,7 @@ extern int stat (const char *__restrict __file,
> that file descriptor FD is open on and put them in BUF. */
> extern int fstat (int __fd, struct stat *__buf) __THROW __nonnull ((2));
> #else
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # ifdef __REDIRECT_NTH
> extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
> struct stat *__restrict __buf),
> @@ -236,7 +236,7 @@ extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf), fstat64)
> # endif
> #endif
> #ifdef __USE_LARGEFILE64
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern int stat64 (const char *__restrict __file,
> struct stat64 *__restrict __buf) __THROW __nonnull ((1, 2));
> extern int fstat64 (int __fd, struct stat64 *__buf) __THROW __nonnull ((2));
> @@ -265,7 +265,7 @@ extern int fstatat (int __fd, const char *__restrict __file,
> struct stat *__restrict __buf, int __flag)
> __THROW __nonnull ((2, 3));
> # else
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # ifdef __REDIRECT_NTH
> extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
> struct stat *__restrict __buf,
> @@ -287,7 +287,7 @@ extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
> # endif
>
> # ifdef __USE_LARGEFILE64
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern int fstatat64 (int __fd, const char *__restrict __file,
> struct stat64 *__restrict __buf, int __flag)
> __THROW __nonnull ((2, 3));
> @@ -313,7 +313,7 @@ extern int __REDIRECT_NTH (fstatat64, (int __fd,
> extern int lstat (const char *__restrict __file,
> struct stat *__restrict __buf) __THROW __nonnull ((1, 2));
> # else
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # ifdef __REDIRECT_NTH
> extern int __REDIRECT_NTH (lstat,
> (const char *__restrict __file,
> @@ -334,7 +334,7 @@ extern int __REDIRECT_NTH (lstat,
> # endif
> # endif
> # ifdef __USE_LARGEFILE64
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern int lstat64 (const char *__restrict __file,
> struct stat64 *__restrict __buf)
> __THROW __nonnull ((1, 2));
> @@ -427,7 +427,7 @@ extern int mkfifoat (int __fd, const char *__path, __mode_t __mode)
> #endif
> \f
> #ifdef __USE_ATFILE
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> /* Set file access and modification times relative to directory file
> descriptor. */
> extern int utimensat (int __fd, const char *__path,
> @@ -447,7 +447,7 @@ extern int __REDIRECT_NTH (utimensat, (int fd, const char *__path,
> #endif
>
> #ifdef __USE_XOPEN2K8
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> /* Set file access and modification times of the file associated with FD. */
> extern int futimens (int __fd, const struct timespec __times[2]) __THROW;
>
> diff --git a/io/utime.h b/io/utime.h
> index c5eacedd6a..1c7587d9c1 100644
> --- a/io/utime.h
> +++ b/io/utime.h
> @@ -35,7 +35,7 @@ __BEGIN_DECLS
> /* Structure describing file times. */
> struct utimbuf
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> __time64_t actime; /* Access time. */
> __time64_t modtime; /* Modification time. */
> #else
> @@ -46,7 +46,7 @@ struct utimbuf
>
> /* Set the access and modification times of FILE to those given in
> *FILE_TIMES. If FILE_TIMES is NULL, set them to the current time. */
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> extern int utime (const char *__file,
> const struct utimbuf *__file_times)
> __THROW __nonnull ((1));
> 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..d08f30a6e0 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 == 64} 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
> diff --git a/misc/sys/ioctl.h b/misc/sys/ioctl.h
> index 3f2338ddd3..ea6583e122 100644
> --- a/misc/sys/ioctl.h
> +++ b/misc/sys/ioctl.h
> @@ -38,7 +38,7 @@ __BEGIN_DECLS
> /* Perform the I/O control operation specified by REQUEST on FD.
> One argument may follow; its presence and type depend on REQUEST.
> Return value depends on REQUEST. Usually -1 indicates error. */
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> extern int ioctl (int __fd, unsigned long int __request, ...) __THROW;
> #else
> # ifdef __REDIRECT
> diff --git a/misc/sys/select.h b/misc/sys/select.h
> index e6a0c1b8b2..2e45e94bc1 100644
> --- a/misc/sys/select.h
> +++ b/misc/sys/select.h
> @@ -98,7 +98,7 @@ __BEGIN_DECLS
>
> This function is a cancellation point and therefore not marked with
> __THROW. */
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> extern int select (int __nfds, fd_set *__restrict __readfds,
> fd_set *__restrict __writefds,
> fd_set *__restrict __exceptfds,
> @@ -123,7 +123,7 @@ extern int __REDIRECT (select,
>
> This function is a cancellation point and therefore not marked with
> __THROW. */
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern int pselect (int __nfds, fd_set *__restrict __readfds,
> fd_set *__restrict __writefds,
> fd_set *__restrict __exceptfds,
> diff --git a/posix/glob.h b/posix/glob.h
> index 3406662840..b6bba0fbcd 100644
> --- a/posix/glob.h
> +++ b/posix/glob.h
> @@ -150,7 +150,7 @@ extern int glob (const char *__restrict __pattern, int __flags,
> /* Free storage allocated in PGLOB by a previous `glob' call. */
> extern void globfree (glob_t *__pglob) __THROW;
> #else
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> extern int __REDIRECT_NTHNL (glob, (const char *__restrict __pattern,
> int __flags,
> int (*__errfunc) (const char *, int),
> @@ -170,7 +170,7 @@ extern void __REDIRECT_NTH (globfree, (glob_t *__pglob), globfree64);
> #endif
>
> #ifdef __USE_LARGEFILE64
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> extern int __REDIRECT_NTHNL (glob64, (const char *__restrict __pattern,
> int __flags,
> int (*__errfunc) (const char *, int),
> diff --git a/posix/sched.h b/posix/sched.h
> index 3eac206f35..49f504a488 100644
> --- a/posix/sched.h
> +++ b/posix/sched.h
> @@ -74,7 +74,7 @@ extern int sched_get_priority_max (int __algorithm) __THROW;
> extern int sched_get_priority_min (int __algorithm) __THROW;
>
> /* Get the SCHED_RR interval for the named process. */
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __THROW;
> #else
> # ifdef __REDIRECT_NTH
> diff --git a/posix/sys/wait.h b/posix/sys/wait.h
> index edbb7b4392..1f44ee1145 100644
> --- a/posix/sys/wait.h
> +++ b/posix/sys/wait.h
> @@ -139,7 +139,7 @@ struct rusage;
> nil, store information about the child's resource usage there. If the
> WUNTRACED bit is set in OPTIONS, return status for stopped children;
> otherwise don't. */
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern __pid_t wait3 (int *__stat_loc, int __options,
> struct rusage * __usage) __THROWNL;
> # else
> @@ -154,7 +154,7 @@ extern __pid_t __REDIRECT_NTHNL (wait3, (int *__stat_loc, int __options,
> #endif
>
> #ifdef __USE_MISC
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> /* PID is like waitpid. Other args are like wait3. */
> extern __pid_t wait4 (__pid_t __pid, int *__stat_loc, int __options,
> struct rusage *__usage) __THROWNL;
> diff --git a/resolv/netdb.h b/resolv/netdb.h
> index 14228b0d95..b7f473fafe 100644
> --- a/resolv/netdb.h
> +++ b/resolv/netdb.h
> @@ -701,7 +701,7 @@ extern int getaddrinfo_a (int __mode, struct gaicb *__list[__restrict_arr],
> extern int gai_suspend (const struct gaicb *const __list[], int __ent,
> const struct timespec *__timeout);
>
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # if defined(__REDIRECT)
> extern int __REDIRECT (gai_suspend, (const struct gaicb *const __list[],
> int __ent,
> diff --git a/resource/sys/resource.h b/resource/sys/resource.h
> index a5634ba715..b0bf751e92 100644
> --- a/resource/sys/resource.h
> +++ b/resource/sys/resource.h
> @@ -88,7 +88,7 @@ extern int setrlimit64 (__rlimit_resource_t __resource,
> and put it in *USAGE. Returns 0 for success, -1 for failure. */
> extern int getrusage (__rusage_who_t __who, struct rusage *__usage) __THROW;
>
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # if defined(__REDIRECT_NTH)
> extern int __REDIRECT_NTH (getrusage, (__rusage_who_t __who,
> struct rusage *__usage),
> diff --git a/rt/aio.h b/rt/aio.h
> index 37d19abf16..e71435733f 100644
> --- a/rt/aio.h
> +++ b/rt/aio.h
> @@ -193,7 +193,7 @@ extern __ssize_t __REDIRECT_NTH (aio_return, (struct aiocb *__aiocbp),
> extern int __REDIRECT_NTH (aio_cancel,
> (int __fildes, struct aiocb *__aiocbp),
> aio_cancel64);
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> extern int __REDIRECT_NTH (aio_suspend,
> (const struct aiocb *const __list[], int __nent,
> const struct timespec *__restrict __timeout),
> @@ -215,7 +215,7 @@ extern int __REDIRECT_NTH (aio_fsync,
> # define aio_error aio_error64
> # define aio_return aio_return64
> # define aio_cancel aio_cancel64
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # define aio_suspend __aio_suspend_time64
> # else
> # define aio_suspend aio_suspend64
> diff --git a/rt/mqueue.h b/rt/mqueue.h
> index d39334ba16..14fc2a6195 100644
> --- a/rt/mqueue.h
> +++ b/rt/mqueue.h
> @@ -71,7 +71,7 @@ extern int mq_send (mqd_t __mqdes, const char *__msg_ptr, size_t __msg_len,
> unsigned int __msg_prio) __nonnull ((2));
>
> #ifdef __USE_XOPEN2K
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> /* Receive the oldest from highest priority messages in message queue
> MQDES, stop waiting if ABS_TIMEOUT expires. */
> extern ssize_t mq_timedreceive (mqd_t __mqdes, char *__restrict __msg_ptr,
> diff --git a/signal/signal.h b/signal/signal.h
> index f37499ce60..8e07b041b1 100644
> --- a/signal/signal.h
> +++ b/signal/signal.h
> @@ -269,7 +269,7 @@ extern int sigwaitinfo (const sigset_t *__restrict __set,
>
> This function is a cancellation point and therefore not marked with
> __THROW. */
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern int sigtimedwait (const sigset_t *__restrict __set,
> siginfo_t *__restrict __info,
> const struct timespec *__restrict __timeout)
> diff --git a/socket/sys/socket.h b/socket/sys/socket.h
> index 366eaab845..463cf3291b 100644
> --- a/socket/sys/socket.h
> +++ b/socket/sys/socket.h
> @@ -170,7 +170,7 @@ extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n,
>
> This function is a cancellation point and therefore not marked with
> __THROW. */
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> extern ssize_t sendmsg (int __fd, const struct msghdr *__message,
> int __flags);
> #else
> @@ -191,7 +191,7 @@ extern ssize_t __sendmsg64 (int __fd, const struct msghdr *__message,
>
> This function is a cancellation point and therefore not marked with
> __THROW. */
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern int sendmmsg (int __fd, struct mmsghdr *__vmessages,
> unsigned int __vlen, int __flags);
> # else
> @@ -204,7 +204,7 @@ extern int __sendmmsg64 (int __fd, struct mmsghdr *__vmessages,
> unsigned int __vlen, int __flags);
> # define sendmmsg __sendmmsg64
> # endif
> -# endif /* __USE_TIME_BITS64 */
> +# endif /* __USE_TIME64_REDIRECTS */
> #endif /* __USE_GNU */
>
> /* Receive a message as described by MESSAGE from socket FD.
> @@ -212,7 +212,7 @@ extern int __sendmmsg64 (int __fd, struct mmsghdr *__vmessages,
>
> This function is a cancellation point and therefore not marked with
> __THROW. */
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags);
> #else
> # ifdef __REDIRECT
> @@ -231,7 +231,7 @@ extern ssize_t __recvmsg64 (int __fd, struct msghdr *__message, int __flags);
>
> This function is a cancellation point and therefore not marked with
> __THROW. */
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
> unsigned int __vlen, int __flags,
> struct timespec *__tmo);
> @@ -251,7 +251,7 @@ extern int __REDIRECT (recvmmsg, (int __fd, struct mmsghdr *__vmessages,
> /* Put the current value for socket FD's option OPTNAME at protocol level LEVEL
> into OPTVAL (which is *OPTLEN bytes long), and set *OPTLEN to the value's
> actual length. Returns 0 on success, -1 for errors. */
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> extern int getsockopt (int __fd, int __level, int __optname,
> void *__restrict __optval,
> socklen_t *__restrict __optlen) __THROW;
> @@ -273,7 +273,7 @@ extern int __getsockopt64 (int __fd, int __level, int __optname,
> /* Set socket FD's option OPTNAME at protocol level LEVEL
> to *OPTVAL (which is OPTLEN bytes long).
> Returns 0 on success, -1 for errors. */
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> extern int setsockopt (int __fd, int __level, int __optname,
> const void *__optval, socklen_t __optlen) __THROW;
> #else
> diff --git a/support/timespec.h b/support/timespec.h
> index 42f32bcc2c..5ccc7163a5 100644
> --- a/support/timespec.h
> +++ b/support/timespec.h
> @@ -35,7 +35,7 @@ make_timespec (time_t s, long int ns)
>
> enum { TIMESPEC_HZ = 1000000000 };
>
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> struct timespec timespec_add (struct timespec, struct timespec)
> __attribute__((const));
> struct timespec timespec_sub (struct timespec, struct timespec)
> diff --git a/support/xtime.h b/support/xtime.h
> index 5200eef2e0..9961899634 100644
> --- a/support/xtime.h
> +++ b/support/xtime.h
> @@ -30,7 +30,7 @@ __BEGIN_DECLS
> /* The following functions call the corresponding libc functions and
> terminate the process on error. */
>
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> void xclock_gettime (clockid_t clock, struct timespec *ts);
> void xclock_settime (clockid_t clock, const struct timespec *ts);
> #else
> diff --git a/support/xunistd.h b/support/xunistd.h
> index b5e8c2f420..13be9a46a3 100644
> --- a/support/xunistd.h
> +++ b/support/xunistd.h
> @@ -36,7 +36,7 @@ pid_t xwaitpid (pid_t, int *status, int flags);
> void xpipe (int[2]);
> void xdup2 (int, int);
> int xopen (const char *path, int flags, mode_t);
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> # ifdef __USE_FILE_OFFSET64
> void xstat (const char *path, struct stat *);
> void xlstat (const char *path, struct stat *);
> diff --git a/sysdeps/generic/features-time64.h b/sysdeps/generic/features-time64.h
> deleted file mode 100644
> index 4d38b8ba76..0000000000
> --- a/sysdeps/generic/features-time64.h
> +++ /dev/null
> @@ -1,19 +0,0 @@
> -/* Features part to handle 64-bit time_t support. Generic version.
> - Copyright (C) 2021-2024 Free Software Foundation, Inc.
> - This file is part of the GNU C Library.
> -
> - The GNU C Library is free software; you can redistribute it and/or
> - modify it under the terms of the GNU Lesser General Public
> - License as published by the Free Software Foundation; either
> - version 2.1 of the License, or (at your option) any later version.
> -
> - The GNU C Library is distributed in the hope that it will be useful,
> - but WITHOUT ANY WARRANTY; without even the implied warranty of
> - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> - Lesser General Public License for more details.
> -
> - You should have received a copy of the GNU Lesser General Public
> - License along with the GNU C Library; if not, see
> - <https://www.gnu.org/licenses/>. */
> -
> -/* The generic configuration only support _TIME_BITS=32. */
> diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h
> index 1607fdf29a..3d4f4a756c 100644
> --- a/sysdeps/nptl/pthread.h
> +++ b/sysdeps/nptl/pthread.h
> @@ -223,7 +223,7 @@ extern int pthread_join (pthread_t __th, void **__thread_return);
> the thread in *THREAD_RETURN, if THREAD_RETURN is not NULL. */
> extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __THROW;
>
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> /* Make calling thread wait for termination of the thread TH, but only
> until TIMEOUT. The exit status of the thread is stored in
> *THREAD_RETURN, if THREAD_RETURN is not NULL.
> @@ -796,7 +796,7 @@ extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
>
> #ifdef __USE_XOPEN2K
> /* Wait until lock becomes available, or specified time passes. */
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
> const struct timespec *__restrict
> __abstime) __THROWNL __nonnull ((1, 2));
> @@ -813,7 +813,7 @@ extern int __REDIRECT_NTHNL (pthread_mutex_timedlock,
> #endif
>
> #ifdef __USE_GNU
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex,
> clockid_t __clockid,
> const struct timespec *__restrict
> @@ -982,7 +982,7 @@ extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
>
> # ifdef __USE_XOPEN2K
> /* Try to acquire read lock for RWLOCK or return after specified time. */
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
> const struct timespec *__restrict
> __abstime) __THROWNL __nonnull ((1, 2));
> @@ -1000,7 +1000,7 @@ extern int __REDIRECT_NTHNL (pthread_rwlock_timedrdlock,
> # endif
>
> # ifdef __USE_GNU
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock,
> clockid_t __clockid,
> const struct timespec *__restrict
> @@ -1029,7 +1029,7 @@ extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
>
> # ifdef __USE_XOPEN2K
> /* Try to acquire write lock for RWLOCK or return after specified time. */
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
> const struct timespec *__restrict
> __abstime) __THROWNL __nonnull ((1, 2));
> @@ -1047,7 +1047,7 @@ extern int __REDIRECT_NTHNL (pthread_rwlock_timedwrlock,
> # endif
>
> # ifdef __USE_GNU
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock,
> clockid_t __clockid,
> const struct timespec *__restrict
> @@ -1141,7 +1141,7 @@ extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
>
> This function is a cancellation point and therefore not marked with
> __THROW. */
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
> pthread_mutex_t *__restrict __mutex,
> const struct timespec *__restrict __abstime)
> @@ -1167,7 +1167,7 @@ extern int __REDIRECT (pthread_cond_timedwait,
>
> This function is a cancellation point and therefore not marked with
> __THROW. */
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond,
> pthread_mutex_t *__restrict __mutex,
> __clockid_t __clock_id,
> diff --git a/sysdeps/pthread/semaphore.h b/sysdeps/pthread/semaphore.h
> index c75ca4ce6d..8a09633699 100644
> --- a/sysdeps/pthread/semaphore.h
> +++ b/sysdeps/pthread/semaphore.h
> @@ -59,7 +59,7 @@ extern int sem_wait (sem_t *__sem) __nonnull ((1));
>
> This function is a cancellation point and therefore not marked with
> __THROW. */
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern int sem_timedwait (sem_t *__restrict __sem,
> const struct timespec *__restrict __abstime)
> __nonnull ((1, 2));
> @@ -77,7 +77,7 @@ extern int __REDIRECT (sem_timedwait,
> #endif
>
> #ifdef __USE_GNU
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern int sem_clockwait (sem_t *__restrict __sem,
> clockid_t clock,
> const struct timespec *__restrict __abstime)
> diff --git a/sysdeps/pthread/threads.h b/sysdeps/pthread/threads.h
> index c5410b5c3a..7cade24e1f 100644
> --- a/sysdeps/pthread/threads.h
> +++ b/sysdeps/pthread/threads.h
> @@ -90,7 +90,7 @@ extern thrd_t thrd_current (void);
> __TIME_POINT. The current thread may resume if receives a signal. In
> that case, if __REMAINING is not NULL, the remaining time is stored in
> the object pointed by it. */
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> extern int thrd_sleep (const struct timespec *__time_point,
> struct timespec *__remaining);
> #else
> @@ -143,7 +143,7 @@ extern int mtx_lock (mtx_t *__mutex);
> /* Block the current thread until the mutex pointed by __MUTEX is unlocked
> or time pointed by __TIME_POINT is reached. In case the mutex is unlock,
> the current thread will not be blocked. */
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> extern int mtx_timedlock (mtx_t *__restrict __mutex,
> const struct timespec *__restrict __time_point);
> #else
> @@ -194,7 +194,7 @@ extern int cnd_wait (cnd_t *__cond, mtx_t *__mutex);
> /* Block current thread on the condition variable until condition variable
> pointed by __COND is signaled or time pointed by __TIME_POINT is
> reached. */
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> extern int cnd_timedwait (cnd_t *__restrict __cond,
> mtx_t *__restrict __mutex,
> const struct timespec *__restrict __time_point);
> diff --git a/sysdeps/unix/sysv/linux/arm/bits/struct_stat.h b/sysdeps/unix/sysv/linux/arm/bits/struct_stat.h
> index 255feaa8cb..89534fea85 100644
> --- a/sysdeps/unix/sysv/linux/arm/bits/struct_stat.h
> +++ b/sysdeps/unix/sysv/linux/arm/bits/struct_stat.h
> @@ -28,7 +28,7 @@
>
> struct stat
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> #else
> __dev_t st_dev; /* Device. */
> @@ -83,13 +83,13 @@ struct stat
> # else
> __ino64_t st_ino; /* File serial number. */
> # endif
> -#endif /* __USE_TIME_BITS64 */
> +#endif /* __USE_TIME64_REDIRECTS */
> };
>
> #ifdef __USE_LARGEFILE64
> struct stat64
> {
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> # else
> __dev_t st_dev; /* Device. */
> @@ -125,7 +125,7 @@ struct stat64
> unsigned long int st_ctimensec; /* Nsecs of last status change. */
> # endif
> __ino64_t st_ino; /* File serial number. */
> -# endif /* __USE_TIME_BITS64 */
> +# endif /* __USE_TIME64_REDIRECTS */
> };
> #endif
>
> diff --git a/sysdeps/unix/sysv/linux/bits/socket-constants.h b/sysdeps/unix/sysv/linux/bits/socket-constants.h
> index d997dbf594..b2102d3abf 100644
> --- a/sysdeps/unix/sysv/linux/bits/socket-constants.h
> +++ b/sysdeps/unix/sysv/linux/bits/socket-constants.h
> @@ -64,7 +64,7 @@
> # define SO_TIMESTAMPNS_NEW 64
> # define SO_TIMESTAMPING_NEW 65
>
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # define SO_RCVTIMEO SO_RCVTIMEO_NEW
> # define SO_SNDTIMEO SO_SNDTIMEO_NEW
> # define SO_TIMESTAMP SO_TIMESTAMP_NEW
> diff --git a/sysdeps/unix/sysv/linux/bits/time.h b/sysdeps/unix/sysv/linux/bits/time.h
> index b70ba58a7d..cab4057971 100644
> --- a/sysdeps/unix/sysv/linux/bits/time.h
> +++ b/sysdeps/unix/sysv/linux/bits/time.h
> @@ -77,7 +77,7 @@ __BEGIN_DECLS
> /* Tune a POSIX clock. */
> extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) __THROW __nonnull((2));
>
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # if defined(__REDIRECT_NTH)
> extern int __REDIRECT_NTH (clock_adjtime, (__clockid_t __clock_id,
> struct timex *__utx),
> diff --git a/sysdeps/unix/sysv/linux/bits/timex.h b/sysdeps/unix/sysv/linux/bits/timex.h
> index 398d8094f2..03ccde6d0a 100644
> --- a/sysdeps/unix/sysv/linux/bits/timex.h
> +++ b/sysdeps/unix/sysv/linux/bits/timex.h
> @@ -25,7 +25,7 @@
>
> struct timex
> {
> -# if defined __USE_TIME_BITS64 || (__TIMESIZE == 64 && __WORDSIZE == 32)
> +# if defined __USE_TIME64_REDIRECTS || (__TIMESIZE == 64 && __WORDSIZE == 32)
> unsigned int modes; /* mode selector */
> int :32; /* pad */
> long long offset; /* time offset (usec) */
> diff --git a/sysdeps/unix/sysv/linux/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_msqid_ds.h
> index fae50281c7..86296ca922 100644
> --- a/sysdeps/unix/sysv/linux/bits/types/struct_msqid_ds.h
> +++ b/sysdeps/unix/sysv/linux/bits/types/struct_msqid_ds.h
> @@ -26,7 +26,7 @@
> The type `struct msg' is opaque. */
> struct msqid_ds
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/types/struct_msqid64_ds_helper.h>
> #else
> struct ipc_perm msg_perm; /* structure describing operation permission */
> diff --git a/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h
> index 3c277ed1d8..2ac89b3ce4 100644
> --- a/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h
> +++ b/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h
> @@ -23,7 +23,7 @@
> /* Data structure describing a set of semaphores. */
> struct semid_ds
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/types/struct_semid64_ds_helper.h>
> #else
> struct ipc_perm sem_perm; /* operation permission struct */
> diff --git a/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h
> index 09de0b4e3a..1012ed0317 100644
> --- a/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h
> +++ b/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h
> @@ -23,7 +23,7 @@
> /* Data structure describing a shared memory segment. */
> struct shmid_ds
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/types/struct_shmid64_ds_helper.h>
> #else
> struct ipc_perm shm_perm; /* operation permission struct */
> diff --git a/sysdeps/unix/sysv/linux/csky/bits/struct_stat.h b/sysdeps/unix/sysv/linux/csky/bits/struct_stat.h
> index 4b4822d6d0..47a9f0aaff 100644
> --- a/sysdeps/unix/sysv/linux/csky/bits/struct_stat.h
> +++ b/sysdeps/unix/sysv/linux/csky/bits/struct_stat.h
> @@ -43,7 +43,7 @@
>
> struct stat
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> #else
> __dev_t st_dev; /* Device. */
> @@ -88,7 +88,7 @@ struct stat
> #ifdef __USE_LARGEFILE64
> struct stat64
> {
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> # else
> __dev_t st_dev; /* Device. */
> diff --git a/sysdeps/unix/sysv/linux/features-time64.h b/sysdeps/unix/sysv/linux/features-time64.h
> index dd3442c2ea..8d573cd23e 100644
> --- a/sysdeps/unix/sysv/linux/features-time64.h
> +++ b/sysdeps/unix/sysv/linux/features-time64.h
> @@ -24,9 +24,8 @@
> # if _TIME_BITS == 64
> # if ! defined (_FILE_OFFSET_BITS) || _FILE_OFFSET_BITS != 64
> # error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64"
> -# elif __TIMESIZE == 32
> -# define __USE_TIME_BITS64 1
> # endif
> +# define __USE_TIME_BITS64 1
> # elif _TIME_BITS == 32
> # if __TIMESIZE > 32
> # error "_TIME_BITS=32 is not compatible with __TIMESIZE > 32"
> @@ -34,4 +33,10 @@
> # else
> # error Invalid _TIME_BITS value (can only be 32 or 64-bit)
> # endif
> +#elif __TIMESIZE == 64
> +# define __USE_TIME_BITS64 1
> +#endif
> +
> +#if defined __USE_TIME_BITS64 && __TIMESIZE == 32
> +# define __USE_TIME64_REDIRECTS 1
> #endif
> diff --git a/sysdeps/unix/sysv/linux/hppa/bits/socket-constants.h b/sysdeps/unix/sysv/linux/hppa/bits/socket-constants.h
> index 58b523d03a..80a76a17dc 100644
> --- a/sysdeps/unix/sysv/linux/hppa/bits/socket-constants.h
> +++ b/sysdeps/unix/sysv/linux/hppa/bits/socket-constants.h
> @@ -54,7 +54,7 @@
> # define SO_TIMESTAMPNS_NEW 0x4039
> # define SO_TIMESTAMPING_NEW 0x403A
>
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # define SO_RCVTIMEO SO_RCVTIMEO_NEW
> # define SO_SNDTIMEO SO_SNDTIMEO_NEW
> # define SO_TIMESTAMP SO_TIMESTAMP_NEW
> diff --git a/sysdeps/unix/sysv/linux/hppa/bits/struct_stat.h b/sysdeps/unix/sysv/linux/hppa/bits/struct_stat.h
> index 069efdbc55..09ea40054b 100644
> --- a/sysdeps/unix/sysv/linux/hppa/bits/struct_stat.h
> +++ b/sysdeps/unix/sysv/linux/hppa/bits/struct_stat.h
> @@ -28,7 +28,7 @@
>
> struct stat
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> #else
> __dev_t st_dev; /* Device. */
> @@ -83,13 +83,13 @@ struct stat
> # else
> __ino64_t st_ino; /* File serial number. */
> # endif
> -#endif /* __USE_TIME_BITS64 */
> +#endif /* __USE_TIME64_REDIRECTS */
> };
>
> #ifdef __USE_LARGEFILE64
> struct stat64
> {
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> # else
> __dev_t st_dev; /* Device. */
> @@ -125,7 +125,7 @@ struct stat64
> unsigned long int st_ctimensec; /* Nsecs of last status change. */
> # endif
> __ino64_t st_ino; /* File serial number. */
> -# endif /* __USE_TIME_BITS64 */
> +# endif /* __USE_TIME64_REDIRECTS */
> };
> #endif
>
> diff --git a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_msqid_ds.h
> index 2bc7cac06d..4995e0a4a5 100644
> --- a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_msqid_ds.h
> +++ b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_msqid_ds.h
> @@ -26,7 +26,7 @@
> The type `struct msg' is opaque. */
> struct msqid_ds
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/types/struct_msqid64_ds_helper.h>
> #else
> struct ipc_perm msg_perm; /* structure describing operation permission */
> diff --git a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h
> index dd8fbebcf4..df88949dc2 100644
> --- a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h
> +++ b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h
> @@ -23,7 +23,7 @@
> /* Data structure describing a set of semaphores. */
> struct semid_ds
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/types/struct_semid64_ds_helper.h>
> #else
> struct ipc_perm sem_perm; /* operation permission struct */
> diff --git a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h
> index 58ac572b6e..cb3b0303aa 100644
> --- a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h
> +++ b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h
> @@ -23,7 +23,7 @@
> /* Data structure describing a shared memory segment. */
> struct shmid_ds
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/types/struct_shmid64_ds_helper.h>
> #else
> struct ipc_perm shm_perm; /* operation permission struct */
> diff --git a/sysdeps/unix/sysv/linux/m68k/bits/struct_stat.h b/sysdeps/unix/sysv/linux/m68k/bits/struct_stat.h
> index 3b1db157bc..b7f20189b1 100644
> --- a/sysdeps/unix/sysv/linux/m68k/bits/struct_stat.h
> +++ b/sysdeps/unix/sysv/linux/m68k/bits/struct_stat.h
> @@ -25,7 +25,7 @@
>
> struct stat
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> #else
> __dev_t st_dev; /* Device. */
> @@ -80,13 +80,13 @@ struct stat
> # else
> __ino64_t st_ino; /* File serial number. */
> # endif
> -#endif /* __USE_TIME_BITS64 */
> +#endif /* __USE_TIME64_REDIRECTS */
> };
>
> #ifdef __USE_LARGEFILE64
> struct stat64
> {
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> # else
> __dev_t st_dev; /* Device. */
> @@ -122,7 +122,7 @@ struct stat64
> unsigned long int st_ctimensec; /* Nsecs of last status change. */
> # endif
> __ino64_t st_ino; /* File serial number. */
> -# endif /* __USE_TIME_BITS64 */
> +# endif /* __USE_TIME64_REDIRECTS */
> };
> #endif
>
> diff --git a/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h b/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h
> index 0f4693fb1f..ff1e269f14 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h
> +++ b/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h
> @@ -26,7 +26,7 @@
> #ifndef __USE_FILE_OFFSET64
> struct stat
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> #else
> __dev_t st_dev; /* Device. */
> @@ -64,7 +64,7 @@ struct stat
> # endif
> unsigned int __glibc_reserved4;
> unsigned int __glibc_reserved5;
> -#endif /* __USE_TIME_BITS64 */
> +#endif /* __USE_TIME64_REDIRECTS */
> };
> #else /* __USE_FILE_OFFSET64 */
> /* MS: If __USE_FILE_OFFSET64 is setup then struct stat should match stat64
> @@ -74,7 +74,7 @@ struct stat
> * create one ifdef to separate stats structures. */
> struct stat
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> #else
> unsigned long long st_dev; /* Device. */
> @@ -112,14 +112,14 @@ struct stat
> # endif
> unsigned int __glibc_reserved4;
> unsigned int __glibc_reserved5;
> -# endif /* __USE_TIME_BITS64 */
> +# endif /* __USE_TIME64_REDIRECTS */
> };
> #endif /* __USE_FILE_OFFSET64 */
>
> #ifdef __USE_LARGEFILE64
> struct stat64
> {
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> # else
> unsigned long long st_dev; /* Device. */
> @@ -157,7 +157,7 @@ struct stat64
> # endif
> unsigned int __glibc_reserved4;
> unsigned int __glibc_reserved5;
> -# endif /* __USE_TIME_BITS64 */
> +# endif /* __USE_TIME64_REDIRECTS */
> };
> #endif
>
> diff --git a/sysdeps/unix/sysv/linux/mips/bits/socket-constants.h b/sysdeps/unix/sysv/linux/mips/bits/socket-constants.h
> index c6908a2793..77ffc8b890 100644
> --- a/sysdeps/unix/sysv/linux/mips/bits/socket-constants.h
> +++ b/sysdeps/unix/sysv/linux/mips/bits/socket-constants.h
> @@ -54,7 +54,7 @@
> # define SO_TIMESTAMPNS_NEW 64
> # define SO_TIMESTAMPING_NEW 65
>
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # define SO_RCVTIMEO SO_RCVTIMEO_NEW
> # define SO_SNDTIMEO SO_SNDTIMEO_NEW
> # define SO_TIMESTAMP SO_TIMESTAMP_NEW
> diff --git a/sysdeps/unix/sysv/linux/mips/bits/struct_stat.h b/sysdeps/unix/sysv/linux/mips/bits/struct_stat.h
> index 277ebad9b6..50a4b367f6 100644
> --- a/sysdeps/unix/sysv/linux/mips/bits/struct_stat.h
> +++ b/sysdeps/unix/sysv/linux/mips/bits/struct_stat.h
> @@ -29,7 +29,7 @@
> /* Structure describing file characteristics. */
> struct stat
> {
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> # else
> unsigned long int st_dev;
> @@ -82,13 +82,13 @@ struct stat
> __blkcnt64_t st_blocks; /* Number of 512-byte blocks allocated. */
> # endif
> long int st_pad5[14];
> -# endif /* __USE_TIME_BITS64 */
> +# endif /* __USE_TIME64_REDIRECTS */
> };
>
> # ifdef __USE_LARGEFILE64
> struct stat64
> {
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> # else
> unsigned long int st_dev;
> @@ -123,7 +123,7 @@ struct stat64
> long int st_pad3;
> __blkcnt64_t st_blocks; /* Number of 512-byte blocks allocated. */
> long int st_pad4[14];
> -# endif /* __USE_TIME_BITS64 */
> +# endif /* __USE_TIME64_REDIRECTS */
> };
> # endif /* __USE_LARGEFILE64 */
>
> @@ -131,7 +131,7 @@ struct stat64
>
> struct stat
> {
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> # else
> __dev_t st_dev;
> @@ -189,7 +189,7 @@ struct stat
> #ifdef __USE_LARGEFILE64
> struct stat64
> {
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> # else
> __dev_t st_dev;
> @@ -224,7 +224,7 @@ struct stat64
> unsigned int st_pad3;
> __blkcnt64_t st_blocks;
> int st_pad4[14];
> -# endif /* __USE_TIME_BITS64 */
> +# endif /* __USE_TIME64_REDIRECTS */
> };
> #endif
>
> diff --git a/sysdeps/unix/sysv/linux/mips/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/mips/bits/types/struct_msqid_ds.h
> index 4e8bd51b0a..09c53648b7 100644
> --- a/sysdeps/unix/sysv/linux/mips/bits/types/struct_msqid_ds.h
> +++ b/sysdeps/unix/sysv/linux/mips/bits/types/struct_msqid_ds.h
> @@ -26,7 +26,7 @@
> The type `struct msg' is opaque. */
> struct msqid_ds
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/types/struct_msqid64_ds_helper.h>
> #else
> struct ipc_perm msg_perm; /* structure describing operation permission */
> diff --git a/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h
> index d1a30e3164..0746684a7d 100644
> --- a/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h
> +++ b/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h
> @@ -23,7 +23,7 @@
> /* Data structure describing a set of semaphores. */
> struct semid_ds
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/types/struct_semid64_ds_helper.h>
> #else
> struct ipc_perm sem_perm; /* operation permission struct */
> diff --git a/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h
> index 8771164b57..c665af1874 100644
> --- a/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h
> +++ b/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h
> @@ -23,7 +23,7 @@
> /* Data structure describing a shared memory segment. */
> struct shmid_ds
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/types/struct_shmid64_ds_helper.h>
> #else
> struct ipc_perm shm_perm; /* operation permission struct */
> diff --git a/sysdeps/unix/sysv/linux/nios2/bits/struct_stat.h b/sysdeps/unix/sysv/linux/nios2/bits/struct_stat.h
> index 672c7c6bb8..dab466d881 100644
> --- a/sysdeps/unix/sysv/linux/nios2/bits/struct_stat.h
> +++ b/sysdeps/unix/sysv/linux/nios2/bits/struct_stat.h
> @@ -43,7 +43,7 @@
>
> struct stat
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> #else
> __dev_t st_dev; /* Device. */
> @@ -88,7 +88,7 @@ struct stat
> #ifdef __USE_LARGEFILE64
> struct stat64
> {
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> # else
> __dev_t st_dev; /* Device. */
> diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/socket-constants.h b/sysdeps/unix/sysv/linux/powerpc/bits/socket-constants.h
> index 6be5055e65..0d3e095c5d 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/bits/socket-constants.h
> +++ b/sysdeps/unix/sysv/linux/powerpc/bits/socket-constants.h
> @@ -54,7 +54,7 @@
> # define SO_TIMESTAMPNS_NEW 64
> # define SO_TIMESTAMPING_NEW 65
>
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # define SO_RCVTIMEO SO_RCVTIMEO_NEW
> # define SO_SNDTIMEO SO_SNDTIMEO_NEW
> # define SO_TIMESTAMP SO_TIMESTAMP_NEW
> diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/struct_stat.h b/sysdeps/unix/sysv/linux/powerpc/bits/struct_stat.h
> index f6328399cd..2cf331544a 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/bits/struct_stat.h
> +++ b/sysdeps/unix/sysv/linux/powerpc/bits/struct_stat.h
> @@ -28,7 +28,7 @@
> #if __WORDSIZE == 32
> struct stat
> {
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> # else
> __dev_t st_dev; /* Device. */
> @@ -79,13 +79,13 @@ struct stat
> # endif
> unsigned long int __glibc_reserved4;
> unsigned long int __glibc_reserved5;
> -# endif /* __USE_TIME_BITS64 */
> +# endif /* __USE_TIME64_REDIRECTS */
> };
>
> # ifdef __USE_LARGEFILE64
> struct stat64
> {
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> # else
> __dev_t st_dev; /* Device. */
> @@ -122,7 +122,7 @@ struct stat64
> # endif
> unsigned long int __glibc_reserved4;
> unsigned long int __glibc_reserved5;
> -# endif /* __USE_TIME_BITS64 */
> +# endif /* __USE_TIME64_REDIRECTS */
> };
> # endif /* __USE_LARGEFILE64 */
>
> diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_msqid_ds.h
> index 830629cd37..44ae08265d 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_msqid_ds.h
> +++ b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_msqid_ds.h
> @@ -26,7 +26,7 @@
> The type `struct msg' is opaque. */
> struct msqid_ds
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/types/struct_msqid64_ds_helper.h>
> #else
> struct ipc_perm msg_perm; /* structure describing operation permission */
> diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h
> index 4370257557..ccee57c28b 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h
> +++ b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h
> @@ -23,7 +23,7 @@
> /* Data structure describing a set of semaphores. */
> struct semid_ds
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/types/struct_semid64_ds_helper.h>
> #else
> struct ipc_perm sem_perm; /* operation permission struct */
> diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h
> index da1b4b3c56..58145d0a5d 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h
> +++ b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h
> @@ -23,7 +23,7 @@
> /* Data structure describing a shared memory segment. */
> struct shmid_ds
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/types/struct_shmid64_ds_helper.h>
> #else
> struct ipc_perm shm_perm; /* operation permission struct */
> diff --git a/sysdeps/unix/sysv/linux/s390/bits/struct_stat.h b/sysdeps/unix/sysv/linux/s390/bits/struct_stat.h
> index 9911c47bb2..e5c9024fb2 100644
> --- a/sysdeps/unix/sysv/linux/s390/bits/struct_stat.h
> +++ b/sysdeps/unix/sysv/linux/s390/bits/struct_stat.h
> @@ -65,7 +65,7 @@ struct stat
> #else
> struct stat
> {
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> # else
> __dev_t st_dev; /* Device. */
> @@ -166,7 +166,7 @@ struct stat64
> # else
> struct stat64
> {
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> # else
> __dev_t st_dev; /* Device. */
> diff --git a/sysdeps/unix/sysv/linux/sh/bits/struct_stat.h b/sysdeps/unix/sysv/linux/sh/bits/struct_stat.h
> index cbd4bc0f31..d47cd7be1e 100644
> --- a/sysdeps/unix/sysv/linux/sh/bits/struct_stat.h
> +++ b/sysdeps/unix/sysv/linux/sh/bits/struct_stat.h
> @@ -28,7 +28,7 @@
>
> struct stat
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> #else
> __dev_t st_dev; /* Device. */
> @@ -83,13 +83,13 @@ struct stat
> # else
> __ino64_t st_ino; /* File serial number. */
> # endif
> -#endif /* __USE_TIME_BITS64 */
> +#endif /* __USE_TIME64_REDIRECTS */
> };
>
> #ifdef __USE_LARGEFILE64
> struct stat64
> {
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> # else
> __dev_t st_dev; /* Device. */
> @@ -125,7 +125,7 @@ struct stat64
> unsigned long int st_ctimensec; /* Nsecs of last status change. */
> # endif
> __ino64_t st_ino; /* File serial number. */
> -# endif /* __USE_TIME_BITS64 */
> +# endif /* __USE_TIME64_REDIRECTS */
> };
> #endif
>
> diff --git a/sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h b/sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h
> index 59958611c4..e7a6b684cc 100644
> --- a/sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h
> +++ b/sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h
> @@ -54,7 +54,7 @@
> # define SO_TIMESTAMPNS_NEW 0x0042
> # define SO_TIMESTAMPING_NEW 0x0043
>
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # define SO_RCVTIMEO SO_RCVTIMEO_NEW
> # define SO_SNDTIMEO SO_SNDTIMEO_NEW
> # define SO_TIMESTAMP SO_TIMESTAMP_NEW
> diff --git a/sysdeps/unix/sysv/linux/sparc/bits/struct_stat.h b/sysdeps/unix/sysv/linux/sparc/bits/struct_stat.h
> index 4e48634edc..fcab5f4804 100644
> --- a/sysdeps/unix/sysv/linux/sparc/bits/struct_stat.h
> +++ b/sysdeps/unix/sysv/linux/sparc/bits/struct_stat.h
> @@ -28,7 +28,7 @@
>
> struct stat
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> #else
> __dev_t st_dev; /* Device. */
> @@ -79,13 +79,13 @@ struct stat
> # endif
> unsigned long int __glibc_reserved4;
> unsigned long int __glibc_reserved5;
> -#endif /* __USE_TIME_BITS64 */
> +#endif /* __USE_TIME64_REDIRECTS */
> };
>
> #ifdef __USE_LARGEFILE64
> struct stat64
> {
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> # else
> __dev_t st_dev; /* Device. */
> @@ -126,7 +126,7 @@ struct stat64
> # endif
> unsigned long int __glibc_reserved4;
> unsigned long int __glibc_reserved5;
> -# endif /* __USE_TIME_BITS64 */
> +# endif /* __USE_TIME64_REDIRECTS */
> };
> #endif
>
> diff --git a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_msqid_ds.h
> index db783c28d4..ed8d47c9b6 100644
> --- a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_msqid_ds.h
> +++ b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_msqid_ds.h
> @@ -26,7 +26,7 @@
> The type `struct msg' is opaque. */
> struct msqid_ds
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/types/struct_msqid64_ds_helper.h>
> #else
> struct ipc_perm msg_perm; /* structure describing operation permission */
> diff --git a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h
> index 1c8a3693db..b9e729b8b4 100644
> --- a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h
> +++ b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h
> @@ -23,7 +23,7 @@
> /* Data structure describing a set of semaphores. */
> struct semid_ds
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/types/struct_semid64_ds_helper.h>
> #else
> struct ipc_perm sem_perm; /* operation permission struct */
> diff --git a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h
> index 35a0cc36ab..7885d2ab25 100644
> --- a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h
> +++ b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h
> @@ -23,7 +23,7 @@
> /* Data structure describing a shared memory segment. */
> struct shmid_ds
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/types/struct_shmid64_ds_helper.h>
> #else
> struct ipc_perm shm_perm; /* operation permission struct */
> diff --git a/sysdeps/unix/sysv/linux/sys/epoll.h b/sysdeps/unix/sysv/linux/sys/epoll.h
> index 9b51e3bd14..fc8dce45c8 100644
> --- a/sysdeps/unix/sysv/linux/sys/epoll.h
> +++ b/sysdeps/unix/sysv/linux/sys/epoll.h
> @@ -140,7 +140,7 @@ extern int epoll_pwait (int __epfd, struct epoll_event *__events,
>
> This function is a cancellation point and therefore not marked with
> __THROW. */
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> extern int epoll_pwait2 (int __epfd, struct epoll_event *__events,
> int __maxevents, const struct timespec *__timeout,
> const __sigset_t *__ss)
> diff --git a/sysdeps/unix/sysv/linux/sys/prctl.h b/sysdeps/unix/sysv/linux/sys/prctl.h
> index b13b846261..79a9b31273 100644
> --- a/sysdeps/unix/sysv/linux/sys/prctl.h
> +++ b/sysdeps/unix/sysv/linux/sys/prctl.h
> @@ -38,7 +38,7 @@
> __BEGIN_DECLS
>
> /* Control process execution. */
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> extern int prctl (int __option, ...) __THROW;
> #else
> # ifdef __REDIRECT
> diff --git a/sysdeps/unix/sysv/linux/sys/timerfd.h b/sysdeps/unix/sysv/linux/sys/timerfd.h
> index 19d0cbfae0..f66ece306a 100644
> --- a/sysdeps/unix/sysv/linux/sys/timerfd.h
> +++ b/sysdeps/unix/sysv/linux/sys/timerfd.h
> @@ -47,7 +47,7 @@ extern int timerfd_settime (int __ufd, int __flags,
> const struct itimerspec *__utmr,
> struct itimerspec *__otmr) __THROW;
>
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # if defined(__REDIRECT_NTH)
> extern int __REDIRECT_NTH (timerfd_settime,
> (int __ufd, int __flags,
> @@ -62,7 +62,7 @@ extern int __REDIRECT_NTH (timerfd_settime,
> /* Return the next expiration time of UFD. */
> extern int timerfd_gettime (int __ufd, struct itimerspec *__otmr) __THROW;
>
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # if defined(__REDIRECT_NTH)
> extern int __REDIRECT_NTH (timerfd_gettime, (int __ufd,
> struct itimerspec *__otmr),
> diff --git a/sysdeps/unix/sysv/linux/sys/timex.h b/sysdeps/unix/sysv/linux/sys/timex.h
> index 28ce022253..568748d767 100644
> --- a/sysdeps/unix/sysv/linux/sys/timex.h
> +++ b/sysdeps/unix/sysv/linux/sys/timex.h
> @@ -54,7 +54,7 @@ struct ntptimeval
>
> __BEGIN_DECLS
>
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> extern int adjtimex (struct timex *__ntx) __THROW __nonnull ((1));
> extern int ntp_gettimex (struct ntptimeval *__ntv) __THROW __nonnull ((1));
>
> diff --git a/sysdeps/unix/sysv/linux/x86/bits/struct_stat.h b/sysdeps/unix/sysv/linux/x86/bits/struct_stat.h
> index 21aa315d8d..810d6566f0 100644
> --- a/sysdeps/unix/sysv/linux/x86/bits/struct_stat.h
> +++ b/sysdeps/unix/sysv/linux/x86/bits/struct_stat.h
> @@ -25,7 +25,7 @@
>
> struct stat
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> #else
> __dev_t st_dev; /* Device. */
> @@ -95,14 +95,14 @@ struct stat
> __ino64_t st_ino; /* File serial number. */
> # endif
> # endif
> -#endif /* __USE_TIME_BITS64 */
> +#endif /* __USE_TIME64_REDIRECTS */
> };
>
> #ifdef __USE_LARGEFILE64
> /* Note stat64 has the same shape as stat for x86-64. */
> struct stat64
> {
> -# ifdef __USE_TIME_BITS64
> +# ifdef __USE_TIME64_REDIRECTS
> # include <bits/struct_stat_time64_helper.h>
> # else
> __dev_t st_dev; /* Device. */
> @@ -152,7 +152,7 @@ struct stat64
> # else
> __ino64_t st_ino; /* File serial number. */
> # endif
> -# endif /* __USE_TIME_BITS64 */
> +# endif /* __USE_TIME64_REDIRECTS */
> };
> #endif
>
> diff --git a/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h
> index 9f3d170b65..81867c0316 100644
> --- a/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h
> +++ b/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h
> @@ -23,7 +23,7 @@
> /* Data structure describing a set of semaphores. */
> struct semid_ds
> {
> -#ifdef __USE_TIME_BITS64
> +#ifdef __USE_TIME64_REDIRECTS
> # include <bits/types/struct_semid64_ds_helper.h>
> #else
> struct ipc_perm sem_perm; /* operation permission struct */
> diff --git a/sysvipc/sys/msg.h b/sysvipc/sys/msg.h
> index d0388b0522..4178ad9955 100644
> --- a/sysvipc/sys/msg.h
> +++ b/sysvipc/sys/msg.h
> @@ -58,7 +58,7 @@ struct msgbuf
> __BEGIN_DECLS
>
> /* Message queue control operation. */
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> extern int msgctl (int __msqid, int __cmd, struct msqid_ds *__buf) __THROW;
> #else
> # ifdef __REDIRECT_NTH
> diff --git a/sysvipc/sys/sem.h b/sysvipc/sys/sem.h
> index 5d9ec39296..812f1303b3 100644
> --- a/sysvipc/sys/sem.h
> +++ b/sysvipc/sys/sem.h
> @@ -48,7 +48,7 @@ struct sembuf
> __BEGIN_DECLS
>
> /* Semaphore control operation. */
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> extern int semctl (int __semid, int __semnum, int __cmd, ...) __THROW;
> #else
> # ifdef __REDIRECT_NTH
> @@ -68,7 +68,7 @@ extern int semop (int __semid, struct sembuf *__sops, size_t __nsops) __THROW;
>
> #ifdef __USE_GNU
> /* Operate on semaphore with timeout. */
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern int semtimedop (int __semid, struct sembuf *__sops, size_t __nsops,
> const struct timespec *__timeout) __THROW;
> # else
> diff --git a/sysvipc/sys/shm.h b/sysvipc/sys/shm.h
> index 04191656d5..496e57ef45 100644
> --- a/sysvipc/sys/shm.h
> +++ b/sysvipc/sys/shm.h
> @@ -46,7 +46,7 @@ __BEGIN_DECLS
> facility. The definition is found in XPG4.2. */
>
> /* Shared memory control operation. */
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> extern int shmctl (int __shmid, int __cmd, struct shmid_ds *__buf) __THROW;
> #else
> # ifdef __REDIRECT_NTH
> 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;
> diff --git a/time/sys/time.h b/time/sys/time.h
> index c8708198a5..8c3d0c3022 100644
> --- a/time/sys/time.h
> +++ b/time/sys/time.h
> @@ -63,7 +63,7 @@ struct timezone
> use localtime etc. instead.
> This function itself is semi-obsolete;
> most callers should use time or clock_gettime instead. */
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> extern int gettimeofday (struct timeval *__restrict __tv,
> void *__restrict __tz) __THROW __nonnull ((1));
> #else
> @@ -77,7 +77,7 @@ extern int __REDIRECT_NTH (gettimeofday, (struct timeval *__restrict __tv,
> #endif
>
> #ifdef __USE_MISC
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> /* Set the current time of day and timezone information.
> This call is restricted to the super-user.
> Setting the timezone in this way is obsolete, but we don't yet
> @@ -143,7 +143,7 @@ typedef enum __itimer_which __itimer_which_t;
> typedef int __itimer_which_t;
> #endif
>
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> /* Set *VALUE to the current setting of timer WHICH.
> Return 0 on success, -1 on errors. */
> extern int getitimer (__itimer_which_t __which,
> @@ -184,7 +184,7 @@ extern int __REDIRECT_NTH (utimes, (const char *__file,
> #endif
>
> #ifdef __USE_MISC
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> /* Same as `utimes', but does not follow symbolic links. */
> extern int lutimes (const char *__file, const struct timeval __tvp[2])
> __THROW __nonnull ((1));
> @@ -207,7 +207,7 @@ extern int __REDIRECT_NTH (futimes, (int __fd, const struct timeval __tvp[2]),
> #endif
>
> #ifdef __USE_GNU
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> /* Change the access time of FILE relative to FD to TVP[0] and the
> modification time of FILE to TVP[1]. If TVP is a null pointer, use
> the current time instead. Returns 0 on success, -1 on errors. */
> diff --git a/time/time.h b/time/time.h
> index b34cf22b4e..bc043188e1 100644
> --- a/time/time.h
> +++ b/time/time.h
> @@ -71,7 +71,7 @@ __BEGIN_DECLS
> The result / CLOCKS_PER_SEC is program time in seconds. */
> extern clock_t clock (void) __THROW;
>
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> /* Return the current time and put it in *TIMER if TIMER is not NULL. */
> extern time_t time (time_t *__timer) __THROW;
>
> @@ -127,7 +127,7 @@ extern char *strptime_l (const char *__restrict __s,
> #endif
>
>
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> /* Return the `struct tm' representation of *TIMER
> in Universal Coordinated Time (aka Greenwich Mean Time). */
> extern struct tm *gmtime (const time_t *__timer) __THROW;
> @@ -149,7 +149,7 @@ extern struct tm *__REDIRECT_NTH (localtime, (const time_t *__timer),
>
>
> #if defined __USE_POSIX || __GLIBC_USE (ISOC23)
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> /* Return the `struct tm' representation of *TIMER in UTC,
> using *TP to store the result. */
> extern struct tm *gmtime_r (const time_t *__restrict __timer,
> @@ -180,7 +180,7 @@ extern struct tm*__REDIRECT_NTH (localtime_r, (const time_t *__restrict __t,
> extern char *asctime (const struct tm *__tp) __THROW;
>
> /* Equivalent to `asctime (localtime (timer))'. */
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> extern char *ctime (const time_t *__timer) __THROW;
> #else
> # ifdef __REDIRECT_NTH
> @@ -199,7 +199,7 @@ extern char *asctime_r (const struct tm *__restrict __tp,
> char *__restrict __buf) __THROW;
>
> /* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'. */
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> extern char *ctime_r (const time_t *__restrict __timer,
> char *__restrict __buf) __THROW;
> #else
> @@ -242,7 +242,7 @@ extern long int timezone;
>
>
> #if defined __USE_MISC || __GLIBC_USE (ISOC23)
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> /* Like `mktime', but for TP represents Universal Time, not local time. */
> extern time_t timegm (struct tm *__tp) __THROW;
> # else
> @@ -259,7 +259,7 @@ extern time_t __REDIRECT_NTH (timegm, (struct tm *__tp), __timegm64);
> /* Miscellaneous functions many Unices inherited from the public domain
> localtime package. These are included only for compatibility. */
>
> -#ifndef __USE_TIME_BITS64
> +#ifndef __USE_TIME64_REDIRECTS
> /* Another name for `mktime'. */
> extern time_t timelocal (struct tm *__tp) __THROW;
> #else
> @@ -274,7 +274,7 @@ extern int dysize (int __year) __THROW __attribute__ ((__const__));
>
>
> #ifdef __USE_POSIX199309
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> /* Pause execution for a number of nanoseconds.
>
> This function is a cancellation point and therefore not marked with
> @@ -320,7 +320,7 @@ extern int __REDIRECT_NTH (clock_settime, (clockid_t __clock_id, const struct
>
> This function is a cancellation point and therefore not marked with
> __THROW. */
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern int clock_nanosleep (clockid_t __clock_id, int __flags,
> const struct timespec *__req,
> struct timespec *__rem);
> @@ -349,7 +349,7 @@ extern int timer_create (clockid_t __clock_id,
> extern int timer_delete (timer_t __timerid) __THROW;
>
> /* Set timer TIMERID to VALUE, returning old value in OVALUE. */
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> extern int timer_settime (timer_t __timerid, int __flags,
> const struct itimerspec *__restrict __value,
> struct itimerspec *__restrict __ovalue) __THROW;
> @@ -379,7 +379,7 @@ extern int timer_getoverrun (timer_t __timerid) __THROW;
>
>
> #ifdef __USE_ISOC11
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> /* Set TS to calendar time based in time base BASE. */
> extern int timespec_get (struct timespec *__ts, int __base)
> __THROW __nonnull ((1));
> @@ -395,7 +395,7 @@ extern int __REDIRECT_NTH (timespec_get, (struct timespec *__ts, int __base),
>
>
> #if __GLIBC_USE (ISOC23)
> -# ifndef __USE_TIME_BITS64
> +# ifndef __USE_TIME64_REDIRECTS
> /* Set TS to resolution of time base BASE. */
> extern int timespec_getres (struct timespec *__ts, int __base)
> __THROW;
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v5] Always define __USE_TIME_BITS64 when 64 bit time_t is used
2024-03-18 12:21 [PATCH v5] Always define __USE_TIME_BITS64 when 64 bit time_t is used Adhemerval Zanella
2024-03-18 12:23 ` Adhemerval Zanella Netto
@ 2024-03-18 12:37 ` Andreas Schwab
2024-03-18 12:53 ` Adhemerval Zanella Netto
2024-04-02 2:57 ` [PATCH v6] " DJ Delorie
2 siblings, 1 reply; 12+ messages in thread
From: Andreas Schwab @ 2024-03-18 12:37 UTC (permalink / raw)
To: Adhemerval Zanella; +Cc: libc-alpha, DJ Delorie, Florian Weimer
On Mär 18 2024, Adhemerval Zanella wrote:
> diff --git a/manual/maint.texi b/manual/maint.texi
> index 89da704f45..d08f30a6e0 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 == 64} is set to 64, @theglibc{} will also define
When @code{__TIMESIZE} is set to 64,
--
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v5] Always define __USE_TIME_BITS64 when 64 bit time_t is used
2024-03-18 12:37 ` Andreas Schwab
@ 2024-03-18 12:53 ` Adhemerval Zanella Netto
0 siblings, 0 replies; 12+ messages in thread
From: Adhemerval Zanella Netto @ 2024-03-18 12:53 UTC (permalink / raw)
To: Andreas Schwab; +Cc: libc-alpha, DJ Delorie, Florian Weimer
On 18/03/24 09:37, Andreas Schwab wrote:
> On Mär 18 2024, Adhemerval Zanella wrote:
>
>> diff --git a/manual/maint.texi b/manual/maint.texi
>> index 89da704f45..d08f30a6e0 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 == 64} is set to 64, @theglibc{} will also define
>
> When @code{__TIMESIZE} is set to 64,
>
Sigh, thanks again. I will fix it locally.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v6] Always define __USE_TIME_BITS64 when 64 bit time_t is used
2024-03-18 12:21 [PATCH v5] Always define __USE_TIME_BITS64 when 64 bit time_t is used Adhemerval Zanella
2024-03-18 12:23 ` Adhemerval Zanella Netto
2024-03-18 12:37 ` Andreas Schwab
@ 2024-04-02 2:57 ` DJ Delorie
2024-04-04 17:28 ` Joseph Myers
2 siblings, 1 reply; 12+ messages in thread
From: DJ Delorie @ 2024-04-02 2:57 UTC (permalink / raw)
To: Adhemerval Zanella; +Cc: libc-alpha
Looks good to me with the exception of the one doc change Andreas
pointed out. Ok with the proposed change.
Reviewed-by: DJ Delorie <dj@redhat.com>
Adhemerval Zanella <adhemerval.zanella@linaro.org> writes:
> Changes from v5:
> * Removed sysdeps/generic/features-time64.h.
> * Fixes documentation wording.
Confirmed.
> Changes from v4:
> * Move the __USE_TIME64_REDIRECTS documentation to creature.texi.
> * Do not define __USE_TIME64_REDIRECTS for generic case.
Confirmed.
> 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}.
Ok.
> diff --git a/manual/maint.texi b/manual/maint.texi
> index 89da704f45..d08f30a6e0 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 == 64} is set to 64, @theglibc{} will also define
As Andreas noted, needs fixing.
> +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.
Ok.
> diff --git a/sysdeps/generic/features-time64.h b/sysdeps/generic/features-time64.h
> deleted file mode 100644
Ok.
> diff --git a/sysdeps/unix/sysv/linux/features-time64.h b/sysdeps/unix/sysv/linux/features-time64.h
> index dd3442c2ea..8d573cd23e 100644
> --- a/sysdeps/unix/sysv/linux/features-time64.h
> +++ b/sysdeps/unix/sysv/linux/features-time64.h
> @@ -24,9 +24,8 @@
> # if _TIME_BITS == 64
> # if ! defined (_FILE_OFFSET_BITS) || _FILE_OFFSET_BITS != 64
> # error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64"
> -# elif __TIMESIZE == 32
> -# define __USE_TIME_BITS64 1
> # endif
> +# define __USE_TIME_BITS64 1
> # elif _TIME_BITS == 32
> # if __TIMESIZE > 32
> # error "_TIME_BITS=32 is not compatible with __TIMESIZE > 32"
Ok.
> @@ -34,4 +33,10 @@
> # else
> # error Invalid _TIME_BITS value (can only be 32 or 64-bit)
> # endif
> +#elif __TIMESIZE == 64
> +# define __USE_TIME_BITS64 1
> +#endif
> +
> +#if defined __USE_TIME_BITS64 && __TIMESIZE == 32
> +# define __USE_TIME64_REDIRECTS 1
> #endif
Ok.
Mechanical change follows...
> diff --git a/io/bits/poll2.h b/io/bits/poll2.h
. . .
Ok.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v6] Always define __USE_TIME_BITS64 when 64 bit time_t is used
2024-04-02 2:57 ` [PATCH v6] " DJ Delorie
@ 2024-04-04 17:28 ` Joseph Myers
2024-04-04 18:22 ` Adhemerval Zanella Netto
0 siblings, 1 reply; 12+ messages in thread
From: Joseph Myers @ 2024-04-04 17:28 UTC (permalink / raw)
To: DJ Delorie; +Cc: Adhemerval Zanella, libc-alpha
This change broke the build for Hurd (features-time64.h no longer found as
the sysdeps/generic/ version was removed).
--
Joseph S. Myers
josmyers@redhat.com
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v6] Always define __USE_TIME_BITS64 when 64 bit time_t is used
2024-04-04 17:28 ` Joseph Myers
@ 2024-04-04 18:22 ` Adhemerval Zanella Netto
0 siblings, 0 replies; 12+ messages in thread
From: Adhemerval Zanella Netto @ 2024-04-04 18:22 UTC (permalink / raw)
To: Joseph Myers, DJ Delorie; +Cc: libc-alpha
On 04/04/24 14:28, Joseph Myers wrote:
> This change broke the build for Hurd (features-time64.h no longer found as
> the sysdeps/generic/ version was removed).
>
I will take a look, thanks.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v5] Always define __USE_TIME_BITS64 when 64 bit time_t is used
2024-03-18 12:07 ` Andreas Schwab
@ 2024-03-18 12:19 ` Adhemerval Zanella Netto
0 siblings, 0 replies; 12+ messages in thread
From: Adhemerval Zanella Netto @ 2024-03-18 12:19 UTC (permalink / raw)
To: Andreas Schwab; +Cc: libc-alpha, DJ Delorie
On 18/03/24 09:07, Andreas Schwab wrote:
> On Mär 18 2024, Adhemerval Zanella wrote:
>
>> diff --git a/manual/maint.texi b/manual/maint.texi
>> index 89da704f45..1c441eb5f7 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 == 64} is set, @theglibc{} will also define the
>
> When @code{__TIMESIZE} is set to 64,
>
>> +@code{__USE_TIME_BITS64}. It is used by the Linux kernel ABI to set the
>
> the @code{__USE_TIME_BITS64} macro.
Ack.
>
>> diff --git a/sysdeps/generic/features-time64.h b/sysdeps/generic/features-time64.h
>> index 4d38b8ba76..8fe811bd9e 100644
>> --- a/sysdeps/generic/features-time64.h
>> +++ b/sysdeps/generic/features-time64.h
>> @@ -17,3 +17,7 @@
>> <https://www.gnu.org/licenses/>. */
>>
>> /* The generic configuration only support _TIME_BITS=32. */
>> +#define __USE_TIME_BITS64 0
>
> This is supposed to be used with #ifdef, it should not be defined here.
In fact, it now does not make much sense to add the generic features-time64.h
header (since both macros should be explicit defined).
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v5] Always define __USE_TIME_BITS64 when 64 bit time_t is used
2024-03-18 11:58 ` Florian Weimer
@ 2024-03-18 12:18 ` Adhemerval Zanella Netto
0 siblings, 0 replies; 12+ messages in thread
From: Adhemerval Zanella Netto @ 2024-03-18 12:18 UTC (permalink / raw)
To: Florian Weimer; +Cc: libc-alpha, DJ Delorie
On 18/03/24 08:58, Florian Weimer wrote:
> * Adhemerval Zanella:
>
>> diff --git a/sysdeps/generic/features-time64.h b/sysdeps/generic/features-time64.h
>> index 4d38b8ba76..8fe811bd9e 100644
>> --- a/sysdeps/generic/features-time64.h
>> +++ b/sysdeps/generic/features-time64.h
>> @@ -17,3 +17,7 @@
>> <https://www.gnu.org/licenses/>. */
>>
>> /* The generic configuration only support _TIME_BITS=32. */
>> +#define __USE_TIME_BITS64 0
>> +
>> +/* The __USE_TIME64_REDIRECTS macro defines whether the 64 time_t
>> + redirects will be used for 64 bit aware symbols. */
>
> I thought that generic was going to be the future in terms of ABIs? So
> restricting it to _TIME_BITS=32 is surprising.
>
Right, I added mainly to avoid messing with Hurd default. But I think
it would be better to add a hurd-only header to override it.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v5] Always define __USE_TIME_BITS64 when 64 bit time_t is used
2024-03-18 11:42 [PATCH v5] " Adhemerval Zanella
2024-03-18 11:58 ` Florian Weimer
@ 2024-03-18 12:07 ` Andreas Schwab
2024-03-18 12:19 ` Adhemerval Zanella Netto
1 sibling, 1 reply; 12+ messages in thread
From: Andreas Schwab @ 2024-03-18 12:07 UTC (permalink / raw)
To: Adhemerval Zanella; +Cc: libc-alpha, DJ Delorie
On Mär 18 2024, Adhemerval Zanella wrote:
> diff --git a/manual/maint.texi b/manual/maint.texi
> index 89da704f45..1c441eb5f7 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 == 64} is set, @theglibc{} will also define the
When @code{__TIMESIZE} is set to 64,
> +@code{__USE_TIME_BITS64}. It is used by the Linux kernel ABI to set the
the @code{__USE_TIME_BITS64} macro.
> diff --git a/sysdeps/generic/features-time64.h b/sysdeps/generic/features-time64.h
> index 4d38b8ba76..8fe811bd9e 100644
> --- a/sysdeps/generic/features-time64.h
> +++ b/sysdeps/generic/features-time64.h
> @@ -17,3 +17,7 @@
> <https://www.gnu.org/licenses/>. */
>
> /* The generic configuration only support _TIME_BITS=32. */
> +#define __USE_TIME_BITS64 0
This is supposed to be used with #ifdef, it should not be defined here.
--
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v5] Always define __USE_TIME_BITS64 when 64 bit time_t is used
2024-03-18 11:42 [PATCH v5] " Adhemerval Zanella
@ 2024-03-18 11:58 ` Florian Weimer
2024-03-18 12:18 ` Adhemerval Zanella Netto
2024-03-18 12:07 ` Andreas Schwab
1 sibling, 1 reply; 12+ messages in thread
From: Florian Weimer @ 2024-03-18 11:58 UTC (permalink / raw)
To: Adhemerval Zanella; +Cc: libc-alpha, DJ Delorie
* Adhemerval Zanella:
> diff --git a/sysdeps/generic/features-time64.h b/sysdeps/generic/features-time64.h
> index 4d38b8ba76..8fe811bd9e 100644
> --- a/sysdeps/generic/features-time64.h
> +++ b/sysdeps/generic/features-time64.h
> @@ -17,3 +17,7 @@
> <https://www.gnu.org/licenses/>. */
>
> /* The generic configuration only support _TIME_BITS=32. */
> +#define __USE_TIME_BITS64 0
> +
> +/* The __USE_TIME64_REDIRECTS macro defines whether the 64 time_t
> + redirects will be used for 64 bit aware symbols. */
I thought that generic was going to be the future in terms of ABIs? So
restricting it to _TIME_BITS=32 is surprising.
Thanks,
Florian
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v5] Always define __USE_TIME_BITS64 when 64 bit time_t is used
@ 2024-03-18 11:42 Adhemerval Zanella
2024-03-18 11:58 ` Florian Weimer
2024-03-18 12:07 ` Andreas Schwab
0 siblings, 2 replies; 12+ messages in thread
From: Adhemerval Zanella @ 2024-03-18 11:42 UTC (permalink / raw)
To: libc-alpha; +Cc: DJ Delorie
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
--
Changes from v4:
* Move the __USE_TIME64_REDIRECTS documentation to creature.texi.
* Do not define __USE_TIME64_REDIRECTS for generic case.
Changes from v3:
* Add documentation about the __USE_TIME_BITS64 and
__USE_TIME64_REDIRECTS.
* Removed __USE_TIME_BITS64 references in comments.
* Rebased against master.
Changes from v2:
* Only defined __USE_TIME_BITS64 when 64 bit time_t is used.
Changes from v1:
* Use __USE_TIME64_REDIRECTS to allow replace the current macro.
---
io/bits/poll2.h | 2 +-
io/fcntl.h | 4 ++--
io/fts.h | 6 ++---
io/ftw.h | 12 +++++-----
io/sys/poll.h | 2 +-
io/sys/stat.h | 16 ++++++-------
io/utime.h | 4 ++--
manual/creature.texi | 6 +++++
manual/maint.texi | 4 ++++
misc/sys/ioctl.h | 2 +-
misc/sys/select.h | 4 ++--
posix/glob.h | 4 ++--
posix/sched.h | 2 +-
posix/sys/wait.h | 4 ++--
resolv/netdb.h | 2 +-
resource/sys/resource.h | 2 +-
rt/aio.h | 4 ++--
rt/mqueue.h | 2 +-
signal/signal.h | 2 +-
socket/sys/socket.h | 14 +++++------
support/timespec.h | 2 +-
support/xtime.h | 2 +-
support/xunistd.h | 2 +-
sysdeps/generic/features-time64.h | 4 ++++
sysdeps/nptl/pthread.h | 18 +++++++-------
sysdeps/pthread/semaphore.h | 4 ++--
sysdeps/pthread/threads.h | 6 ++---
.../unix/sysv/linux/arm/bits/struct_stat.h | 8 +++----
.../unix/sysv/linux/bits/socket-constants.h | 2 +-
sysdeps/unix/sysv/linux/bits/time.h | 2 +-
sysdeps/unix/sysv/linux/bits/timex.h | 2 +-
.../sysv/linux/bits/types/struct_msqid_ds.h | 2 +-
.../sysv/linux/bits/types/struct_semid_ds.h | 2 +-
.../sysv/linux/bits/types/struct_shmid_ds.h | 2 +-
.../unix/sysv/linux/csky/bits/struct_stat.h | 4 ++--
sysdeps/unix/sysv/linux/features-time64.h | 9 +++++--
.../sysv/linux/hppa/bits/socket-constants.h | 2 +-
.../unix/sysv/linux/hppa/bits/struct_stat.h | 8 +++----
.../linux/hppa/bits/types/struct_msqid_ds.h | 2 +-
.../linux/hppa/bits/types/struct_semid_ds.h | 2 +-
.../linux/hppa/bits/types/struct_shmid_ds.h | 2 +-
.../unix/sysv/linux/m68k/bits/struct_stat.h | 8 +++----
.../sysv/linux/microblaze/bits/struct_stat.h | 12 +++++-----
.../sysv/linux/mips/bits/socket-constants.h | 2 +-
.../unix/sysv/linux/mips/bits/struct_stat.h | 14 +++++------
.../linux/mips/bits/types/struct_msqid_ds.h | 2 +-
.../linux/mips/bits/types/struct_semid_ds.h | 2 +-
.../linux/mips/bits/types/struct_shmid_ds.h | 2 +-
.../unix/sysv/linux/nios2/bits/struct_stat.h | 4 ++--
.../linux/powerpc/bits/socket-constants.h | 2 +-
.../sysv/linux/powerpc/bits/struct_stat.h | 8 +++----
.../powerpc/bits/types/struct_msqid_ds.h | 2 +-
.../powerpc/bits/types/struct_semid_ds.h | 2 +-
.../powerpc/bits/types/struct_shmid_ds.h | 2 +-
.../unix/sysv/linux/s390/bits/struct_stat.h | 4 ++--
sysdeps/unix/sysv/linux/sh/bits/struct_stat.h | 8 +++----
.../sysv/linux/sparc/bits/socket-constants.h | 2 +-
.../unix/sysv/linux/sparc/bits/struct_stat.h | 8 +++----
.../linux/sparc/bits/types/struct_msqid_ds.h | 2 +-
.../linux/sparc/bits/types/struct_semid_ds.h | 2 +-
.../linux/sparc/bits/types/struct_shmid_ds.h | 2 +-
sysdeps/unix/sysv/linux/sys/epoll.h | 2 +-
sysdeps/unix/sysv/linux/sys/prctl.h | 2 +-
sysdeps/unix/sysv/linux/sys/timerfd.h | 4 ++--
sysdeps/unix/sysv/linux/sys/timex.h | 2 +-
.../unix/sysv/linux/x86/bits/struct_stat.h | 8 +++----
.../linux/x86/bits/types/struct_semid_ds.h | 2 +-
sysvipc/sys/msg.h | 2 +-
sysvipc/sys/sem.h | 4 ++--
sysvipc/sys/shm.h | 2 +-
time/bits/types/struct_timespec.h | 4 ++--
time/bits/types/struct_timeval.h | 2 +-
time/bits/types/time_t.h | 2 +-
time/sys/time.h | 10 ++++----
time/time.h | 24 +++++++++----------
75 files changed, 182 insertions(+), 163 deletions(-)
diff --git a/io/bits/poll2.h b/io/bits/poll2.h
index 24ec1056eb..ca9d58badd 100644
--- a/io/bits/poll2.h
+++ b/io/bits/poll2.h
@@ -48,7 +48,7 @@ poll (__fortify_clang_overload_arg (struct pollfd *, ,__fds), nfds_t __nfds,
#ifdef __USE_GNU
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
extern int __REDIRECT (__ppoll64_alias, (struct pollfd *__fds, nfds_t __nfds,
const struct timespec *__timeout,
const __sigset_t *__ss), __ppoll64);
diff --git a/io/fcntl.h b/io/fcntl.h
index 38aa12d7f2..f157991782 100644
--- a/io/fcntl.h
+++ b/io/fcntl.h
@@ -172,7 +172,7 @@ typedef __pid_t pid_t;
This function is a cancellation point and therefore not marked with
__THROW. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
# ifndef __USE_FILE_OFFSET64
extern int fcntl (int __fd, int __cmd, ...);
# else
@@ -185,7 +185,7 @@ extern int __REDIRECT (fcntl, (int __fd, int __cmd, ...), fcntl64);
# ifdef __USE_LARGEFILE64
extern int fcntl64 (int __fd, int __cmd, ...);
# endif
-#else /* __USE_TIME_BITS64 */
+#else /* __USE_TIME64_REDIRECTS */
# ifdef __REDIRECT
extern int __REDIRECT_NTH (fcntl, (int __fd, int __request, ...),
__fcntl_time64);
diff --git a/io/fts.h b/io/fts.h
index 61f95bb441..97a031ebbd 100644
--- a/io/fts.h
+++ b/io/fts.h
@@ -187,7 +187,7 @@ FTSENT *fts_read (FTS *);
int fts_set (FTS *, FTSENT *, int) __THROW;
#else
# ifdef __REDIRECT
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
FTSENT *__REDIRECT (fts_children, (FTS *, int), fts64_children);
int __REDIRECT (fts_close, (FTS *), fts64_close);
FTS *__REDIRECT (fts_open, (char * const *, int,
@@ -206,7 +206,7 @@ int __REDIRECT_NTH (fts_set, (FTS *, FTSENT *, int),
__fts64_set_time64);
# endif
# else
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
# define fts_children fts64_children
# define fts_close fts64_close
# define fts_open fts64_open
@@ -217,7 +217,7 @@ int __REDIRECT_NTH (fts_set, (FTS *, FTSENT *, int),
# endif
#endif
#ifdef __USE_LARGEFILE64
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
FTSENT64 *fts64_children (FTS64 *, int);
int fts64_close (FTS64 *);
FTS64 *fts64_open (char * const *, int,
diff --git a/io/ftw.h b/io/ftw.h
index e4d1b84d53..39cf595b27 100644
--- a/io/ftw.h
+++ b/io/ftw.h
@@ -137,7 +137,7 @@ extern int ftw (const char *__dir, __ftw_func_t __func, int __descriptors)
__nonnull ((1, 2));
#else
# ifdef __REDIRECT
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int __REDIRECT (ftw, (const char *__dir, __ftw_func_t __func,
int __descriptors), ftw64) __nonnull ((1, 2));
# else
@@ -146,7 +146,7 @@ extern int __REDIRECT (ftw, (const char *__dir, __ftw_func_t __func,
__nonnull ((1, 2));
# endif
# else
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
# define ftw ftw64
# else
# define ftw __ftw64_time64
@@ -154,7 +154,7 @@ extern int __REDIRECT (ftw, (const char *__dir, __ftw_func_t __func,
# endif
#endif
#ifdef __USE_LARGEFILE64
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int ftw64 (const char *__dir, __ftw64_func_t __func,
int __descriptors) __nonnull ((1, 2));
# else
@@ -180,7 +180,7 @@ extern int nftw (const char *__dir, __nftw_func_t __func, int __descriptors,
int __flag) __nonnull ((1, 2));
# else
# ifdef __REDIRECT
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int __REDIRECT (nftw, (const char *__dir, __nftw_func_t __func,
int __descriptors, int __flag), nftw64)
__nonnull ((1, 2));
@@ -190,7 +190,7 @@ extern int __REDIRECT (nftw, (const char *__dir, __nftw_func_t __func,
__nonnull ((1, 2));
# endif
# else
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
# define nftw nftw64
# else
# define nftw __nftw64_time64
@@ -198,7 +198,7 @@ extern int __REDIRECT (nftw, (const char *__dir, __nftw_func_t __func,
# endif
# endif
# ifdef __USE_LARGEFILE64
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int nftw64 (const char *__dir, __nftw64_func_t __func,
int __descriptors, int __flag) __nonnull ((1, 2));
# else
diff --git a/io/sys/poll.h b/io/sys/poll.h
index 7858fad6b9..c324ff5dad 100644
--- a/io/sys/poll.h
+++ b/io/sys/poll.h
@@ -66,7 +66,7 @@ extern int ppoll (struct pollfd *__fds, nfds_t __nfds,
const __sigset_t *__ss)
__fortified_attr_access (__write_only__, 1, 2);
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# ifdef __REDIRECT
extern int __REDIRECT (ppoll, (struct pollfd *__fds, nfds_t __nfds,
const struct timespec *__timeout,
diff --git a/io/sys/stat.h b/io/sys/stat.h
index 1fa6d6e62e..3b4ba80132 100644
--- a/io/sys/stat.h
+++ b/io/sys/stat.h
@@ -209,7 +209,7 @@ extern int stat (const char *__restrict __file,
that file descriptor FD is open on and put them in BUF. */
extern int fstat (int __fd, struct stat *__buf) __THROW __nonnull ((2));
#else
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# ifdef __REDIRECT_NTH
extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
struct stat *__restrict __buf),
@@ -236,7 +236,7 @@ extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf), fstat64)
# endif
#endif
#ifdef __USE_LARGEFILE64
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int stat64 (const char *__restrict __file,
struct stat64 *__restrict __buf) __THROW __nonnull ((1, 2));
extern int fstat64 (int __fd, struct stat64 *__buf) __THROW __nonnull ((2));
@@ -265,7 +265,7 @@ extern int fstatat (int __fd, const char *__restrict __file,
struct stat *__restrict __buf, int __flag)
__THROW __nonnull ((2, 3));
# else
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# ifdef __REDIRECT_NTH
extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
struct stat *__restrict __buf,
@@ -287,7 +287,7 @@ extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
# endif
# ifdef __USE_LARGEFILE64
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int fstatat64 (int __fd, const char *__restrict __file,
struct stat64 *__restrict __buf, int __flag)
__THROW __nonnull ((2, 3));
@@ -313,7 +313,7 @@ extern int __REDIRECT_NTH (fstatat64, (int __fd,
extern int lstat (const char *__restrict __file,
struct stat *__restrict __buf) __THROW __nonnull ((1, 2));
# else
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# ifdef __REDIRECT_NTH
extern int __REDIRECT_NTH (lstat,
(const char *__restrict __file,
@@ -334,7 +334,7 @@ extern int __REDIRECT_NTH (lstat,
# endif
# endif
# ifdef __USE_LARGEFILE64
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int lstat64 (const char *__restrict __file,
struct stat64 *__restrict __buf)
__THROW __nonnull ((1, 2));
@@ -427,7 +427,7 @@ extern int mkfifoat (int __fd, const char *__path, __mode_t __mode)
#endif
\f
#ifdef __USE_ATFILE
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* Set file access and modification times relative to directory file
descriptor. */
extern int utimensat (int __fd, const char *__path,
@@ -447,7 +447,7 @@ extern int __REDIRECT_NTH (utimensat, (int fd, const char *__path,
#endif
#ifdef __USE_XOPEN2K8
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* Set file access and modification times of the file associated with FD. */
extern int futimens (int __fd, const struct timespec __times[2]) __THROW;
diff --git a/io/utime.h b/io/utime.h
index c5eacedd6a..1c7587d9c1 100644
--- a/io/utime.h
+++ b/io/utime.h
@@ -35,7 +35,7 @@ __BEGIN_DECLS
/* Structure describing file times. */
struct utimbuf
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
__time64_t actime; /* Access time. */
__time64_t modtime; /* Modification time. */
#else
@@ -46,7 +46,7 @@ struct utimbuf
/* Set the access and modification times of FILE to those given in
*FILE_TIMES. If FILE_TIMES is NULL, set them to the current time. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int utime (const char *__file,
const struct utimbuf *__file_times)
__THROW __nonnull ((1));
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..1c441eb5f7 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 == 64} is set, @theglibc{} will also define the
+@code{__USE_TIME_BITS64}. 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
diff --git a/misc/sys/ioctl.h b/misc/sys/ioctl.h
index 3f2338ddd3..ea6583e122 100644
--- a/misc/sys/ioctl.h
+++ b/misc/sys/ioctl.h
@@ -38,7 +38,7 @@ __BEGIN_DECLS
/* Perform the I/O control operation specified by REQUEST on FD.
One argument may follow; its presence and type depend on REQUEST.
Return value depends on REQUEST. Usually -1 indicates error. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int ioctl (int __fd, unsigned long int __request, ...) __THROW;
#else
# ifdef __REDIRECT
diff --git a/misc/sys/select.h b/misc/sys/select.h
index e6a0c1b8b2..2e45e94bc1 100644
--- a/misc/sys/select.h
+++ b/misc/sys/select.h
@@ -98,7 +98,7 @@ __BEGIN_DECLS
This function is a cancellation point and therefore not marked with
__THROW. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int select (int __nfds, fd_set *__restrict __readfds,
fd_set *__restrict __writefds,
fd_set *__restrict __exceptfds,
@@ -123,7 +123,7 @@ extern int __REDIRECT (select,
This function is a cancellation point and therefore not marked with
__THROW. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int pselect (int __nfds, fd_set *__restrict __readfds,
fd_set *__restrict __writefds,
fd_set *__restrict __exceptfds,
diff --git a/posix/glob.h b/posix/glob.h
index 3406662840..b6bba0fbcd 100644
--- a/posix/glob.h
+++ b/posix/glob.h
@@ -150,7 +150,7 @@ extern int glob (const char *__restrict __pattern, int __flags,
/* Free storage allocated in PGLOB by a previous `glob' call. */
extern void globfree (glob_t *__pglob) __THROW;
#else
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
extern int __REDIRECT_NTHNL (glob, (const char *__restrict __pattern,
int __flags,
int (*__errfunc) (const char *, int),
@@ -170,7 +170,7 @@ extern void __REDIRECT_NTH (globfree, (glob_t *__pglob), globfree64);
#endif
#ifdef __USE_LARGEFILE64
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
extern int __REDIRECT_NTHNL (glob64, (const char *__restrict __pattern,
int __flags,
int (*__errfunc) (const char *, int),
diff --git a/posix/sched.h b/posix/sched.h
index 3eac206f35..49f504a488 100644
--- a/posix/sched.h
+++ b/posix/sched.h
@@ -74,7 +74,7 @@ extern int sched_get_priority_max (int __algorithm) __THROW;
extern int sched_get_priority_min (int __algorithm) __THROW;
/* Get the SCHED_RR interval for the named process. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __THROW;
#else
# ifdef __REDIRECT_NTH
diff --git a/posix/sys/wait.h b/posix/sys/wait.h
index edbb7b4392..1f44ee1145 100644
--- a/posix/sys/wait.h
+++ b/posix/sys/wait.h
@@ -139,7 +139,7 @@ struct rusage;
nil, store information about the child's resource usage there. If the
WUNTRACED bit is set in OPTIONS, return status for stopped children;
otherwise don't. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern __pid_t wait3 (int *__stat_loc, int __options,
struct rusage * __usage) __THROWNL;
# else
@@ -154,7 +154,7 @@ extern __pid_t __REDIRECT_NTHNL (wait3, (int *__stat_loc, int __options,
#endif
#ifdef __USE_MISC
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* PID is like waitpid. Other args are like wait3. */
extern __pid_t wait4 (__pid_t __pid, int *__stat_loc, int __options,
struct rusage *__usage) __THROWNL;
diff --git a/resolv/netdb.h b/resolv/netdb.h
index 14228b0d95..b7f473fafe 100644
--- a/resolv/netdb.h
+++ b/resolv/netdb.h
@@ -701,7 +701,7 @@ extern int getaddrinfo_a (int __mode, struct gaicb *__list[__restrict_arr],
extern int gai_suspend (const struct gaicb *const __list[], int __ent,
const struct timespec *__timeout);
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# if defined(__REDIRECT)
extern int __REDIRECT (gai_suspend, (const struct gaicb *const __list[],
int __ent,
diff --git a/resource/sys/resource.h b/resource/sys/resource.h
index a5634ba715..b0bf751e92 100644
--- a/resource/sys/resource.h
+++ b/resource/sys/resource.h
@@ -88,7 +88,7 @@ extern int setrlimit64 (__rlimit_resource_t __resource,
and put it in *USAGE. Returns 0 for success, -1 for failure. */
extern int getrusage (__rusage_who_t __who, struct rusage *__usage) __THROW;
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# if defined(__REDIRECT_NTH)
extern int __REDIRECT_NTH (getrusage, (__rusage_who_t __who,
struct rusage *__usage),
diff --git a/rt/aio.h b/rt/aio.h
index 37d19abf16..e71435733f 100644
--- a/rt/aio.h
+++ b/rt/aio.h
@@ -193,7 +193,7 @@ extern __ssize_t __REDIRECT_NTH (aio_return, (struct aiocb *__aiocbp),
extern int __REDIRECT_NTH (aio_cancel,
(int __fildes, struct aiocb *__aiocbp),
aio_cancel64);
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
extern int __REDIRECT_NTH (aio_suspend,
(const struct aiocb *const __list[], int __nent,
const struct timespec *__restrict __timeout),
@@ -215,7 +215,7 @@ extern int __REDIRECT_NTH (aio_fsync,
# define aio_error aio_error64
# define aio_return aio_return64
# define aio_cancel aio_cancel64
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# define aio_suspend __aio_suspend_time64
# else
# define aio_suspend aio_suspend64
diff --git a/rt/mqueue.h b/rt/mqueue.h
index d39334ba16..14fc2a6195 100644
--- a/rt/mqueue.h
+++ b/rt/mqueue.h
@@ -71,7 +71,7 @@ extern int mq_send (mqd_t __mqdes, const char *__msg_ptr, size_t __msg_len,
unsigned int __msg_prio) __nonnull ((2));
#ifdef __USE_XOPEN2K
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* Receive the oldest from highest priority messages in message queue
MQDES, stop waiting if ABS_TIMEOUT expires. */
extern ssize_t mq_timedreceive (mqd_t __mqdes, char *__restrict __msg_ptr,
diff --git a/signal/signal.h b/signal/signal.h
index f37499ce60..8e07b041b1 100644
--- a/signal/signal.h
+++ b/signal/signal.h
@@ -269,7 +269,7 @@ extern int sigwaitinfo (const sigset_t *__restrict __set,
This function is a cancellation point and therefore not marked with
__THROW. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int sigtimedwait (const sigset_t *__restrict __set,
siginfo_t *__restrict __info,
const struct timespec *__restrict __timeout)
diff --git a/socket/sys/socket.h b/socket/sys/socket.h
index 366eaab845..463cf3291b 100644
--- a/socket/sys/socket.h
+++ b/socket/sys/socket.h
@@ -170,7 +170,7 @@ extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n,
This function is a cancellation point and therefore not marked with
__THROW. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern ssize_t sendmsg (int __fd, const struct msghdr *__message,
int __flags);
#else
@@ -191,7 +191,7 @@ extern ssize_t __sendmsg64 (int __fd, const struct msghdr *__message,
This function is a cancellation point and therefore not marked with
__THROW. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int sendmmsg (int __fd, struct mmsghdr *__vmessages,
unsigned int __vlen, int __flags);
# else
@@ -204,7 +204,7 @@ extern int __sendmmsg64 (int __fd, struct mmsghdr *__vmessages,
unsigned int __vlen, int __flags);
# define sendmmsg __sendmmsg64
# endif
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
#endif /* __USE_GNU */
/* Receive a message as described by MESSAGE from socket FD.
@@ -212,7 +212,7 @@ extern int __sendmmsg64 (int __fd, struct mmsghdr *__vmessages,
This function is a cancellation point and therefore not marked with
__THROW. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags);
#else
# ifdef __REDIRECT
@@ -231,7 +231,7 @@ extern ssize_t __recvmsg64 (int __fd, struct msghdr *__message, int __flags);
This function is a cancellation point and therefore not marked with
__THROW. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
unsigned int __vlen, int __flags,
struct timespec *__tmo);
@@ -251,7 +251,7 @@ extern int __REDIRECT (recvmmsg, (int __fd, struct mmsghdr *__vmessages,
/* Put the current value for socket FD's option OPTNAME at protocol level LEVEL
into OPTVAL (which is *OPTLEN bytes long), and set *OPTLEN to the value's
actual length. Returns 0 on success, -1 for errors. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int getsockopt (int __fd, int __level, int __optname,
void *__restrict __optval,
socklen_t *__restrict __optlen) __THROW;
@@ -273,7 +273,7 @@ extern int __getsockopt64 (int __fd, int __level, int __optname,
/* Set socket FD's option OPTNAME at protocol level LEVEL
to *OPTVAL (which is OPTLEN bytes long).
Returns 0 on success, -1 for errors. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int setsockopt (int __fd, int __level, int __optname,
const void *__optval, socklen_t __optlen) __THROW;
#else
diff --git a/support/timespec.h b/support/timespec.h
index 42f32bcc2c..5ccc7163a5 100644
--- a/support/timespec.h
+++ b/support/timespec.h
@@ -35,7 +35,7 @@ make_timespec (time_t s, long int ns)
enum { TIMESPEC_HZ = 1000000000 };
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
struct timespec timespec_add (struct timespec, struct timespec)
__attribute__((const));
struct timespec timespec_sub (struct timespec, struct timespec)
diff --git a/support/xtime.h b/support/xtime.h
index 5200eef2e0..9961899634 100644
--- a/support/xtime.h
+++ b/support/xtime.h
@@ -30,7 +30,7 @@ __BEGIN_DECLS
/* The following functions call the corresponding libc functions and
terminate the process on error. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
void xclock_gettime (clockid_t clock, struct timespec *ts);
void xclock_settime (clockid_t clock, const struct timespec *ts);
#else
diff --git a/support/xunistd.h b/support/xunistd.h
index b5e8c2f420..13be9a46a3 100644
--- a/support/xunistd.h
+++ b/support/xunistd.h
@@ -36,7 +36,7 @@ pid_t xwaitpid (pid_t, int *status, int flags);
void xpipe (int[2]);
void xdup2 (int, int);
int xopen (const char *path, int flags, mode_t);
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
# ifdef __USE_FILE_OFFSET64
void xstat (const char *path, struct stat *);
void xlstat (const char *path, struct stat *);
diff --git a/sysdeps/generic/features-time64.h b/sysdeps/generic/features-time64.h
index 4d38b8ba76..8fe811bd9e 100644
--- a/sysdeps/generic/features-time64.h
+++ b/sysdeps/generic/features-time64.h
@@ -17,3 +17,7 @@
<https://www.gnu.org/licenses/>. */
/* The generic configuration only support _TIME_BITS=32. */
+#define __USE_TIME_BITS64 0
+
+/* The __USE_TIME64_REDIRECTS macro defines whether the 64 time_t
+ redirects will be used for 64 bit aware symbols. */
diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h
index 1607fdf29a..3d4f4a756c 100644
--- a/sysdeps/nptl/pthread.h
+++ b/sysdeps/nptl/pthread.h
@@ -223,7 +223,7 @@ extern int pthread_join (pthread_t __th, void **__thread_return);
the thread in *THREAD_RETURN, if THREAD_RETURN is not NULL. */
extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __THROW;
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* Make calling thread wait for termination of the thread TH, but only
until TIMEOUT. The exit status of the thread is stored in
*THREAD_RETURN, if THREAD_RETURN is not NULL.
@@ -796,7 +796,7 @@ extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
#ifdef __USE_XOPEN2K
/* Wait until lock becomes available, or specified time passes. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
const struct timespec *__restrict
__abstime) __THROWNL __nonnull ((1, 2));
@@ -813,7 +813,7 @@ extern int __REDIRECT_NTHNL (pthread_mutex_timedlock,
#endif
#ifdef __USE_GNU
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex,
clockid_t __clockid,
const struct timespec *__restrict
@@ -982,7 +982,7 @@ extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
# ifdef __USE_XOPEN2K
/* Try to acquire read lock for RWLOCK or return after specified time. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
const struct timespec *__restrict
__abstime) __THROWNL __nonnull ((1, 2));
@@ -1000,7 +1000,7 @@ extern int __REDIRECT_NTHNL (pthread_rwlock_timedrdlock,
# endif
# ifdef __USE_GNU
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock,
clockid_t __clockid,
const struct timespec *__restrict
@@ -1029,7 +1029,7 @@ extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
# ifdef __USE_XOPEN2K
/* Try to acquire write lock for RWLOCK or return after specified time. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
const struct timespec *__restrict
__abstime) __THROWNL __nonnull ((1, 2));
@@ -1047,7 +1047,7 @@ extern int __REDIRECT_NTHNL (pthread_rwlock_timedwrlock,
# endif
# ifdef __USE_GNU
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock,
clockid_t __clockid,
const struct timespec *__restrict
@@ -1141,7 +1141,7 @@ extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
This function is a cancellation point and therefore not marked with
__THROW. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
pthread_mutex_t *__restrict __mutex,
const struct timespec *__restrict __abstime)
@@ -1167,7 +1167,7 @@ extern int __REDIRECT (pthread_cond_timedwait,
This function is a cancellation point and therefore not marked with
__THROW. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond,
pthread_mutex_t *__restrict __mutex,
__clockid_t __clock_id,
diff --git a/sysdeps/pthread/semaphore.h b/sysdeps/pthread/semaphore.h
index c75ca4ce6d..8a09633699 100644
--- a/sysdeps/pthread/semaphore.h
+++ b/sysdeps/pthread/semaphore.h
@@ -59,7 +59,7 @@ extern int sem_wait (sem_t *__sem) __nonnull ((1));
This function is a cancellation point and therefore not marked with
__THROW. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int sem_timedwait (sem_t *__restrict __sem,
const struct timespec *__restrict __abstime)
__nonnull ((1, 2));
@@ -77,7 +77,7 @@ extern int __REDIRECT (sem_timedwait,
#endif
#ifdef __USE_GNU
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int sem_clockwait (sem_t *__restrict __sem,
clockid_t clock,
const struct timespec *__restrict __abstime)
diff --git a/sysdeps/pthread/threads.h b/sysdeps/pthread/threads.h
index c5410b5c3a..7cade24e1f 100644
--- a/sysdeps/pthread/threads.h
+++ b/sysdeps/pthread/threads.h
@@ -90,7 +90,7 @@ extern thrd_t thrd_current (void);
__TIME_POINT. The current thread may resume if receives a signal. In
that case, if __REMAINING is not NULL, the remaining time is stored in
the object pointed by it. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int thrd_sleep (const struct timespec *__time_point,
struct timespec *__remaining);
#else
@@ -143,7 +143,7 @@ extern int mtx_lock (mtx_t *__mutex);
/* Block the current thread until the mutex pointed by __MUTEX is unlocked
or time pointed by __TIME_POINT is reached. In case the mutex is unlock,
the current thread will not be blocked. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int mtx_timedlock (mtx_t *__restrict __mutex,
const struct timespec *__restrict __time_point);
#else
@@ -194,7 +194,7 @@ extern int cnd_wait (cnd_t *__cond, mtx_t *__mutex);
/* Block current thread on the condition variable until condition variable
pointed by __COND is signaled or time pointed by __TIME_POINT is
reached. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int cnd_timedwait (cnd_t *__restrict __cond,
mtx_t *__restrict __mutex,
const struct timespec *__restrict __time_point);
diff --git a/sysdeps/unix/sysv/linux/arm/bits/struct_stat.h b/sysdeps/unix/sysv/linux/arm/bits/struct_stat.h
index 255feaa8cb..89534fea85 100644
--- a/sysdeps/unix/sysv/linux/arm/bits/struct_stat.h
+++ b/sysdeps/unix/sysv/linux/arm/bits/struct_stat.h
@@ -28,7 +28,7 @@
struct stat
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
#else
__dev_t st_dev; /* Device. */
@@ -83,13 +83,13 @@ struct stat
# else
__ino64_t st_ino; /* File serial number. */
# endif
-#endif /* __USE_TIME_BITS64 */
+#endif /* __USE_TIME64_REDIRECTS */
};
#ifdef __USE_LARGEFILE64
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev; /* Device. */
@@ -125,7 +125,7 @@ struct stat64
unsigned long int st_ctimensec; /* Nsecs of last status change. */
# endif
__ino64_t st_ino; /* File serial number. */
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
#endif
diff --git a/sysdeps/unix/sysv/linux/bits/socket-constants.h b/sysdeps/unix/sysv/linux/bits/socket-constants.h
index d997dbf594..b2102d3abf 100644
--- a/sysdeps/unix/sysv/linux/bits/socket-constants.h
+++ b/sysdeps/unix/sysv/linux/bits/socket-constants.h
@@ -64,7 +64,7 @@
# define SO_TIMESTAMPNS_NEW 64
# define SO_TIMESTAMPING_NEW 65
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# define SO_RCVTIMEO SO_RCVTIMEO_NEW
# define SO_SNDTIMEO SO_SNDTIMEO_NEW
# define SO_TIMESTAMP SO_TIMESTAMP_NEW
diff --git a/sysdeps/unix/sysv/linux/bits/time.h b/sysdeps/unix/sysv/linux/bits/time.h
index b70ba58a7d..cab4057971 100644
--- a/sysdeps/unix/sysv/linux/bits/time.h
+++ b/sysdeps/unix/sysv/linux/bits/time.h
@@ -77,7 +77,7 @@ __BEGIN_DECLS
/* Tune a POSIX clock. */
extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) __THROW __nonnull((2));
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# if defined(__REDIRECT_NTH)
extern int __REDIRECT_NTH (clock_adjtime, (__clockid_t __clock_id,
struct timex *__utx),
diff --git a/sysdeps/unix/sysv/linux/bits/timex.h b/sysdeps/unix/sysv/linux/bits/timex.h
index 398d8094f2..03ccde6d0a 100644
--- a/sysdeps/unix/sysv/linux/bits/timex.h
+++ b/sysdeps/unix/sysv/linux/bits/timex.h
@@ -25,7 +25,7 @@
struct timex
{
-# if defined __USE_TIME_BITS64 || (__TIMESIZE == 64 && __WORDSIZE == 32)
+# if defined __USE_TIME64_REDIRECTS || (__TIMESIZE == 64 && __WORDSIZE == 32)
unsigned int modes; /* mode selector */
int :32; /* pad */
long long offset; /* time offset (usec) */
diff --git a/sysdeps/unix/sysv/linux/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_msqid_ds.h
index fae50281c7..86296ca922 100644
--- a/sysdeps/unix/sysv/linux/bits/types/struct_msqid_ds.h
+++ b/sysdeps/unix/sysv/linux/bits/types/struct_msqid_ds.h
@@ -26,7 +26,7 @@
The type `struct msg' is opaque. */
struct msqid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_msqid64_ds_helper.h>
#else
struct ipc_perm msg_perm; /* structure describing operation permission */
diff --git a/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h
index 3c277ed1d8..2ac89b3ce4 100644
--- a/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h
+++ b/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h
@@ -23,7 +23,7 @@
/* Data structure describing a set of semaphores. */
struct semid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_semid64_ds_helper.h>
#else
struct ipc_perm sem_perm; /* operation permission struct */
diff --git a/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h
index 09de0b4e3a..1012ed0317 100644
--- a/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h
+++ b/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h
@@ -23,7 +23,7 @@
/* Data structure describing a shared memory segment. */
struct shmid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_shmid64_ds_helper.h>
#else
struct ipc_perm shm_perm; /* operation permission struct */
diff --git a/sysdeps/unix/sysv/linux/csky/bits/struct_stat.h b/sysdeps/unix/sysv/linux/csky/bits/struct_stat.h
index 4b4822d6d0..47a9f0aaff 100644
--- a/sysdeps/unix/sysv/linux/csky/bits/struct_stat.h
+++ b/sysdeps/unix/sysv/linux/csky/bits/struct_stat.h
@@ -43,7 +43,7 @@
struct stat
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
#else
__dev_t st_dev; /* Device. */
@@ -88,7 +88,7 @@ struct stat
#ifdef __USE_LARGEFILE64
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev; /* Device. */
diff --git a/sysdeps/unix/sysv/linux/features-time64.h b/sysdeps/unix/sysv/linux/features-time64.h
index dd3442c2ea..8d573cd23e 100644
--- a/sysdeps/unix/sysv/linux/features-time64.h
+++ b/sysdeps/unix/sysv/linux/features-time64.h
@@ -24,9 +24,8 @@
# if _TIME_BITS == 64
# if ! defined (_FILE_OFFSET_BITS) || _FILE_OFFSET_BITS != 64
# error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64"
-# elif __TIMESIZE == 32
-# define __USE_TIME_BITS64 1
# endif
+# define __USE_TIME_BITS64 1
# elif _TIME_BITS == 32
# if __TIMESIZE > 32
# error "_TIME_BITS=32 is not compatible with __TIMESIZE > 32"
@@ -34,4 +33,10 @@
# else
# error Invalid _TIME_BITS value (can only be 32 or 64-bit)
# endif
+#elif __TIMESIZE == 64
+# define __USE_TIME_BITS64 1
+#endif
+
+#if defined __USE_TIME_BITS64 && __TIMESIZE == 32
+# define __USE_TIME64_REDIRECTS 1
#endif
diff --git a/sysdeps/unix/sysv/linux/hppa/bits/socket-constants.h b/sysdeps/unix/sysv/linux/hppa/bits/socket-constants.h
index 58b523d03a..80a76a17dc 100644
--- a/sysdeps/unix/sysv/linux/hppa/bits/socket-constants.h
+++ b/sysdeps/unix/sysv/linux/hppa/bits/socket-constants.h
@@ -54,7 +54,7 @@
# define SO_TIMESTAMPNS_NEW 0x4039
# define SO_TIMESTAMPING_NEW 0x403A
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# define SO_RCVTIMEO SO_RCVTIMEO_NEW
# define SO_SNDTIMEO SO_SNDTIMEO_NEW
# define SO_TIMESTAMP SO_TIMESTAMP_NEW
diff --git a/sysdeps/unix/sysv/linux/hppa/bits/struct_stat.h b/sysdeps/unix/sysv/linux/hppa/bits/struct_stat.h
index 069efdbc55..09ea40054b 100644
--- a/sysdeps/unix/sysv/linux/hppa/bits/struct_stat.h
+++ b/sysdeps/unix/sysv/linux/hppa/bits/struct_stat.h
@@ -28,7 +28,7 @@
struct stat
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
#else
__dev_t st_dev; /* Device. */
@@ -83,13 +83,13 @@ struct stat
# else
__ino64_t st_ino; /* File serial number. */
# endif
-#endif /* __USE_TIME_BITS64 */
+#endif /* __USE_TIME64_REDIRECTS */
};
#ifdef __USE_LARGEFILE64
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev; /* Device. */
@@ -125,7 +125,7 @@ struct stat64
unsigned long int st_ctimensec; /* Nsecs of last status change. */
# endif
__ino64_t st_ino; /* File serial number. */
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
#endif
diff --git a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_msqid_ds.h
index 2bc7cac06d..4995e0a4a5 100644
--- a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_msqid_ds.h
+++ b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_msqid_ds.h
@@ -26,7 +26,7 @@
The type `struct msg' is opaque. */
struct msqid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_msqid64_ds_helper.h>
#else
struct ipc_perm msg_perm; /* structure describing operation permission */
diff --git a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h
index dd8fbebcf4..df88949dc2 100644
--- a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h
+++ b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h
@@ -23,7 +23,7 @@
/* Data structure describing a set of semaphores. */
struct semid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_semid64_ds_helper.h>
#else
struct ipc_perm sem_perm; /* operation permission struct */
diff --git a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h
index 58ac572b6e..cb3b0303aa 100644
--- a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h
+++ b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h
@@ -23,7 +23,7 @@
/* Data structure describing a shared memory segment. */
struct shmid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_shmid64_ds_helper.h>
#else
struct ipc_perm shm_perm; /* operation permission struct */
diff --git a/sysdeps/unix/sysv/linux/m68k/bits/struct_stat.h b/sysdeps/unix/sysv/linux/m68k/bits/struct_stat.h
index 3b1db157bc..b7f20189b1 100644
--- a/sysdeps/unix/sysv/linux/m68k/bits/struct_stat.h
+++ b/sysdeps/unix/sysv/linux/m68k/bits/struct_stat.h
@@ -25,7 +25,7 @@
struct stat
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
#else
__dev_t st_dev; /* Device. */
@@ -80,13 +80,13 @@ struct stat
# else
__ino64_t st_ino; /* File serial number. */
# endif
-#endif /* __USE_TIME_BITS64 */
+#endif /* __USE_TIME64_REDIRECTS */
};
#ifdef __USE_LARGEFILE64
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev; /* Device. */
@@ -122,7 +122,7 @@ struct stat64
unsigned long int st_ctimensec; /* Nsecs of last status change. */
# endif
__ino64_t st_ino; /* File serial number. */
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
#endif
diff --git a/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h b/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h
index 0f4693fb1f..ff1e269f14 100644
--- a/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h
+++ b/sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h
@@ -26,7 +26,7 @@
#ifndef __USE_FILE_OFFSET64
struct stat
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
#else
__dev_t st_dev; /* Device. */
@@ -64,7 +64,7 @@ struct stat
# endif
unsigned int __glibc_reserved4;
unsigned int __glibc_reserved5;
-#endif /* __USE_TIME_BITS64 */
+#endif /* __USE_TIME64_REDIRECTS */
};
#else /* __USE_FILE_OFFSET64 */
/* MS: If __USE_FILE_OFFSET64 is setup then struct stat should match stat64
@@ -74,7 +74,7 @@ struct stat
* create one ifdef to separate stats structures. */
struct stat
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
#else
unsigned long long st_dev; /* Device. */
@@ -112,14 +112,14 @@ struct stat
# endif
unsigned int __glibc_reserved4;
unsigned int __glibc_reserved5;
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
#endif /* __USE_FILE_OFFSET64 */
#ifdef __USE_LARGEFILE64
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
unsigned long long st_dev; /* Device. */
@@ -157,7 +157,7 @@ struct stat64
# endif
unsigned int __glibc_reserved4;
unsigned int __glibc_reserved5;
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
#endif
diff --git a/sysdeps/unix/sysv/linux/mips/bits/socket-constants.h b/sysdeps/unix/sysv/linux/mips/bits/socket-constants.h
index c6908a2793..77ffc8b890 100644
--- a/sysdeps/unix/sysv/linux/mips/bits/socket-constants.h
+++ b/sysdeps/unix/sysv/linux/mips/bits/socket-constants.h
@@ -54,7 +54,7 @@
# define SO_TIMESTAMPNS_NEW 64
# define SO_TIMESTAMPING_NEW 65
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# define SO_RCVTIMEO SO_RCVTIMEO_NEW
# define SO_SNDTIMEO SO_SNDTIMEO_NEW
# define SO_TIMESTAMP SO_TIMESTAMP_NEW
diff --git a/sysdeps/unix/sysv/linux/mips/bits/struct_stat.h b/sysdeps/unix/sysv/linux/mips/bits/struct_stat.h
index 277ebad9b6..50a4b367f6 100644
--- a/sysdeps/unix/sysv/linux/mips/bits/struct_stat.h
+++ b/sysdeps/unix/sysv/linux/mips/bits/struct_stat.h
@@ -29,7 +29,7 @@
/* Structure describing file characteristics. */
struct stat
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
unsigned long int st_dev;
@@ -82,13 +82,13 @@ struct stat
__blkcnt64_t st_blocks; /* Number of 512-byte blocks allocated. */
# endif
long int st_pad5[14];
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
# ifdef __USE_LARGEFILE64
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
unsigned long int st_dev;
@@ -123,7 +123,7 @@ struct stat64
long int st_pad3;
__blkcnt64_t st_blocks; /* Number of 512-byte blocks allocated. */
long int st_pad4[14];
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
# endif /* __USE_LARGEFILE64 */
@@ -131,7 +131,7 @@ struct stat64
struct stat
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev;
@@ -189,7 +189,7 @@ struct stat
#ifdef __USE_LARGEFILE64
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev;
@@ -224,7 +224,7 @@ struct stat64
unsigned int st_pad3;
__blkcnt64_t st_blocks;
int st_pad4[14];
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
#endif
diff --git a/sysdeps/unix/sysv/linux/mips/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/mips/bits/types/struct_msqid_ds.h
index 4e8bd51b0a..09c53648b7 100644
--- a/sysdeps/unix/sysv/linux/mips/bits/types/struct_msqid_ds.h
+++ b/sysdeps/unix/sysv/linux/mips/bits/types/struct_msqid_ds.h
@@ -26,7 +26,7 @@
The type `struct msg' is opaque. */
struct msqid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_msqid64_ds_helper.h>
#else
struct ipc_perm msg_perm; /* structure describing operation permission */
diff --git a/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h
index d1a30e3164..0746684a7d 100644
--- a/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h
+++ b/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h
@@ -23,7 +23,7 @@
/* Data structure describing a set of semaphores. */
struct semid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_semid64_ds_helper.h>
#else
struct ipc_perm sem_perm; /* operation permission struct */
diff --git a/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h
index 8771164b57..c665af1874 100644
--- a/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h
+++ b/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h
@@ -23,7 +23,7 @@
/* Data structure describing a shared memory segment. */
struct shmid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_shmid64_ds_helper.h>
#else
struct ipc_perm shm_perm; /* operation permission struct */
diff --git a/sysdeps/unix/sysv/linux/nios2/bits/struct_stat.h b/sysdeps/unix/sysv/linux/nios2/bits/struct_stat.h
index 672c7c6bb8..dab466d881 100644
--- a/sysdeps/unix/sysv/linux/nios2/bits/struct_stat.h
+++ b/sysdeps/unix/sysv/linux/nios2/bits/struct_stat.h
@@ -43,7 +43,7 @@
struct stat
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
#else
__dev_t st_dev; /* Device. */
@@ -88,7 +88,7 @@ struct stat
#ifdef __USE_LARGEFILE64
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev; /* Device. */
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/socket-constants.h b/sysdeps/unix/sysv/linux/powerpc/bits/socket-constants.h
index 6be5055e65..0d3e095c5d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/socket-constants.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/socket-constants.h
@@ -54,7 +54,7 @@
# define SO_TIMESTAMPNS_NEW 64
# define SO_TIMESTAMPING_NEW 65
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# define SO_RCVTIMEO SO_RCVTIMEO_NEW
# define SO_SNDTIMEO SO_SNDTIMEO_NEW
# define SO_TIMESTAMP SO_TIMESTAMP_NEW
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/struct_stat.h b/sysdeps/unix/sysv/linux/powerpc/bits/struct_stat.h
index f6328399cd..2cf331544a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/struct_stat.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/struct_stat.h
@@ -28,7 +28,7 @@
#if __WORDSIZE == 32
struct stat
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev; /* Device. */
@@ -79,13 +79,13 @@ struct stat
# endif
unsigned long int __glibc_reserved4;
unsigned long int __glibc_reserved5;
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
# ifdef __USE_LARGEFILE64
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev; /* Device. */
@@ -122,7 +122,7 @@ struct stat64
# endif
unsigned long int __glibc_reserved4;
unsigned long int __glibc_reserved5;
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
# endif /* __USE_LARGEFILE64 */
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_msqid_ds.h
index 830629cd37..44ae08265d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_msqid_ds.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_msqid_ds.h
@@ -26,7 +26,7 @@
The type `struct msg' is opaque. */
struct msqid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_msqid64_ds_helper.h>
#else
struct ipc_perm msg_perm; /* structure describing operation permission */
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h
index 4370257557..ccee57c28b 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h
@@ -23,7 +23,7 @@
/* Data structure describing a set of semaphores. */
struct semid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_semid64_ds_helper.h>
#else
struct ipc_perm sem_perm; /* operation permission struct */
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h
index da1b4b3c56..58145d0a5d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h
@@ -23,7 +23,7 @@
/* Data structure describing a shared memory segment. */
struct shmid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_shmid64_ds_helper.h>
#else
struct ipc_perm shm_perm; /* operation permission struct */
diff --git a/sysdeps/unix/sysv/linux/s390/bits/struct_stat.h b/sysdeps/unix/sysv/linux/s390/bits/struct_stat.h
index 9911c47bb2..e5c9024fb2 100644
--- a/sysdeps/unix/sysv/linux/s390/bits/struct_stat.h
+++ b/sysdeps/unix/sysv/linux/s390/bits/struct_stat.h
@@ -65,7 +65,7 @@ struct stat
#else
struct stat
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev; /* Device. */
@@ -166,7 +166,7 @@ struct stat64
# else
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev; /* Device. */
diff --git a/sysdeps/unix/sysv/linux/sh/bits/struct_stat.h b/sysdeps/unix/sysv/linux/sh/bits/struct_stat.h
index cbd4bc0f31..d47cd7be1e 100644
--- a/sysdeps/unix/sysv/linux/sh/bits/struct_stat.h
+++ b/sysdeps/unix/sysv/linux/sh/bits/struct_stat.h
@@ -28,7 +28,7 @@
struct stat
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
#else
__dev_t st_dev; /* Device. */
@@ -83,13 +83,13 @@ struct stat
# else
__ino64_t st_ino; /* File serial number. */
# endif
-#endif /* __USE_TIME_BITS64 */
+#endif /* __USE_TIME64_REDIRECTS */
};
#ifdef __USE_LARGEFILE64
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev; /* Device. */
@@ -125,7 +125,7 @@ struct stat64
unsigned long int st_ctimensec; /* Nsecs of last status change. */
# endif
__ino64_t st_ino; /* File serial number. */
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
#endif
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h b/sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h
index 59958611c4..e7a6b684cc 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h
@@ -54,7 +54,7 @@
# define SO_TIMESTAMPNS_NEW 0x0042
# define SO_TIMESTAMPING_NEW 0x0043
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# define SO_RCVTIMEO SO_RCVTIMEO_NEW
# define SO_SNDTIMEO SO_SNDTIMEO_NEW
# define SO_TIMESTAMP SO_TIMESTAMP_NEW
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/struct_stat.h b/sysdeps/unix/sysv/linux/sparc/bits/struct_stat.h
index 4e48634edc..fcab5f4804 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/struct_stat.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/struct_stat.h
@@ -28,7 +28,7 @@
struct stat
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
#else
__dev_t st_dev; /* Device. */
@@ -79,13 +79,13 @@ struct stat
# endif
unsigned long int __glibc_reserved4;
unsigned long int __glibc_reserved5;
-#endif /* __USE_TIME_BITS64 */
+#endif /* __USE_TIME64_REDIRECTS */
};
#ifdef __USE_LARGEFILE64
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev; /* Device. */
@@ -126,7 +126,7 @@ struct stat64
# endif
unsigned long int __glibc_reserved4;
unsigned long int __glibc_reserved5;
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
#endif
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_msqid_ds.h b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_msqid_ds.h
index db783c28d4..ed8d47c9b6 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_msqid_ds.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_msqid_ds.h
@@ -26,7 +26,7 @@
The type `struct msg' is opaque. */
struct msqid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_msqid64_ds_helper.h>
#else
struct ipc_perm msg_perm; /* structure describing operation permission */
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h
index 1c8a3693db..b9e729b8b4 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h
@@ -23,7 +23,7 @@
/* Data structure describing a set of semaphores. */
struct semid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_semid64_ds_helper.h>
#else
struct ipc_perm sem_perm; /* operation permission struct */
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h
index 35a0cc36ab..7885d2ab25 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h
@@ -23,7 +23,7 @@
/* Data structure describing a shared memory segment. */
struct shmid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_shmid64_ds_helper.h>
#else
struct ipc_perm shm_perm; /* operation permission struct */
diff --git a/sysdeps/unix/sysv/linux/sys/epoll.h b/sysdeps/unix/sysv/linux/sys/epoll.h
index 9b51e3bd14..fc8dce45c8 100644
--- a/sysdeps/unix/sysv/linux/sys/epoll.h
+++ b/sysdeps/unix/sysv/linux/sys/epoll.h
@@ -140,7 +140,7 @@ extern int epoll_pwait (int __epfd, struct epoll_event *__events,
This function is a cancellation point and therefore not marked with
__THROW. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int epoll_pwait2 (int __epfd, struct epoll_event *__events,
int __maxevents, const struct timespec *__timeout,
const __sigset_t *__ss)
diff --git a/sysdeps/unix/sysv/linux/sys/prctl.h b/sysdeps/unix/sysv/linux/sys/prctl.h
index b13b846261..79a9b31273 100644
--- a/sysdeps/unix/sysv/linux/sys/prctl.h
+++ b/sysdeps/unix/sysv/linux/sys/prctl.h
@@ -38,7 +38,7 @@
__BEGIN_DECLS
/* Control process execution. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int prctl (int __option, ...) __THROW;
#else
# ifdef __REDIRECT
diff --git a/sysdeps/unix/sysv/linux/sys/timerfd.h b/sysdeps/unix/sysv/linux/sys/timerfd.h
index 19d0cbfae0..f66ece306a 100644
--- a/sysdeps/unix/sysv/linux/sys/timerfd.h
+++ b/sysdeps/unix/sysv/linux/sys/timerfd.h
@@ -47,7 +47,7 @@ extern int timerfd_settime (int __ufd, int __flags,
const struct itimerspec *__utmr,
struct itimerspec *__otmr) __THROW;
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# if defined(__REDIRECT_NTH)
extern int __REDIRECT_NTH (timerfd_settime,
(int __ufd, int __flags,
@@ -62,7 +62,7 @@ extern int __REDIRECT_NTH (timerfd_settime,
/* Return the next expiration time of UFD. */
extern int timerfd_gettime (int __ufd, struct itimerspec *__otmr) __THROW;
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# if defined(__REDIRECT_NTH)
extern int __REDIRECT_NTH (timerfd_gettime, (int __ufd,
struct itimerspec *__otmr),
diff --git a/sysdeps/unix/sysv/linux/sys/timex.h b/sysdeps/unix/sysv/linux/sys/timex.h
index 28ce022253..568748d767 100644
--- a/sysdeps/unix/sysv/linux/sys/timex.h
+++ b/sysdeps/unix/sysv/linux/sys/timex.h
@@ -54,7 +54,7 @@ struct ntptimeval
__BEGIN_DECLS
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int adjtimex (struct timex *__ntx) __THROW __nonnull ((1));
extern int ntp_gettimex (struct ntptimeval *__ntv) __THROW __nonnull ((1));
diff --git a/sysdeps/unix/sysv/linux/x86/bits/struct_stat.h b/sysdeps/unix/sysv/linux/x86/bits/struct_stat.h
index 21aa315d8d..810d6566f0 100644
--- a/sysdeps/unix/sysv/linux/x86/bits/struct_stat.h
+++ b/sysdeps/unix/sysv/linux/x86/bits/struct_stat.h
@@ -25,7 +25,7 @@
struct stat
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
#else
__dev_t st_dev; /* Device. */
@@ -95,14 +95,14 @@ struct stat
__ino64_t st_ino; /* File serial number. */
# endif
# endif
-#endif /* __USE_TIME_BITS64 */
+#endif /* __USE_TIME64_REDIRECTS */
};
#ifdef __USE_LARGEFILE64
/* Note stat64 has the same shape as stat for x86-64. */
struct stat64
{
-# ifdef __USE_TIME_BITS64
+# ifdef __USE_TIME64_REDIRECTS
# include <bits/struct_stat_time64_helper.h>
# else
__dev_t st_dev; /* Device. */
@@ -152,7 +152,7 @@ struct stat64
# else
__ino64_t st_ino; /* File serial number. */
# endif
-# endif /* __USE_TIME_BITS64 */
+# endif /* __USE_TIME64_REDIRECTS */
};
#endif
diff --git a/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h
index 9f3d170b65..81867c0316 100644
--- a/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h
+++ b/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h
@@ -23,7 +23,7 @@
/* Data structure describing a set of semaphores. */
struct semid_ds
{
-#ifdef __USE_TIME_BITS64
+#ifdef __USE_TIME64_REDIRECTS
# include <bits/types/struct_semid64_ds_helper.h>
#else
struct ipc_perm sem_perm; /* operation permission struct */
diff --git a/sysvipc/sys/msg.h b/sysvipc/sys/msg.h
index d0388b0522..4178ad9955 100644
--- a/sysvipc/sys/msg.h
+++ b/sysvipc/sys/msg.h
@@ -58,7 +58,7 @@ struct msgbuf
__BEGIN_DECLS
/* Message queue control operation. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int msgctl (int __msqid, int __cmd, struct msqid_ds *__buf) __THROW;
#else
# ifdef __REDIRECT_NTH
diff --git a/sysvipc/sys/sem.h b/sysvipc/sys/sem.h
index 5d9ec39296..812f1303b3 100644
--- a/sysvipc/sys/sem.h
+++ b/sysvipc/sys/sem.h
@@ -48,7 +48,7 @@ struct sembuf
__BEGIN_DECLS
/* Semaphore control operation. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int semctl (int __semid, int __semnum, int __cmd, ...) __THROW;
#else
# ifdef __REDIRECT_NTH
@@ -68,7 +68,7 @@ extern int semop (int __semid, struct sembuf *__sops, size_t __nsops) __THROW;
#ifdef __USE_GNU
/* Operate on semaphore with timeout. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int semtimedop (int __semid, struct sembuf *__sops, size_t __nsops,
const struct timespec *__timeout) __THROW;
# else
diff --git a/sysvipc/sys/shm.h b/sysvipc/sys/shm.h
index 04191656d5..496e57ef45 100644
--- a/sysvipc/sys/shm.h
+++ b/sysvipc/sys/shm.h
@@ -46,7 +46,7 @@ __BEGIN_DECLS
facility. The definition is found in XPG4.2. */
/* Shared memory control operation. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int shmctl (int __shmid, int __cmd, struct shmid_ds *__buf) __THROW;
#else
# ifdef __REDIRECT_NTH
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;
diff --git a/time/sys/time.h b/time/sys/time.h
index c8708198a5..8c3d0c3022 100644
--- a/time/sys/time.h
+++ b/time/sys/time.h
@@ -63,7 +63,7 @@ struct timezone
use localtime etc. instead.
This function itself is semi-obsolete;
most callers should use time or clock_gettime instead. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern int gettimeofday (struct timeval *__restrict __tv,
void *__restrict __tz) __THROW __nonnull ((1));
#else
@@ -77,7 +77,7 @@ extern int __REDIRECT_NTH (gettimeofday, (struct timeval *__restrict __tv,
#endif
#ifdef __USE_MISC
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* Set the current time of day and timezone information.
This call is restricted to the super-user.
Setting the timezone in this way is obsolete, but we don't yet
@@ -143,7 +143,7 @@ typedef enum __itimer_which __itimer_which_t;
typedef int __itimer_which_t;
#endif
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
/* Set *VALUE to the current setting of timer WHICH.
Return 0 on success, -1 on errors. */
extern int getitimer (__itimer_which_t __which,
@@ -184,7 +184,7 @@ extern int __REDIRECT_NTH (utimes, (const char *__file,
#endif
#ifdef __USE_MISC
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* Same as `utimes', but does not follow symbolic links. */
extern int lutimes (const char *__file, const struct timeval __tvp[2])
__THROW __nonnull ((1));
@@ -207,7 +207,7 @@ extern int __REDIRECT_NTH (futimes, (int __fd, const struct timeval __tvp[2]),
#endif
#ifdef __USE_GNU
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* Change the access time of FILE relative to FD to TVP[0] and the
modification time of FILE to TVP[1]. If TVP is a null pointer, use
the current time instead. Returns 0 on success, -1 on errors. */
diff --git a/time/time.h b/time/time.h
index b34cf22b4e..bc043188e1 100644
--- a/time/time.h
+++ b/time/time.h
@@ -71,7 +71,7 @@ __BEGIN_DECLS
The result / CLOCKS_PER_SEC is program time in seconds. */
extern clock_t clock (void) __THROW;
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
/* Return the current time and put it in *TIMER if TIMER is not NULL. */
extern time_t time (time_t *__timer) __THROW;
@@ -127,7 +127,7 @@ extern char *strptime_l (const char *__restrict __s,
#endif
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
/* Return the `struct tm' representation of *TIMER
in Universal Coordinated Time (aka Greenwich Mean Time). */
extern struct tm *gmtime (const time_t *__timer) __THROW;
@@ -149,7 +149,7 @@ extern struct tm *__REDIRECT_NTH (localtime, (const time_t *__timer),
#if defined __USE_POSIX || __GLIBC_USE (ISOC23)
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* Return the `struct tm' representation of *TIMER in UTC,
using *TP to store the result. */
extern struct tm *gmtime_r (const time_t *__restrict __timer,
@@ -180,7 +180,7 @@ extern struct tm*__REDIRECT_NTH (localtime_r, (const time_t *__restrict __t,
extern char *asctime (const struct tm *__tp) __THROW;
/* Equivalent to `asctime (localtime (timer))'. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern char *ctime (const time_t *__timer) __THROW;
#else
# ifdef __REDIRECT_NTH
@@ -199,7 +199,7 @@ extern char *asctime_r (const struct tm *__restrict __tp,
char *__restrict __buf) __THROW;
/* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
extern char *ctime_r (const time_t *__restrict __timer,
char *__restrict __buf) __THROW;
#else
@@ -242,7 +242,7 @@ extern long int timezone;
#if defined __USE_MISC || __GLIBC_USE (ISOC23)
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* Like `mktime', but for TP represents Universal Time, not local time. */
extern time_t timegm (struct tm *__tp) __THROW;
# else
@@ -259,7 +259,7 @@ extern time_t __REDIRECT_NTH (timegm, (struct tm *__tp), __timegm64);
/* Miscellaneous functions many Unices inherited from the public domain
localtime package. These are included only for compatibility. */
-#ifndef __USE_TIME_BITS64
+#ifndef __USE_TIME64_REDIRECTS
/* Another name for `mktime'. */
extern time_t timelocal (struct tm *__tp) __THROW;
#else
@@ -274,7 +274,7 @@ extern int dysize (int __year) __THROW __attribute__ ((__const__));
#ifdef __USE_POSIX199309
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* Pause execution for a number of nanoseconds.
This function is a cancellation point and therefore not marked with
@@ -320,7 +320,7 @@ extern int __REDIRECT_NTH (clock_settime, (clockid_t __clock_id, const struct
This function is a cancellation point and therefore not marked with
__THROW. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int clock_nanosleep (clockid_t __clock_id, int __flags,
const struct timespec *__req,
struct timespec *__rem);
@@ -349,7 +349,7 @@ extern int timer_create (clockid_t __clock_id,
extern int timer_delete (timer_t __timerid) __THROW;
/* Set timer TIMERID to VALUE, returning old value in OVALUE. */
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
extern int timer_settime (timer_t __timerid, int __flags,
const struct itimerspec *__restrict __value,
struct itimerspec *__restrict __ovalue) __THROW;
@@ -379,7 +379,7 @@ extern int timer_getoverrun (timer_t __timerid) __THROW;
#ifdef __USE_ISOC11
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* Set TS to calendar time based in time base BASE. */
extern int timespec_get (struct timespec *__ts, int __base)
__THROW __nonnull ((1));
@@ -395,7 +395,7 @@ extern int __REDIRECT_NTH (timespec_get, (struct timespec *__ts, int __base),
#if __GLIBC_USE (ISOC23)
-# ifndef __USE_TIME_BITS64
+# ifndef __USE_TIME64_REDIRECTS
/* Set TS to resolution of time base BASE. */
extern int timespec_getres (struct timespec *__ts, int __base)
__THROW;
--
2.34.1
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2024-04-04 18:22 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-03-18 12:21 [PATCH v5] Always define __USE_TIME_BITS64 when 64 bit time_t is used Adhemerval Zanella
2024-03-18 12:23 ` Adhemerval Zanella Netto
2024-03-18 12:37 ` Andreas Schwab
2024-03-18 12:53 ` Adhemerval Zanella Netto
2024-04-02 2:57 ` [PATCH v6] " DJ Delorie
2024-04-04 17:28 ` Joseph Myers
2024-04-04 18:22 ` Adhemerval Zanella Netto
-- strict thread matches above, loose matches on Subject: below --
2024-03-18 11:42 [PATCH v5] " Adhemerval Zanella
2024-03-18 11:58 ` Florian Weimer
2024-03-18 12:18 ` Adhemerval Zanella Netto
2024-03-18 12:07 ` Andreas Schwab
2024-03-18 12:19 ` Adhemerval Zanella Netto
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).