From patchwork Wed Jun 26 17:49:51 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Zack Weinberg X-Patchwork-Id: 33424 Received: (qmail 8254 invoked by alias); 26 Jun 2019 17:50:05 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 8187 invoked by uid 89); 26 Jun 2019 17:50:05 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-16.0 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.1 spammy=presently, Factory, serial, nonstandard X-HELO: l2mail1.panix.com From: Zack Weinberg To: libc-alpha@sourceware.org Cc: joseph@codesourcery.com, carlos@redhat.com Subject: [PATCH 06/25] Clean up bits/types.h. Date: Wed, 26 Jun 2019 13:49:51 -0400 Message-Id: <20190626174954.8009-7-zackw@panix.com> In-Reply-To: <20190626174954.8009-1-zackw@panix.com> References: <20190626174954.8009-1-zackw@panix.com> MIME-Version: 1.0 This makes four linked changes to bits/types.h. First, we use __(u)?int(16|32|64)_t to define __[SU](16|32|64)_TYPE. In addition to reducing the amount of ifdeffage, this means __STD_TYPE is no longer necessary, since gcc -std=c89 will complain about ‘typedef long long foo_t’ but not ‘typedef __int64_t foo_t’, even if the underlying type of __int64_t is long long. Second, we eliminate __UQUAD_TYPE and __SQUAD_TYPE from the set of macros bits/typesizes.h should use to define __FOO_T_TYPE macros, since they are always the same as __U64_TYPE and __S64_TYPE respectively. Third, we remove __u_char, __u_short, __u_int, __u_long, __u_quad_t, and __quad_t, we add __uintptr_t, and we define __intmax_t and __uintmax_t as __int64_t and __uint64_t. Fourth, we reorganize the list of typedefs into groups by the standard (if any) that defines them, and sort them alphabetically within each group. * posix/bits/types.h: Move #error for __WORDSIZE neither 32 nor 64 to first group of conditionals on __WORDSIZE, and make it more explicit. Update commentary. Define all __foo_t types with regular ‘typedef’. Reorganize all __foo_t types into the same groups that sys/types.h uses. (__u_char, __u_short, __u_int, __u_long, __quad_t, __u_quad_t) (__UQUAD_TYPE, __SQUAD_TYPE, __STD_TYPE): Don’t define. (__S16_TYPE): Define unconditionally as __int16_t. (__U16_TYPE): Define unconditionally as __uint16_t. (__S32_TYPE): Define unconditionally as __int32_t. (__U32_TYPE): Define unconditionally as __uint32_t. (__S64_TYPE): Define unconditionally as __int64_t. (__U64_TYPE): Define unconditionally as __uint64_t. (__intmax_t): Define unconditionally as __int64_t. (__uintmax_t): Define unconditionally as __uint64_t. (__uintptr_t): New typedef. * bits/time64.h * bits/typesizes.h * sysdeps/mach/hurd/bits/typesizes.h * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h * sysdeps/unix/sysv/linux/generic/bits/typesizes.h * sysdeps/unix/sysv/linux/mips/bits/typesizes.h * sysdeps/unix/sysv/linux/s390/bits/typesizes.h * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h * sysdeps/unix/sysv/linux/x86/bits/typesizes.h: Replace all uses of __UQUAD_TYPE with __U64_TYPE, and all uses of __SQUAD_TYPE with __S64_TYPE. * posix/sys/types.h, rpc/sys/types.h (u_char): Define as unsigned char. (u_short): Define as unsigned short. (u_int): Define as unsigned int. (u_long): Define as unsigned long. (quad_t): Define as __int64_t. (u_quad_t): Define as __uint64_t. * stdlib/stdint.h (intptr_t): Define as __intptr_t. (uintptr_t): Define as __uintptr_t. * scripts/check-obsolete-constructs.py: Update allowed definitions for the obsolete types. No longer allow __STD_TYPE as an alias for typedef. --- bits/time64.h | 2 +- bits/typesizes.h | 14 +- posix/bits/types.h | 194 +++++++----------- posix/sys/types.h | 12 +- scripts/check-obsolete-constructs.py | 71 +++---- stdlib/stdint.h | 13 +- sunrpc/rpc/types.h | 12 +- sysdeps/mach/hurd/bits/typesizes.h | 14 +- .../unix/sysv/linux/generic/bits/typesizes.h | 14 +- sysdeps/unix/sysv/linux/mips/bits/typesizes.h | 16 +- sysdeps/unix/sysv/linux/s390/bits/typesizes.h | 14 +- .../unix/sysv/linux/sparc/bits/typesizes.h | 14 +- sysdeps/unix/sysv/linux/x86/bits/typesizes.h | 20 +- 13 files changed, 177 insertions(+), 233 deletions(-) diff --git a/bits/time64.h b/bits/time64.h index c0f8a24d8a..de38d3da03 100644 --- a/bits/time64.h +++ b/bits/time64.h @@ -30,7 +30,7 @@ # define __TIME64_T_TYPE __TIME_T_TYPE #else /* Define a 64-bit time type alongsize the 32-bit one. */ -# define __TIME64_T_TYPE __SQUAD_TYPE +# define __TIME64_T_TYPE __S64_TYPE #endif #endif /* bits/time64.h */ diff --git a/bits/typesizes.h b/bits/typesizes.h index a7291465ca..bd21cf31cd 100644 --- a/bits/typesizes.h +++ b/bits/typesizes.h @@ -26,24 +26,24 @@ /* See for the meaning of these macros. This file exists so that need not vary across different GNU platforms. */ -#define __DEV_T_TYPE __UQUAD_TYPE +#define __DEV_T_TYPE __U64_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 __INO64_T_TYPE __U64_TYPE #define __MODE_T_TYPE __U32_TYPE #define __NLINK_T_TYPE __UWORD_TYPE #define __OFF_T_TYPE __SLONGWORD_TYPE -#define __OFF64_T_TYPE __SQUAD_TYPE +#define __OFF64_T_TYPE __S64_TYPE #define __PID_T_TYPE __S32_TYPE #define __RLIM_T_TYPE __ULONGWORD_TYPE -#define __RLIM64_T_TYPE __UQUAD_TYPE +#define __RLIM64_T_TYPE __U64_TYPE #define __BLKCNT_T_TYPE __SLONGWORD_TYPE -#define __BLKCNT64_T_TYPE __SQUAD_TYPE +#define __BLKCNT64_T_TYPE __S64_TYPE #define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE -#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE +#define __FSBLKCNT64_T_TYPE __U64_TYPE #define __FSFILCNT_T_TYPE __ULONGWORD_TYPE -#define __FSFILCNT64_T_TYPE __UQUAD_TYPE +#define __FSFILCNT64_T_TYPE __U64_TYPE #define __FSWORD_T_TYPE __SWORD_TYPE #define __ID_T_TYPE __U32_TYPE #define __CLOCK_T_TYPE __SLONGWORD_TYPE diff --git a/posix/bits/types.h b/posix/bits/types.h index 1f079505a7..4a6043cdc8 100644 --- a/posix/bits/types.h +++ b/posix/bits/types.h @@ -27,12 +27,6 @@ #include #include -/* Convenience types. */ -typedef unsigned char __u_char; -typedef unsigned short int __u_short; -typedef unsigned int __u_int; -typedef unsigned long int __u_long; - /* Fixed-size types, underlying types depend on word size and compiler. */ typedef signed char __int8_t; typedef unsigned char __uint8_t; @@ -43,9 +37,11 @@ typedef unsigned int __uint32_t; #if __WORDSIZE == 64 typedef signed long int __int64_t; typedef unsigned long int __uint64_t; -#else +#elif __WORDSIZE == 32 __extension__ typedef signed long long int __int64_t; __extension__ typedef unsigned long long int __uint64_t; +#else +# error "Unsupported value for __WORDSIZE" #endif /* Smallest types with at least a given width. */ @@ -58,24 +54,9 @@ typedef __uint32_t __uint_least32_t; typedef __int64_t __int_least64_t; typedef __uint64_t __uint_least64_t; -/* quad_t is also 64 bits. */ -#if __WORDSIZE == 64 -typedef long int __quad_t; -typedef unsigned long int __u_quad_t; -#else -__extension__ typedef long long int __quad_t; -__extension__ typedef unsigned long long int __u_quad_t; -#endif - /* Largest integral types. */ -#if __WORDSIZE == 64 -typedef long int __intmax_t; -typedef unsigned long int __uintmax_t; -#else -__extension__ typedef long long int __intmax_t; -__extension__ typedef unsigned long long int __uintmax_t; -#endif - +typedef __int64_t __intmax_t; +typedef __uint64_t __uintmax_t; /* The machine-dependent file defines __*_T_TYPE macros for each of the OS types we define below. The definitions @@ -87,136 +68,107 @@ __extension__ typedef unsigned long long int __uintmax_t; 32 -- "natural" 32-bit type (always int) 64 -- "natural" 64-bit type (long or long long) LONG32 -- 32-bit type, traditionally long - QUAD -- 64-bit type, traditionally long long WORD -- natural type of __WORDSIZE bits (int or long) LONGWORD -- type of __WORDSIZE bits, traditionally long - We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the - conventional uses of `long' or `long long' type modifiers match the - types we define, even when a less-adorned type would be the same size. - This matters for (somewhat) portably writing printf/scanf formats for - these types, where using the appropriate l or ll format modifiers can - make the typedefs and the formats match up across all GNU platforms. If - we used `long' when it's 64 bits where `long long' is expected, then the - compiler would warn about the formats not matching the argument types, - and the programmer changing them to shut up the compiler would break the - program's portability. + We distinguish WORD/LONGWORD and 64/QUAD so that the conventional + uses of `long' or `long long' type modifiers match the types we + define, even when a less-adorned type would be the same size. + This matters for (somewhat) portably writing printf/scanf formats + for these types, where using the appropriate l or ll format + modifiers can make the typedefs and the formats match up across all + GNU platforms. If we used `long' when it's 64 bits where `long + long' is expected, then the compiler would warn about the formats + not matching the argument types, and the programmer changing them + to shut up the compiler would break the program's portability. Here we assume what is presently the case in all the GCC configurations we support: long long is always 64 bits, long is always word/address size, and int is always 32 bits. */ -#define __S16_TYPE short int -#define __U16_TYPE unsigned short int -#define __S32_TYPE int -#define __U32_TYPE unsigned int +#define __S16_TYPE __int16_t +#define __U16_TYPE __uint16_t +#define __S32_TYPE __int32_t +#define __U32_TYPE __uint32_t +#define __S64_TYPE __int64_t +#define __U64_TYPE __uint64_t + #define __SLONGWORD_TYPE long int #define __ULONGWORD_TYPE unsigned long int #if __WORDSIZE == 32 -# define __SQUAD_TYPE __int64_t -# define __UQUAD_TYPE __uint64_t # define __SWORD_TYPE int # define __UWORD_TYPE unsigned int # define __SLONG32_TYPE long int # define __ULONG32_TYPE unsigned long int -# define __S64_TYPE __int64_t -# define __U64_TYPE __uint64_t -/* We want __extension__ before typedef's that use nonstandard base types - such as `long long' in C89 mode. */ -# define __STD_TYPE __extension__ typedef -#elif __WORDSIZE == 64 -# define __SQUAD_TYPE long int -# define __UQUAD_TYPE unsigned long int +#else /* __WORDSIZE == 64 */ # define __SWORD_TYPE long int # define __UWORD_TYPE unsigned long int # define __SLONG32_TYPE int # define __ULONG32_TYPE unsigned int -# define __S64_TYPE long int -# define __U64_TYPE unsigned long int -/* No need to mark the typedef with __extension__. */ -# define __STD_TYPE typedef -#else -# error #endif #include /* Defines __*_T_TYPE macros. */ #include /* Defines __TIME*_T_TYPE macros. */ +/* Types from core POSIX: */ +typedef __BLKCNT_T_TYPE __blkcnt_t; /* Disk block counts. */ +typedef __CLOCKID_T_TYPE __clockid_t; /* Clock IDs. */ +typedef __DEV_T_TYPE __dev_t; /* Device numbers. */ +typedef __FSBLKCNT_T_TYPE __fsblkcnt_t; /* File system block counts. */ +typedef __FSFILCNT_T_TYPE __fsfilcnt_t; /* File system inode counts. */ +typedef __GID_T_TYPE __gid_t; /* Group IDs. */ +typedef __INO_T_TYPE __ino_t; /* File serial numbers. */ +typedef __MODE_T_TYPE __mode_t; /* File attribute bitmasks. */ +typedef __NLINK_T_TYPE __nlink_t; /* File link counts. */ +typedef __OFF_T_TYPE __off_t; /* File sizes and offsets. */ +typedef __PID_T_TYPE __pid_t; /* Process IDs. */ +typedef __RLIM_T_TYPE __rlim_t; /* Resource measurements. */ +typedef __SSIZE_T_TYPE __ssize_t; /* Byte count, or error. */ +typedef __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */ +typedef __TIMER_T_TYPE __timer_t; /* Timer IDs. */ +typedef __UID_T_TYPE __uid_t; /* Type of user identifications. */ -__STD_TYPE __DEV_T_TYPE __dev_t; /* Type of device numbers. */ -__STD_TYPE __UID_T_TYPE __uid_t; /* Type of user identifications. */ -__STD_TYPE __GID_T_TYPE __gid_t; /* Type of group identifications. */ -__STD_TYPE __INO_T_TYPE __ino_t; /* Type of file serial numbers. */ -__STD_TYPE __INO64_T_TYPE __ino64_t; /* Type of file serial numbers (LFS).*/ -__STD_TYPE __MODE_T_TYPE __mode_t; /* Type of file attribute bitmasks. */ -__STD_TYPE __NLINK_T_TYPE __nlink_t; /* Type of file link counts. */ -__STD_TYPE __OFF_T_TYPE __off_t; /* Type of file sizes and offsets. */ -__STD_TYPE __OFF64_T_TYPE __off64_t; /* Type of file sizes and offsets (LFS). */ -__STD_TYPE __PID_T_TYPE __pid_t; /* Type of process identifications. */ -__STD_TYPE __FSID_T_TYPE __fsid_t; /* Type of file system IDs. */ -__STD_TYPE __CLOCK_T_TYPE __clock_t; /* Type of CPU usage counts. */ -__STD_TYPE __RLIM_T_TYPE __rlim_t; /* Type for resource measurement. */ -__STD_TYPE __RLIM64_T_TYPE __rlim64_t; /* Type for resource measurement (LFS). */ -__STD_TYPE __ID_T_TYPE __id_t; /* General type for IDs. */ -__STD_TYPE __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */ -__STD_TYPE __TIME64_T_TYPE __time64_t; /* Seconds since the Epoch (Y2038). */ -__STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds. */ -__STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds. */ +/* Types added by LFS: */ +typedef __BLKCNT64_T_TYPE __blkcnt64_t; +typedef __FSBLKCNT64_T_TYPE __fsblkcnt64_t; +typedef __FSFILCNT64_T_TYPE __fsfilcnt64_t; +typedef __INO64_T_TYPE __ino64_t; +typedef __OFF64_T_TYPE __off64_t; +typedef __RLIM64_T_TYPE __rlim64_t; -__STD_TYPE __KEY_T_TYPE __key_t; /* Type of an IPC key. */ +/* Types added by Y2038: */ +typedef __TIME64_T_TYPE __time64_t; -/* Clock ID used in clock and timer functions. */ -__STD_TYPE __CLOCKID_T_TYPE __clockid_t; +/* Types added by XSI: */ +typedef __BLKSIZE_T_TYPE __blksize_t; /* Size of a disk block. */ +typedef __CLOCK_T_TYPE __clock_t; /* CPU usage counts. */ +typedef __ID_T_TYPE __id_t; /* General IDs. */ +typedef __KEY_T_TYPE __key_t; /* "SysV" IPC keys. */ +typedef __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds. */ +typedef __USECONDS_T_TYPE __useconds_t; /* Count of microseconds. */ -/* Timer ID returned by `timer_create'. */ -__STD_TYPE __TIMER_T_TYPE __timer_t; +/* Types added by BSD: */ +typedef __FSID_T_TYPE __fsid_t; /* File system IDs. */ +typedef __REGISTER_T_TYPE __register_t; /* Integer register. */ -/* Type to represent block size. */ -__STD_TYPE __BLKSIZE_T_TYPE __blksize_t; - -/* Types from the Large File Support interface. */ - -/* Type to count number of disk blocks. */ -__STD_TYPE __BLKCNT_T_TYPE __blkcnt_t; -__STD_TYPE __BLKCNT64_T_TYPE __blkcnt64_t; - -/* Type to count file system blocks. */ -__STD_TYPE __FSBLKCNT_T_TYPE __fsblkcnt_t; -__STD_TYPE __FSBLKCNT64_T_TYPE __fsblkcnt64_t; - -/* Type to count file system nodes. */ -__STD_TYPE __FSFILCNT_T_TYPE __fsfilcnt_t; -__STD_TYPE __FSFILCNT64_T_TYPE __fsfilcnt64_t; - -/* Type of miscellaneous file system fields. */ -__STD_TYPE __FSWORD_T_TYPE __fsword_t; - -__STD_TYPE __SSIZE_T_TYPE __ssize_t; /* Type of a byte count, or error. */ - -/* Signed long type used in system calls. */ -__STD_TYPE __SYSCALL_SLONG_TYPE __syscall_slong_t; -/* Unsigned long type used in system calls. */ -__STD_TYPE __SYSCALL_ULONG_TYPE __syscall_ulong_t; +/* Types added by Linux: */ +typedef __FSWORD_T_TYPE __fsword_t; /* Miscellaneous file system fields. */ +typedef __SYSCALL_SLONG_TYPE __syscall_slong_t; +typedef __SYSCALL_ULONG_TYPE __syscall_ulong_t; /* These few don't really vary by system, they always correspond to one of the other defined types. */ -typedef __off64_t __loff_t; /* Type of file sizes and offsets (LFS). */ -typedef char *__caddr_t; /* Type of a memory address (BSD). */ -__STD_TYPE __S32_TYPE __daddr_t; /* Type of a disk address (BSD). */ -/* Duplicates info from stdint.h but this is used in unistd.h. */ -__STD_TYPE __SWORD_TYPE __intptr_t; +/* ISO C: */ +typedef __SWORD_TYPE __intptr_t; /* Signed type that can hold void*. */ +typedef __UWORD_TYPE __uintptr_t; /* Unsigned type that can hold void*. */ +typedef int __sig_atomic_t; /* Atomic access relative to signals. */ -/* Duplicate info from sys/socket.h. */ -__STD_TYPE __U32_TYPE __socklen_t; +/* POSIX: */ +typedef __U32_TYPE __socklen_t; /* Size of a socket address. */ -/* C99: An integer type that can be accessed as an atomic entity, - even in the presence of asynchronous interrupts. - It is not currently necessary for this to be machine-specific. */ -typedef int __sig_atomic_t; - -/* BSD: Size of a general-purpose integer register. */ -__STD_TYPE __REGISTER_T_TYPE __register_t; - -#undef __STD_TYPE +/* BSD: */ +typedef char *__caddr_t; /* Memory address. */ +typedef __S32_TYPE __daddr_t; /* Disk address. */ +typedef __off64_t __loff_t; /* File sizes and offsets. */ #endif /* bits/types.h */ diff --git a/posix/sys/types.h b/posix/sys/types.h index 7327904346..2d8cfd19d2 100644 --- a/posix/sys/types.h +++ b/posix/sys/types.h @@ -30,12 +30,12 @@ __BEGIN_DECLS #ifdef __USE_MISC # ifndef __u_char_defined -typedef __u_char u_char; -typedef __u_short u_short; -typedef __u_int u_int; -typedef __u_long u_long; -typedef __quad_t quad_t; -typedef __u_quad_t u_quad_t; +typedef unsigned char u_char; +typedef unsigned short int u_short; +typedef unsigned int u_int; +typedef unsigned long int u_long; +typedef __int64_t quad_t; +typedef __uint64_t u_quad_t; typedef __fsid_t fsid_t; # define __u_char_defined # endif diff --git a/scripts/check-obsolete-constructs.py b/scripts/check-obsolete-constructs.py index 701ad5af90..518de7523e 100755 --- a/scripts/check-obsolete-constructs.py +++ b/scripts/check-obsolete-constructs.py @@ -280,9 +280,8 @@ class ObsoletePrivateDefinitionsAllowed(ConstructChecker): self.prev_token = None def examine(self, tok): - # bits/types.h hides 'typedef' in a macro sometimes. if (tok.kind == "IDENT" - and tok.text in ("typedef", "__STD_TYPE") + and tok.text == "typedef" and tok.context is None): self.in_typedef = True elif tok.kind == "PUNCTUATOR" and tok.text == ";" and self.in_typedef: @@ -312,9 +311,12 @@ class ObsoletePublicDefinitionsAllowed(ConstructChecker): typedef __obsolete obsolete; // identifiers must agree typedef __uintN_t u_intN_t; // N must agree - typedef unsigned long int ulong; - typedef unsigned short int ushort; - typedef unsigned int uint; + typedef unsigned long int u_?long; + typedef unsigned short int u_?short; + typedef unsigned int u_?int; + typedef unsigned char u_char; + typedef __int64_t quad_t; + typedef __uint64_t u_quad_t; """ def __init__(self, reporter): super().__init__(reporter) @@ -357,41 +359,40 @@ class ObsoletePublicDefinitionsAllowed(ConstructChecker): self._reset() def _permissible_public_definition(self, m): - if m.group(1) == "__": return False - name = m.group(2) - toks = self.typedef_tokens - ntok = len(toks) - if ntok == 3 and toks[1].kind == "IDENT": - defn = toks[1].text - n = OBSOLETE_TYPE_RE_.match(defn) - if n and n.group(1) == "__" and n.group(2) == name: - return True - - if (name[:5] == "u_int" and name[-2:] == "_t" - and defn[:6] == "__uint" and defn[-2:] == "_t" - and name[5:-2] == defn[6:-2]): - return True - + if m.group(1) == "__": return False + name = m.group(2) - if (name == "ulong" and ntok == 5 - and toks[1].kind == "IDENT" and toks[1].text == "unsigned" - and toks[2].kind == "IDENT" and toks[2].text == "long" - and toks[3].kind == "IDENT" and toks[3].text == "int"): - return True + toks = self.typedef_tokens + if len(toks) > 5: + return False + if any(tk.kind != "IDENT" for tk in toks): + return False + defn = " ".join(tk.text for tk in toks[1:-1]) - if (name == "ushort" and ntok == 5 - and toks[1].kind == "IDENT" and toks[1].text == "unsigned" - and toks[2].kind == "IDENT" and toks[2].text == "short" - and toks[3].kind == "IDENT" and toks[3].text == "int"): - return True + if name == "u_char": + return defn == "unsigned char" - if (name == "uint" and ntok == 4 - and toks[1].kind == "IDENT" and toks[1].text == "unsigned" - and toks[2].kind == "IDENT" and toks[2].text == "int"): - return True + if name in ("ushort", "u_short"): + return defn == "unsigned short int" + + if name in ("uint", "u_int"): + return defn == "unsigned int" + + if name in ("ulong", "u_long"): + return defn == "unsigned long int" + + if name == "quad_t": + return defn == "__int64_t" + + if name == "u_quad_t": + return defn == "__uint64_t" + + if name[:5] == "u_int" and name[-2:] == "_t": + return defn == "__uint" + name[5:-2] + "_t" + + return defn == "__" + name - return False def ObsoleteTypedefChecker(reporter, fname): """Factory: produce an instance of the appropriate diff --git a/stdlib/stdint.h b/stdlib/stdint.h index 1ad538fc48..8645d91cfc 100644 --- a/stdlib/stdint.h +++ b/stdlib/stdint.h @@ -82,20 +82,11 @@ typedef unsigned long long int uint_fast64_t; /* Types for `void *' pointers. */ -#if __WORDSIZE == 64 # ifndef __intptr_t_defined -typedef long int intptr_t; +typedef __intptr_t intptr_t; # define __intptr_t_defined # endif -typedef unsigned long int uintptr_t; -#else -# ifndef __intptr_t_defined -typedef int intptr_t; -# define __intptr_t_defined -# endif -typedef unsigned int uintptr_t; -#endif - +typedef __uintptr_t uintptr_t; /* Largest integral types. */ typedef __intmax_t intmax_t; diff --git a/sunrpc/rpc/types.h b/sunrpc/rpc/types.h index beded52555..99e5f4f151 100644 --- a/sunrpc/rpc/types.h +++ b/sunrpc/rpc/types.h @@ -75,12 +75,12 @@ typedef unsigned long rpcport_t; #endif #ifndef __u_char_defined -typedef __u_char u_char; -typedef __u_short u_short; -typedef __u_int u_int; -typedef __u_long u_long; -typedef __quad_t quad_t; -typedef __u_quad_t u_quad_t; +typedef unsigned char u_char; +typedef unsigned short int u_short; +typedef unsigned int u_int; +typedef unsigned long int u_long; +typedef __int64_t quad_t; +typedef __uint64_t u_quad_t; typedef __fsid_t fsid_t; # define __u_char_defined #endif diff --git a/sysdeps/mach/hurd/bits/typesizes.h b/sysdeps/mach/hurd/bits/typesizes.h index 23ee7af95c..eaeaab1e32 100644 --- a/sysdeps/mach/hurd/bits/typesizes.h +++ b/sysdeps/mach/hurd/bits/typesizes.h @@ -30,20 +30,20 @@ #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 __INO64_T_TYPE __U64_TYPE #define __MODE_T_TYPE __U32_TYPE #define __NLINK_T_TYPE __UWORD_TYPE #define __OFF_T_TYPE __SLONGWORD_TYPE -#define __OFF64_T_TYPE __SQUAD_TYPE +#define __OFF64_T_TYPE __S64_TYPE #define __PID_T_TYPE __S32_TYPE #define __RLIM_T_TYPE __ULONGWORD_TYPE -#define __RLIM64_T_TYPE __UQUAD_TYPE +#define __RLIM64_T_TYPE __U64_TYPE #define __BLKCNT_T_TYPE __SLONGWORD_TYPE -#define __BLKCNT64_T_TYPE __SQUAD_TYPE +#define __BLKCNT64_T_TYPE __S64_TYPE #define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE -#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE +#define __FSBLKCNT64_T_TYPE __U64_TYPE #define __FSFILCNT_T_TYPE __ULONGWORD_TYPE -#define __FSFILCNT64_T_TYPE __UQUAD_TYPE +#define __FSFILCNT64_T_TYPE __U64_TYPE #define __FSWORD_T_TYPE __SWORD_TYPE #define __ID_T_TYPE __U32_TYPE #define __CLOCK_T_TYPE __SLONGWORD_TYPE @@ -54,7 +54,7 @@ #define __CLOCKID_T_TYPE __S32_TYPE #define __TIMER_T_TYPE __S32_TYPE #define __BLKSIZE_T_TYPE __SLONGWORD_TYPE -#define __FSID_T_TYPE __UQUAD_TYPE +#define __FSID_T_TYPE __U64_TYPE #define __SSIZE_T_TYPE __SWORD_TYPE #define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE #define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE diff --git a/sysdeps/unix/sysv/linux/generic/bits/typesizes.h b/sysdeps/unix/sysv/linux/generic/bits/typesizes.h index 26dabcfb39..fb4a5605f2 100644 --- a/sysdeps/unix/sysv/linux/generic/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/generic/bits/typesizes.h @@ -27,24 +27,24 @@ /* See for the meaning of these macros. This file exists so that need not vary across different GNU platforms. */ -#define __DEV_T_TYPE __UQUAD_TYPE +#define __DEV_T_TYPE __U64_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 __INO64_T_TYPE __U64_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 __OFF64_T_TYPE __S64_TYPE #define __PID_T_TYPE __S32_TYPE #define __RLIM_T_TYPE __ULONGWORD_TYPE -#define __RLIM64_T_TYPE __UQUAD_TYPE +#define __RLIM64_T_TYPE __U64_TYPE #define __BLKCNT_T_TYPE __SLONGWORD_TYPE -#define __BLKCNT64_T_TYPE __SQUAD_TYPE +#define __BLKCNT64_T_TYPE __S64_TYPE #define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE -#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE +#define __FSBLKCNT64_T_TYPE __U64_TYPE #define __FSFILCNT_T_TYPE __ULONGWORD_TYPE -#define __FSFILCNT64_T_TYPE __UQUAD_TYPE +#define __FSFILCNT64_T_TYPE __U64_TYPE #define __FSWORD_T_TYPE __SWORD_TYPE #define __ID_T_TYPE __U32_TYPE #define __CLOCK_T_TYPE __SLONGWORD_TYPE diff --git a/sysdeps/unix/sysv/linux/mips/bits/typesizes.h b/sysdeps/unix/sysv/linux/mips/bits/typesizes.h index 7c1bedd9af..e73bba4ee7 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/mips/bits/typesizes.h @@ -26,24 +26,24 @@ /* See for the meaning of these macros. This file exists so that need not vary across different GNU platforms. */ -#define __DEV_T_TYPE __UQUAD_TYPE +#define __DEV_T_TYPE __U64_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 __INO64_T_TYPE __U64_TYPE #define __MODE_T_TYPE __U32_TYPE #define __NLINK_T_TYPE __UWORD_TYPE #define __OFF_T_TYPE __SLONGWORD_TYPE -#define __OFF64_T_TYPE __SQUAD_TYPE +#define __OFF64_T_TYPE __S64_TYPE #define __PID_T_TYPE __S32_TYPE #define __RLIM_T_TYPE __ULONGWORD_TYPE -#define __RLIM64_T_TYPE __UQUAD_TYPE +#define __RLIM64_T_TYPE __U64_TYPE #define __BLKCNT_T_TYPE __SLONGWORD_TYPE -#define __BLKCNT64_T_TYPE __SQUAD_TYPE +#define __BLKCNT64_T_TYPE __S64_TYPE #define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE -#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE +#define __FSBLKCNT64_T_TYPE __U64_TYPE #define __FSFILCNT_T_TYPE __ULONGWORD_TYPE -#define __FSFILCNT64_T_TYPE __UQUAD_TYPE +#define __FSFILCNT64_T_TYPE __U64_TYPE #define __FSWORD_T_TYPE __SWORD_TYPE #define __ID_T_TYPE __U32_TYPE #define __CLOCK_T_TYPE __SLONGWORD_TYPE @@ -61,7 +61,7 @@ #define __CPU_MASK_TYPE __ULONGWORD_TYPE #if defined _ABIN32 && _MIPS_SIM == _ABIN32 -#define __REGISTER_T_TYPE __SQUAD_TYPE +#define __REGISTER_T_TYPE __S64_TYPE #else #define __REGISTER_T_TYPE __SWORD_TYPE #endif diff --git a/sysdeps/unix/sysv/linux/s390/bits/typesizes.h b/sysdeps/unix/sysv/linux/s390/bits/typesizes.h index 712264a84f..741dfaed77 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/s390/bits/typesizes.h @@ -26,24 +26,24 @@ /* See for the meaning of these macros. This file exists so that need not vary across different GNU platforms. */ -#define __DEV_T_TYPE __UQUAD_TYPE +#define __DEV_T_TYPE __U64_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 __INO64_T_TYPE __U64_TYPE #define __MODE_T_TYPE __U32_TYPE #define __NLINK_T_TYPE __UWORD_TYPE #define __OFF_T_TYPE __SLONGWORD_TYPE -#define __OFF64_T_TYPE __SQUAD_TYPE +#define __OFF64_T_TYPE __S64_TYPE #define __PID_T_TYPE __S32_TYPE #define __RLIM_T_TYPE __ULONGWORD_TYPE -#define __RLIM64_T_TYPE __UQUAD_TYPE +#define __RLIM64_T_TYPE __U64_TYPE #define __BLKCNT_T_TYPE __SLONGWORD_TYPE -#define __BLKCNT64_T_TYPE __SQUAD_TYPE +#define __BLKCNT64_T_TYPE __S64_TYPE #define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE -#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE +#define __FSBLKCNT64_T_TYPE __U64_TYPE #define __FSFILCNT_T_TYPE __ULONGWORD_TYPE -#define __FSFILCNT64_T_TYPE __UQUAD_TYPE +#define __FSFILCNT64_T_TYPE __U64_TYPE #define __FSWORD_T_TYPE __SWORD_TYPE #define __ID_T_TYPE __U32_TYPE #define __CLOCK_T_TYPE __SLONGWORD_TYPE diff --git a/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h b/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h index b2d39294e9..c084ebd6b6 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h @@ -26,24 +26,24 @@ /* See for the meaning of these macros. This file exists so that need not vary across different GNU platforms. */ -#define __DEV_T_TYPE __UQUAD_TYPE +#define __DEV_T_TYPE __U64_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 __INO64_T_TYPE __U64_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 __OFF64_T_TYPE __S64_TYPE #define __PID_T_TYPE __S32_TYPE #define __RLIM_T_TYPE __ULONGWORD_TYPE -#define __RLIM64_T_TYPE __UQUAD_TYPE +#define __RLIM64_T_TYPE __U64_TYPE #define __BLKCNT_T_TYPE __SLONGWORD_TYPE -#define __BLKCNT64_T_TYPE __SQUAD_TYPE +#define __BLKCNT64_T_TYPE __S64_TYPE #define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE -#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE +#define __FSBLKCNT64_T_TYPE __U64_TYPE #define __FSFILCNT_T_TYPE __ULONGWORD_TYPE -#define __FSFILCNT64_T_TYPE __UQUAD_TYPE +#define __FSFILCNT64_T_TYPE __U64_TYPE #define __FSWORD_T_TYPE __SWORD_TYPE #define __ID_T_TYPE __U32_TYPE #define __CLOCK_T_TYPE __SLONGWORD_TYPE diff --git a/sysdeps/unix/sysv/linux/x86/bits/typesizes.h b/sysdeps/unix/sysv/linux/x86/bits/typesizes.h index fb724e6a7a..37fac92bf8 100644 --- a/sysdeps/unix/sysv/linux/x86/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/x86/bits/typesizes.h @@ -28,20 +28,20 @@ /* X32 kernel interface is 64-bit. */ #if defined __x86_64__ && defined __ILP32__ -# define __SYSCALL_SLONG_TYPE __SQUAD_TYPE -# define __SYSCALL_ULONG_TYPE __UQUAD_TYPE -# define __REGISTER_T_TYPE __SQUAD_TYPE +# define __SYSCALL_SLONG_TYPE __S64_TYPE +# define __SYSCALL_ULONG_TYPE __U64_TYPE +# define __REGISTER_T_TYPE __S64_TYPE #else # define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE # define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE # define __REGISTER_T_TYPE __SWORD_TYPE #endif -#define __DEV_T_TYPE __UQUAD_TYPE +#define __DEV_T_TYPE __U64_TYPE #define __UID_T_TYPE __U32_TYPE #define __GID_T_TYPE __U32_TYPE #define __INO_T_TYPE __SYSCALL_ULONG_TYPE -#define __INO64_T_TYPE __UQUAD_TYPE +#define __INO64_T_TYPE __U64_TYPE #define __MODE_T_TYPE __U32_TYPE #ifdef __x86_64__ # define __NLINK_T_TYPE __SYSCALL_ULONG_TYPE @@ -51,16 +51,16 @@ # define __FSWORD_T_TYPE __SWORD_TYPE #endif #define __OFF_T_TYPE __SYSCALL_SLONG_TYPE -#define __OFF64_T_TYPE __SQUAD_TYPE +#define __OFF64_T_TYPE __S64_TYPE #define __PID_T_TYPE __S32_TYPE #define __RLIM_T_TYPE __SYSCALL_ULONG_TYPE -#define __RLIM64_T_TYPE __UQUAD_TYPE +#define __RLIM64_T_TYPE __U64_TYPE #define __BLKCNT_T_TYPE __SYSCALL_SLONG_TYPE -#define __BLKCNT64_T_TYPE __SQUAD_TYPE +#define __BLKCNT64_T_TYPE __S64_TYPE #define __FSBLKCNT_T_TYPE __SYSCALL_ULONG_TYPE -#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE +#define __FSBLKCNT64_T_TYPE __U64_TYPE #define __FSFILCNT_T_TYPE __SYSCALL_ULONG_TYPE -#define __FSFILCNT64_T_TYPE __UQUAD_TYPE +#define __FSFILCNT64_T_TYPE __U64_TYPE #define __ID_T_TYPE __U32_TYPE #define __CLOCK_T_TYPE __SYSCALL_SLONG_TYPE #define __TIME_T_TYPE __SYSCALL_SLONG_TYPE