similarity index 68%
rename from sysdeps/unix/sysv/linux/x86/bits/shm-pad.h
rename to bits/timesize.h
@@ -1,4 +1,4 @@
-/* Define where padding goes in struct shmid_ds. x86 version.
+/* Bit size of the time_t type at glibc build time, general case.
Copyright (C) 2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -16,15 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SYS_SHM_H
-# error "Never use <bits/shm-pad.h> directly; include <sys/shm.h> instead."
-#endif
+#include <bits/wordsize.h>
-#ifdef __x86_64__
-# define __SHM_PAD_AFTER_TIME 0
-#else
-# define __SHM_PAD_AFTER_TIME 1
-#endif
-#define __SHM_PAD_BEFORE_TIME 0
-#define __SHM_SEGSZ_AFTER_TIME 0
-#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ 0
+/* Size in bits of the 'time_t' type of the default ABI. */
+#define __TIMESIZE __WORDSIZE
@@ -24,7 +24,7 @@ include ../Makeconfig
headers := stdlib.h bits/stdlib.h bits/stdlib-ldbl.h bits/stdlib-float.h \
monetary.h bits/monetary-ldbl.h \
- inttypes.h stdint.h bits/wordsize.h \
+ inttypes.h stdint.h bits/wordsize.h bits/timesize.h \
errno.h sys/errno.h bits/errno.h bits/types/error_t.h \
ucontext.h sys/ucontext.h bits/indirect-return.h \
alloca.h fmtmsg.h \
@@ -20,12 +20,12 @@
# error "Never use <bits/msq-pad.h> directly; include <sys/msg.h> instead."
#endif
-#include <bits/wordsize.h>
+#include <bits/timesize.h>
/* On most architectures, padding goes after time fields for 32-bit
systems and is omitted for 64-bit systems. Some architectures pad
before time fields instead, or omit padding despite being
32-bit. */
-#define __MSQ_PAD_AFTER_TIME (__WORDSIZE == 32)
+#define __MSQ_PAD_AFTER_TIME (__TIMESIZE == 32)
#define __MSQ_PAD_BEFORE_TIME 0
@@ -20,7 +20,7 @@
# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead."
#endif
-#include <bits/wordsize.h>
+#include <bits/timesize.h>
/* On most architectures, padding goes after time fields for 32-bit
systems and is omitted for 64-bit systems. Some architectures pad
@@ -29,5 +29,5 @@
used for struct semid64_ds in <asm/sembuf.h>, as glibc does not do
layout conversions for this structure. */
-#define __SEM_PAD_AFTER_TIME (__WORDSIZE == 32)
+#define __SEM_PAD_AFTER_TIME (__TIMESIZE == 32)
#define __SEM_PAD_BEFORE_TIME 0
@@ -20,7 +20,7 @@
# error "Never use <bits/shm-pad.h> directly; include <sys/shm.h> instead."
#endif
-#include <bits/wordsize.h>
+#include <bits/timesize.h>
/* On most architectures, padding goes after time fields for 32-bit
systems and is omitted for 64-bit systems. Some architectures pad
@@ -31,7 +31,7 @@
layout used for struct shmid64_ds in <asm/shmbuf.h>, as glibc does
not do layout conversions for this structure. */
-#define __SHM_PAD_AFTER_TIME (__WORDSIZE == 32)
+#define __SHM_PAD_AFTER_TIME (__TIMESIZE == 32)
#define __SHM_PAD_BEFORE_TIME 0
#define __SHM_SEGSZ_AFTER_TIME 0
#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ 0
@@ -20,7 +20,7 @@
# error "Never use <bits/msq-pad.h> directly; include <sys/msg.h> instead."
#endif
-#include <bits/wordsize.h>
+#include <bits/timesize.h>
#define __MSQ_PAD_AFTER_TIME 0
-#define __MSQ_PAD_BEFORE_TIME (__WORDSIZE == 32)
+#define __MSQ_PAD_BEFORE_TIME (__TIMESIZE == 32)
@@ -20,7 +20,7 @@
# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead."
#endif
-#include <bits/wordsize.h>
+#include <bits/timesize.h>
#define __SEM_PAD_AFTER_TIME 0
-#define __SEM_PAD_BEFORE_TIME (__WORDSIZE == 32)
+#define __SEM_PAD_BEFORE_TIME (__TIMESIZE == 32)
@@ -20,9 +20,9 @@
# error "Never use <bits/shm-pad.h> directly; include <sys/shm.h> instead."
#endif
-#include <bits/wordsize.h>
+#include <bits/timesize.h>
#define __SHM_PAD_AFTER_TIME 0
-#define __SHM_PAD_BEFORE_TIME (__WORDSIZE == 32)
+#define __SHM_PAD_BEFORE_TIME (__TIMESIZE == 32)
#define __SHM_SEGSZ_AFTER_TIME 1
-#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ (__WORDSIZE == 32)
+#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ (__TIMESIZE == 32)
@@ -20,12 +20,12 @@
# error "Never use <bits/msq-pad.h> directly; include <sys/msg.h> instead."
#endif
-#include <bits/wordsize.h>
+#include <bits/timesize.h>
#ifdef __MIPSEL__
-# define __MSQ_PAD_AFTER_TIME (__WORDSIZE == 32)
+# define __MSQ_PAD_AFTER_TIME (__TIMESIZE == 32)
# define __MSQ_PAD_BEFORE_TIME 0
#else
# define __MSQ_PAD_AFTER_TIME 0
-# define __MSQ_PAD_BEFORE_TIME (__WORDSIZE == 32)
+# define __MSQ_PAD_BEFORE_TIME (__TIMESIZE == 32)
#endif
@@ -20,7 +20,7 @@
# error "Never use <bits/msq-pad.h> directly; include <sys/msg.h> instead."
#endif
-#include <bits/wordsize.h>
+#include <bits/timesize.h>
#define __MSQ_PAD_AFTER_TIME 0
-#define __MSQ_PAD_BEFORE_TIME (__WORDSIZE == 32)
+#define __MSQ_PAD_BEFORE_TIME (__TIMESIZE == 32)
@@ -20,7 +20,7 @@
# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead."
#endif
-#include <bits/wordsize.h>
+#include <bits/timesize.h>
#define __SEM_PAD_AFTER_TIME 0
-#define __SEM_PAD_BEFORE_TIME (__WORDSIZE == 32)
+#define __SEM_PAD_BEFORE_TIME (__TIMESIZE == 32)
@@ -20,9 +20,9 @@
# error "Never use <bits/shm-pad.h> directly; include <sys/shm.h> instead."
#endif
-#include <bits/wordsize.h>
+#include <bits/timesize.h>
#define __SHM_PAD_AFTER_TIME 0
-#define __SHM_PAD_BEFORE_TIME (__WORDSIZE == 32)
+#define __SHM_PAD_BEFORE_TIME (__TIMESIZE == 32)
#define __SHM_SEGSZ_AFTER_TIME 1
-#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ (__WORDSIZE == 32)
+#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ (__TIMESIZE == 32)
@@ -20,7 +20,7 @@
# error "Never use <bits/msq-pad.h> directly; include <sys/msg.h> instead."
#endif
-#include <bits/wordsize.h>
+#include <bits/timesize.h>
#define __MSQ_PAD_AFTER_TIME 0
-#define __MSQ_PAD_BEFORE_TIME (__WORDSIZE == 32)
+#define __MSQ_PAD_BEFORE_TIME (__TIMESIZE == 32)
@@ -20,7 +20,7 @@
# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead."
#endif
-#include <bits/wordsize.h>
+#include <bits/timesize.h>
#define __SEM_PAD_AFTER_TIME 0
-#define __SEM_PAD_BEFORE_TIME (__WORDSIZE == 32)
+#define __SEM_PAD_BEFORE_TIME (__TIMESIZE == 32)
@@ -20,9 +20,9 @@
# error "Never use <bits/shm-pad.h> directly; include <sys/shm.h> instead."
#endif
-#include <bits/wordsize.h>
+#include <bits/timesize.h>
#define __SHM_PAD_AFTER_TIME 0
-#define __SHM_PAD_BEFORE_TIME (__WORDSIZE == 32)
+#define __SHM_PAD_BEFORE_TIME (__TIMESIZE == 32)
#define __SHM_SEGSZ_AFTER_TIME 1
#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ 0
similarity index 74%
rename from sysdeps/unix/sysv/linux/x86/bits/msq-pad.h
rename to sysdeps/unix/sysv/linux/x86/bits/timesize.h
@@ -1,4 +1,4 @@
-/* Define where padding goes in struct msqid_ds. x86 version.
+/* Bit size of the time_t type at glibc build time, x86-64 and x32 case.
Copyright (C) 2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -16,13 +16,10 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SYS_MSG_H
-# error "Never use <bits/msq-pad.h> directly; include <sys/msg.h> instead."
-#endif
-
-#ifdef __x86_64__
-# define __MSQ_PAD_AFTER_TIME 0
+#if defined __x86_64__ && defined __ILP32__
+/* For x32, time is 64-bit even though word size is 32-bit. */
+# define __TIMESIZE 64
#else
-# define __MSQ_PAD_AFTER_TIME 1
+/* For others, time size is word size. */
+# define __TIMESIZE __WORDSIZE
#endif
-#define __MSQ_PAD_BEFORE_TIME 0