mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-22 13:00:06 +00:00
generic/typesizes.h: Add support for 32-bit arches with 64-bit types
Update the default typesizes.h to match the new kernel sizes for 32-bit architectures with a 64-bit time_t and friends. This follows the sizes used for RV32 which is a y2038 safe architecture added after Linux 5.1. Reviewed-by: Vineet Gupta <vgupta@synopsys.com> Tested-by: Vineet Gupta <vgupta@synopsys.com>
This commit is contained in:
parent
05332ac38b
commit
07fe93cd98
@ -26,31 +26,44 @@
|
||||
|
||||
/* See <bits/types.h> for the meaning of these macros. This file exists so
|
||||
that <bits/types.h> need not vary across different GNU platforms. */
|
||||
#if __TIMESIZE == 64 && __WORDSIZE == 32
|
||||
/* These are the "new" y2038 types defined for architectures added after
|
||||
the 5.1 kernel. */
|
||||
# define __INO_T_TYPE __UQUAD_TYPE
|
||||
# define __OFF_T_TYPE __SQUAD_TYPE
|
||||
# define __RLIM_T_TYPE __UQUAD_TYPE
|
||||
# define __BLKCNT_T_TYPE __SQUAD_TYPE
|
||||
# define __FSBLKCNT_T_TYPE __UQUAD_TYPE
|
||||
# define __FSFILCNT_T_TYPE __UQUAD_TYPE
|
||||
# define __TIME_T_TYPE __SQUAD_TYPE
|
||||
# define __SUSECONDS_T_TYPE __SQUAD_TYPE
|
||||
#else
|
||||
# define __INO_T_TYPE __ULONGWORD_TYPE
|
||||
# define __OFF_T_TYPE __SLONGWORD_TYPE
|
||||
# define __RLIM_T_TYPE __ULONGWORD_TYPE
|
||||
# define __BLKCNT_T_TYPE __SLONGWORD_TYPE
|
||||
# define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
|
||||
# define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
|
||||
# define __TIME_T_TYPE __SLONGWORD_TYPE
|
||||
# define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
|
||||
#endif
|
||||
|
||||
#define __DEV_T_TYPE __UQUAD_TYPE
|
||||
#define __UID_T_TYPE __U32_TYPE
|
||||
#define __GID_T_TYPE __U32_TYPE
|
||||
#define __INO_T_TYPE __ULONGWORD_TYPE
|
||||
#define __INO64_T_TYPE __UQUAD_TYPE
|
||||
#define __MODE_T_TYPE __U32_TYPE
|
||||
#define __NLINK_T_TYPE __U32_TYPE
|
||||
#define __OFF_T_TYPE __SLONGWORD_TYPE
|
||||
#define __OFF64_T_TYPE __SQUAD_TYPE
|
||||
#define __PID_T_TYPE __S32_TYPE
|
||||
#define __RLIM_T_TYPE __ULONGWORD_TYPE
|
||||
#define __RLIM64_T_TYPE __UQUAD_TYPE
|
||||
#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
|
||||
#define __BLKCNT64_T_TYPE __SQUAD_TYPE
|
||||
#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
|
||||
#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
|
||||
#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
|
||||
#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
|
||||
#define __FSWORD_T_TYPE __SWORD_TYPE
|
||||
#define __ID_T_TYPE __U32_TYPE
|
||||
#define __CLOCK_T_TYPE __SLONGWORD_TYPE
|
||||
#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
|
||||
@ -63,7 +76,7 @@
|
||||
#define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE
|
||||
#define __CPU_MASK_TYPE __ULONGWORD_TYPE
|
||||
|
||||
#ifdef __LP64__
|
||||
#if defined __LP64__ || (__TIMESIZE == 64 && __WORDSIZE == 32)
|
||||
/* Tell the libc code that off_t and off64_t are actually the same type
|
||||
for all ABI purposes, even if possibly expressed as different base types
|
||||
for C type-checking purposes. */
|
||||
@ -79,7 +92,7 @@
|
||||
# define __STATFS_MATCHES_STATFS64 1
|
||||
|
||||
/* And for getitimer, setitimer and rusage */
|
||||
# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 1
|
||||
# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 (__WORDSIZE == 64)
|
||||
#else
|
||||
# define __RLIM_T_MATCHES_RLIM64_T 0
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user