diff mbox series

[v3,1/7] y2038: Define __suseconds64_t type to be used with struct __timeval64

Message ID 20200129125914.11221-1-lukma@denx.de
State New
Headers show
Series [v3,1/7] y2038: Define __suseconds64_t type to be used with struct __timeval64 | expand

Commit Message

Lukasz Majewski Jan. 29, 2020, 12:59 p.m. UTC
The __suseconds64_t type is supposed to be the 64 bit type across all
architectures.

It would be mostly used internally in the glibc - however, when passed to
Linux kernel (very unlikely), if necessary, it shall be converted to 32
bit type (i.e. __suseconds_t)

Build tests:
./src/scripts/build-many-glibcs.py glibcs

---
Changes for v3:
- Fix indentation (from spaces to tab) for
  #define __SUSECONDS64_T_TYPE   __SQUAD_TYPE

Changes for v2:
- New patch
---
 bits/typesizes.h                                 | 1 +
 posix/bits/types.h                               | 1 +
 sysdeps/mach/hurd/bits/typesizes.h               | 1 +
 sysdeps/unix/sysv/linux/alpha/bits/typesizes.h   | 1 +
 sysdeps/unix/sysv/linux/generic/bits/typesizes.h | 1 +
 sysdeps/unix/sysv/linux/s390/bits/typesizes.h    | 1 +
 sysdeps/unix/sysv/linux/sparc/bits/typesizes.h   | 1 +
 sysdeps/unix/sysv/linux/x86/bits/typesizes.h     | 1 +
 8 files changed, 8 insertions(+)

Comments

Alistair Francis Jan. 30, 2020, 5:52 p.m. UTC | #1
On Wed, Jan 29, 2020 at 4:59 AM Lukasz Majewski <lukma@denx.de> wrote:
>
> The __suseconds64_t type is supposed to be the 64 bit type across all
> architectures.
>
> It would be mostly used internally in the glibc - however, when passed to
> Linux kernel (very unlikely), if necessary, it shall be converted to 32
> bit type (i.e. __suseconds_t)
>
> Build tests:
> ./src/scripts/build-many-glibcs.py glibcs

Reviewed-by: Alistair Francis <alistair.francis@wdc.com>

Alistair

>
> ---
> Changes for v3:
> - Fix indentation (from spaces to tab) for
>   #define __SUSECONDS64_T_TYPE   __SQUAD_TYPE
>
> Changes for v2:
> - New patch
> ---
>  bits/typesizes.h                                 | 1 +
>  posix/bits/types.h                               | 1 +
>  sysdeps/mach/hurd/bits/typesizes.h               | 1 +
>  sysdeps/unix/sysv/linux/alpha/bits/typesizes.h   | 1 +
>  sysdeps/unix/sysv/linux/generic/bits/typesizes.h | 1 +
>  sysdeps/unix/sysv/linux/s390/bits/typesizes.h    | 1 +
>  sysdeps/unix/sysv/linux/sparc/bits/typesizes.h   | 1 +
>  sysdeps/unix/sysv/linux/x86/bits/typesizes.h     | 1 +
>  8 files changed, 8 insertions(+)
>
> diff --git a/bits/typesizes.h b/bits/typesizes.h
> index 014c9aab21..599408973e 100644
> --- a/bits/typesizes.h
> +++ b/bits/typesizes.h
> @@ -50,6 +50,7 @@
>  #define __TIME_T_TYPE          __SLONGWORD_TYPE
>  #define __USECONDS_T_TYPE      __U32_TYPE
>  #define __SUSECONDS_T_TYPE     __SLONGWORD_TYPE
> +#define __SUSECONDS64_T_TYPE   __SQUAD_TYPE
>  #define __DADDR_T_TYPE         __S32_TYPE
>  #define __KEY_T_TYPE           __S32_TYPE
>  #define __CLOCKID_T_TYPE       __S32_TYPE
> diff --git a/posix/bits/types.h b/posix/bits/types.h
> index adba926b45..a26cd383e4 100644
> --- a/posix/bits/types.h
> +++ b/posix/bits/types.h
> @@ -160,6 +160,7 @@ __STD_TYPE __ID_T_TYPE __id_t;              /* General type for IDs.  */
>  __STD_TYPE __TIME_T_TYPE __time_t;     /* Seconds since the Epoch.  */
>  __STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds.  */
>  __STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds.  */
> +__STD_TYPE __SUSECONDS64_T_TYPE __suseconds64_t;
>
>  __STD_TYPE __DADDR_T_TYPE __daddr_t;   /* The type of a disk address.  */
>  __STD_TYPE __KEY_T_TYPE __key_t;       /* Type of an IPC key.  */
> diff --git a/sysdeps/mach/hurd/bits/typesizes.h b/sysdeps/mach/hurd/bits/typesizes.h
> index b429379d7d..10f3ac231a 100644
> --- a/sysdeps/mach/hurd/bits/typesizes.h
> +++ b/sysdeps/mach/hurd/bits/typesizes.h
> @@ -50,6 +50,7 @@
>  #define __TIME_T_TYPE          __SLONGWORD_TYPE
>  #define __USECONDS_T_TYPE      __U32_TYPE
>  #define __SUSECONDS_T_TYPE     __SLONGWORD_TYPE
> +#define __SUSECONDS64_T_TYPE   __SQUAD_TYPE
>  #define __DADDR_T_TYPE         __S32_TYPE
>  #define __KEY_T_TYPE           __S32_TYPE
>  #define __CLOCKID_T_TYPE       __S32_TYPE
> diff --git a/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h b/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h
> index 30356ba6d6..489e5d12e2 100644
> --- a/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h
> +++ b/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h
> @@ -49,6 +49,7 @@
>  #define __TIME_T_TYPE          __SLONGWORD_TYPE
>  #define __USECONDS_T_TYPE      __U32_TYPE
>  #define __SUSECONDS_T_TYPE     __S64_TYPE
> +#define __SUSECONDS64_T_TYPE   __SQUAD_TYPE
>  #define __DADDR_T_TYPE         __S32_TYPE
>  #define __KEY_T_TYPE           __S32_TYPE
>  #define __CLOCKID_T_TYPE       __S32_TYPE
> diff --git a/sysdeps/unix/sysv/linux/generic/bits/typesizes.h b/sysdeps/unix/sysv/linux/generic/bits/typesizes.h
> index a916dea047..7c963e523e 100644
> --- a/sysdeps/unix/sysv/linux/generic/bits/typesizes.h
> +++ b/sysdeps/unix/sysv/linux/generic/bits/typesizes.h
> @@ -51,6 +51,7 @@
>  #define __TIME_T_TYPE          __SLONGWORD_TYPE
>  #define __USECONDS_T_TYPE      __U32_TYPE
>  #define __SUSECONDS_T_TYPE     __SLONGWORD_TYPE
> +#define __SUSECONDS64_T_TYPE   __SQUAD_TYPE
>  #define __DADDR_T_TYPE         __S32_TYPE
>  #define __KEY_T_TYPE           __S32_TYPE
>  #define __CLOCKID_T_TYPE       __S32_TYPE
> diff --git a/sysdeps/unix/sysv/linux/s390/bits/typesizes.h b/sysdeps/unix/sysv/linux/s390/bits/typesizes.h
> index 45f70184ea..e775e460bb 100644
> --- a/sysdeps/unix/sysv/linux/s390/bits/typesizes.h
> +++ b/sysdeps/unix/sysv/linux/s390/bits/typesizes.h
> @@ -50,6 +50,7 @@
>  #define __TIME_T_TYPE          __SLONGWORD_TYPE
>  #define __USECONDS_T_TYPE      __U32_TYPE
>  #define __SUSECONDS_T_TYPE     __SLONGWORD_TYPE
> +#define __SUSECONDS64_T_TYPE   __SQUAD_TYPE
>  #define __DADDR_T_TYPE         __S32_TYPE
>  #define __KEY_T_TYPE           __S32_TYPE
>  #define __CLOCKID_T_TYPE       __S32_TYPE
> diff --git a/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h b/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h
> index 1f3bbc8002..ac48c23e37 100644
> --- a/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h
> +++ b/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h
> @@ -50,6 +50,7 @@
>  #define __TIME_T_TYPE          __SLONGWORD_TYPE
>  #define __USECONDS_T_TYPE      __U32_TYPE
>  #define __SUSECONDS_T_TYPE     __S32_TYPE
> +#define __SUSECONDS64_T_TYPE   __SQUAD_TYPE
>  #define __DADDR_T_TYPE         __S32_TYPE
>  #define __KEY_T_TYPE           __S32_TYPE
>  #define __CLOCKID_T_TYPE       __S32_TYPE
> diff --git a/sysdeps/unix/sysv/linux/x86/bits/typesizes.h b/sysdeps/unix/sysv/linux/x86/bits/typesizes.h
> index d084145597..87c50a4f32 100644
> --- a/sysdeps/unix/sysv/linux/x86/bits/typesizes.h
> +++ b/sysdeps/unix/sysv/linux/x86/bits/typesizes.h
> @@ -64,6 +64,7 @@
>  #define __TIME_T_TYPE          __SYSCALL_SLONG_TYPE
>  #define __USECONDS_T_TYPE      __U32_TYPE
>  #define __SUSECONDS_T_TYPE     __SYSCALL_SLONG_TYPE
> +#define __SUSECONDS64_T_TYPE   __SQUAD_TYPE
>  #define __DADDR_T_TYPE         __S32_TYPE
>  #define __KEY_T_TYPE           __S32_TYPE
>  #define __CLOCKID_T_TYPE       __S32_TYPE
> --
> 2.20.1
>
Adhemerval Zanella Feb. 4, 2020, 6:34 p.m. UTC | #2
On 29/01/2020 09:59, Lukasz Majewski wrote:
> The __suseconds64_t type is supposed to be the 64 bit type across all
> architectures.
> 
> It would be mostly used internally in the glibc - however, when passed to
> Linux kernel (very unlikely), if necessary, it shall be converted to 32
> bit type (i.e. __suseconds_t)
> 
> Build tests:
> ./src/scripts/build-many-glibcs.py glibcs
> 
> ---
> Changes for v3:
> - Fix indentation (from spaces to tab) for
>   #define __SUSECONDS64_T_TYPE   __SQUAD_TYPE
> 
> Changes for v2:
> - New patch

LGTM, with a small nit below.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>

> ---
>  bits/typesizes.h                                 | 1 +
>  posix/bits/types.h                               | 1 +
>  sysdeps/mach/hurd/bits/typesizes.h               | 1 +
>  sysdeps/unix/sysv/linux/alpha/bits/typesizes.h   | 1 +
>  sysdeps/unix/sysv/linux/generic/bits/typesizes.h | 1 +
>  sysdeps/unix/sysv/linux/s390/bits/typesizes.h    | 1 +
>  sysdeps/unix/sysv/linux/sparc/bits/typesizes.h   | 1 +
>  sysdeps/unix/sysv/linux/x86/bits/typesizes.h     | 1 +
>  8 files changed, 8 insertions(+)
> 
> diff --git a/bits/typesizes.h b/bits/typesizes.h
> index 014c9aab21..599408973e 100644
> --- a/bits/typesizes.h
> +++ b/bits/typesizes.h
> @@ -50,6 +50,7 @@
>  #define __TIME_T_TYPE		__SLONGWORD_TYPE
>  #define __USECONDS_T_TYPE	__U32_TYPE
>  #define __SUSECONDS_T_TYPE	__SLONGWORD_TYPE
> +#define __SUSECONDS64_T_TYPE	__SQUAD_TYPE
>  #define __DADDR_T_TYPE		__S32_TYPE
>  #define __KEY_T_TYPE		__S32_TYPE
>  #define __CLOCKID_T_TYPE	__S32_TYPE

Ok.

> diff --git a/posix/bits/types.h b/posix/bits/types.h
> index adba926b45..a26cd383e4 100644
> --- a/posix/bits/types.h
> +++ b/posix/bits/types.h
> @@ -160,6 +160,7 @@ __STD_TYPE __ID_T_TYPE __id_t;		/* General type for IDs.  */
>  __STD_TYPE __TIME_T_TYPE __time_t;	/* Seconds since the Epoch.  */
>  __STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds.  */
>  __STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds.  */
> +__STD_TYPE __SUSECONDS64_T_TYPE __suseconds64_t;
>  
>  __STD_TYPE __DADDR_T_TYPE __daddr_t;	/* The type of a disk address.  */
>  __STD_TYPE __KEY_T_TYPE __key_t;	/* Type of an IPC key.  */

Ok.

> diff --git a/sysdeps/mach/hurd/bits/typesizes.h b/sysdeps/mach/hurd/bits/typesizes.h
> index b429379d7d..10f3ac231a 100644
> --- a/sysdeps/mach/hurd/bits/typesizes.h
> +++ b/sysdeps/mach/hurd/bits/typesizes.h
> @@ -50,6 +50,7 @@
>  #define __TIME_T_TYPE		__SLONGWORD_TYPE
>  #define __USECONDS_T_TYPE	__U32_TYPE
>  #define __SUSECONDS_T_TYPE	__SLONGWORD_TYPE
> +#define __SUSECONDS64_T_TYPE	__SQUAD_TYPE
>  #define __DADDR_T_TYPE		__S32_TYPE
>  #define __KEY_T_TYPE		__S32_TYPE
>  #define __CLOCKID_T_TYPE	__S32_TYPE

Ok.

> diff --git a/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h b/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h
> index 30356ba6d6..489e5d12e2 100644
> --- a/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h
> +++ b/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h
> @@ -49,6 +49,7 @@
>  #define __TIME_T_TYPE		__SLONGWORD_TYPE
>  #define __USECONDS_T_TYPE	__U32_TYPE
>  #define __SUSECONDS_T_TYPE	__S64_TYPE
> +#define __SUSECONDS64_T_TYPE	__SQUAD_TYPE
>  #define __DADDR_T_TYPE		__S32_TYPE
>  #define __KEY_T_TYPE		__S32_TYPE
>  #define __CLOCKID_T_TYPE	__S32_TYPE

I think it should use __S64_TYPE to follow current file convention.

> diff --git a/sysdeps/unix/sysv/linux/generic/bits/typesizes.h b/sysdeps/unix/sysv/linux/generic/bits/typesizes.h
> index a916dea047..7c963e523e 100644
> --- a/sysdeps/unix/sysv/linux/generic/bits/typesizes.h
> +++ b/sysdeps/unix/sysv/linux/generic/bits/typesizes.h
> @@ -51,6 +51,7 @@
>  #define __TIME_T_TYPE		__SLONGWORD_TYPE
>  #define __USECONDS_T_TYPE	__U32_TYPE
>  #define __SUSECONDS_T_TYPE	__SLONGWORD_TYPE
> +#define __SUSECONDS64_T_TYPE	__SQUAD_TYPE
>  #define __DADDR_T_TYPE		__S32_TYPE
>  #define __KEY_T_TYPE		__S32_TYPE
>  #define __CLOCKID_T_TYPE	__S32_TYPE

Ok.

> diff --git a/sysdeps/unix/sysv/linux/s390/bits/typesizes.h b/sysdeps/unix/sysv/linux/s390/bits/typesizes.h
> index 45f70184ea..e775e460bb 100644
> --- a/sysdeps/unix/sysv/linux/s390/bits/typesizes.h
> +++ b/sysdeps/unix/sysv/linux/s390/bits/typesizes.h
> @@ -50,6 +50,7 @@
>  #define __TIME_T_TYPE		__SLONGWORD_TYPE
>  #define __USECONDS_T_TYPE	__U32_TYPE
>  #define __SUSECONDS_T_TYPE	__SLONGWORD_TYPE
> +#define __SUSECONDS64_T_TYPE	__SQUAD_TYPE
>  #define __DADDR_T_TYPE		__S32_TYPE
>  #define __KEY_T_TYPE		__S32_TYPE
>  #define __CLOCKID_T_TYPE	__S32_TYPE

Ok.

> diff --git a/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h b/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h
> index 1f3bbc8002..ac48c23e37 100644
> --- a/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h
> +++ b/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h
> @@ -50,6 +50,7 @@
>  #define __TIME_T_TYPE		__SLONGWORD_TYPE
>  #define __USECONDS_T_TYPE	__U32_TYPE
>  #define __SUSECONDS_T_TYPE	__S32_TYPE
> +#define __SUSECONDS64_T_TYPE	__SQUAD_TYPE
>  #define __DADDR_T_TYPE		__S32_TYPE
>  #define __KEY_T_TYPE		__S32_TYPE
>  #define __CLOCKID_T_TYPE	__S32_TYPE

Ok.

> diff --git a/sysdeps/unix/sysv/linux/x86/bits/typesizes.h b/sysdeps/unix/sysv/linux/x86/bits/typesizes.h
> index d084145597..87c50a4f32 100644
> --- a/sysdeps/unix/sysv/linux/x86/bits/typesizes.h
> +++ b/sysdeps/unix/sysv/linux/x86/bits/typesizes.h
> @@ -64,6 +64,7 @@
>  #define __TIME_T_TYPE		__SYSCALL_SLONG_TYPE
>  #define __USECONDS_T_TYPE	__U32_TYPE
>  #define __SUSECONDS_T_TYPE	__SYSCALL_SLONG_TYPE
> +#define __SUSECONDS64_T_TYPE	__SQUAD_TYPE
>  #define __DADDR_T_TYPE		__S32_TYPE
>  #define __KEY_T_TYPE		__S32_TYPE
>  #define __CLOCKID_T_TYPE	__S32_TYPE
> 

Ok.
diff mbox series

Patch

diff --git a/bits/typesizes.h b/bits/typesizes.h
index 014c9aab21..599408973e 100644
--- a/bits/typesizes.h
+++ b/bits/typesizes.h
@@ -50,6 +50,7 @@ 
 #define __TIME_T_TYPE		__SLONGWORD_TYPE
 #define __USECONDS_T_TYPE	__U32_TYPE
 #define __SUSECONDS_T_TYPE	__SLONGWORD_TYPE
+#define __SUSECONDS64_T_TYPE	__SQUAD_TYPE
 #define __DADDR_T_TYPE		__S32_TYPE
 #define __KEY_T_TYPE		__S32_TYPE
 #define __CLOCKID_T_TYPE	__S32_TYPE
diff --git a/posix/bits/types.h b/posix/bits/types.h
index adba926b45..a26cd383e4 100644
--- a/posix/bits/types.h
+++ b/posix/bits/types.h
@@ -160,6 +160,7 @@  __STD_TYPE __ID_T_TYPE __id_t;		/* General type for IDs.  */
 __STD_TYPE __TIME_T_TYPE __time_t;	/* Seconds since the Epoch.  */
 __STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds.  */
 __STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds.  */
+__STD_TYPE __SUSECONDS64_T_TYPE __suseconds64_t;
 
 __STD_TYPE __DADDR_T_TYPE __daddr_t;	/* The type of a disk address.  */
 __STD_TYPE __KEY_T_TYPE __key_t;	/* Type of an IPC key.  */
diff --git a/sysdeps/mach/hurd/bits/typesizes.h b/sysdeps/mach/hurd/bits/typesizes.h
index b429379d7d..10f3ac231a 100644
--- a/sysdeps/mach/hurd/bits/typesizes.h
+++ b/sysdeps/mach/hurd/bits/typesizes.h
@@ -50,6 +50,7 @@ 
 #define __TIME_T_TYPE		__SLONGWORD_TYPE
 #define __USECONDS_T_TYPE	__U32_TYPE
 #define __SUSECONDS_T_TYPE	__SLONGWORD_TYPE
+#define __SUSECONDS64_T_TYPE	__SQUAD_TYPE
 #define __DADDR_T_TYPE		__S32_TYPE
 #define __KEY_T_TYPE		__S32_TYPE
 #define __CLOCKID_T_TYPE	__S32_TYPE
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h b/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h
index 30356ba6d6..489e5d12e2 100644
--- a/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h
+++ b/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h
@@ -49,6 +49,7 @@ 
 #define __TIME_T_TYPE		__SLONGWORD_TYPE
 #define __USECONDS_T_TYPE	__U32_TYPE
 #define __SUSECONDS_T_TYPE	__S64_TYPE
+#define __SUSECONDS64_T_TYPE	__SQUAD_TYPE
 #define __DADDR_T_TYPE		__S32_TYPE
 #define __KEY_T_TYPE		__S32_TYPE
 #define __CLOCKID_T_TYPE	__S32_TYPE
diff --git a/sysdeps/unix/sysv/linux/generic/bits/typesizes.h b/sysdeps/unix/sysv/linux/generic/bits/typesizes.h
index a916dea047..7c963e523e 100644
--- a/sysdeps/unix/sysv/linux/generic/bits/typesizes.h
+++ b/sysdeps/unix/sysv/linux/generic/bits/typesizes.h
@@ -51,6 +51,7 @@ 
 #define __TIME_T_TYPE		__SLONGWORD_TYPE
 #define __USECONDS_T_TYPE	__U32_TYPE
 #define __SUSECONDS_T_TYPE	__SLONGWORD_TYPE
+#define __SUSECONDS64_T_TYPE	__SQUAD_TYPE
 #define __DADDR_T_TYPE		__S32_TYPE
 #define __KEY_T_TYPE		__S32_TYPE
 #define __CLOCKID_T_TYPE	__S32_TYPE
diff --git a/sysdeps/unix/sysv/linux/s390/bits/typesizes.h b/sysdeps/unix/sysv/linux/s390/bits/typesizes.h
index 45f70184ea..e775e460bb 100644
--- a/sysdeps/unix/sysv/linux/s390/bits/typesizes.h
+++ b/sysdeps/unix/sysv/linux/s390/bits/typesizes.h
@@ -50,6 +50,7 @@ 
 #define __TIME_T_TYPE		__SLONGWORD_TYPE
 #define __USECONDS_T_TYPE	__U32_TYPE
 #define __SUSECONDS_T_TYPE	__SLONGWORD_TYPE
+#define __SUSECONDS64_T_TYPE	__SQUAD_TYPE
 #define __DADDR_T_TYPE		__S32_TYPE
 #define __KEY_T_TYPE		__S32_TYPE
 #define __CLOCKID_T_TYPE	__S32_TYPE
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h b/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h
index 1f3bbc8002..ac48c23e37 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h
@@ -50,6 +50,7 @@ 
 #define __TIME_T_TYPE		__SLONGWORD_TYPE
 #define __USECONDS_T_TYPE	__U32_TYPE
 #define __SUSECONDS_T_TYPE	__S32_TYPE
+#define __SUSECONDS64_T_TYPE	__SQUAD_TYPE
 #define __DADDR_T_TYPE		__S32_TYPE
 #define __KEY_T_TYPE		__S32_TYPE
 #define __CLOCKID_T_TYPE	__S32_TYPE
diff --git a/sysdeps/unix/sysv/linux/x86/bits/typesizes.h b/sysdeps/unix/sysv/linux/x86/bits/typesizes.h
index d084145597..87c50a4f32 100644
--- a/sysdeps/unix/sysv/linux/x86/bits/typesizes.h
+++ b/sysdeps/unix/sysv/linux/x86/bits/typesizes.h
@@ -64,6 +64,7 @@ 
 #define __TIME_T_TYPE		__SYSCALL_SLONG_TYPE
 #define __USECONDS_T_TYPE	__U32_TYPE
 #define __SUSECONDS_T_TYPE	__SYSCALL_SLONG_TYPE
+#define __SUSECONDS64_T_TYPE	__SQUAD_TYPE
 #define __DADDR_T_TYPE		__S32_TYPE
 #define __KEY_T_TYPE		__S32_TYPE
 #define __CLOCKID_T_TYPE	__S32_TYPE