This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[glibc/zack/more-obsolete-typedefs] Clean up bits/types.h.


https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=cc1092eda9c4b41a7845f228d92c29a2519727e9

commit cc1092eda9c4b41a7845f228d92c29a2519727e9
Author: Zack Weinberg <zackw@panix.com>
Date:   Sat Mar 9 18:01:48 2019 -0500

    Clean up bits/types.h.
    
    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.

Diff:
---
 bits/time64.h                                    |   2 +-
 bits/typesizes.h                                 |  14 +-
 posix/bits/types.h                               | 204 +++++++++--------------
 posix/sys/types.h                                |  12 +-
 scripts/check-obsolete-constructs.py             |  67 ++++----
 stdlib/stdint.h                                  |  13 +-
 sunrpc/rpc/types.h                               |  12 +-
 sysdeps/mach/hurd/bits/typesizes.h               |  14 +-
 sysdeps/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 +-
 sysdeps/unix/sysv/linux/sparc/bits/typesizes.h   |  14 +-
 sysdeps/unix/sysv/linux/x86/bits/typesizes.h     |  20 +--
 13 files changed, 180 insertions(+), 236 deletions(-)

diff --git a/bits/time64.h b/bits/time64.h
index c0f8a24..de38d3d 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 a729146..bd21cf3 100644
--- a/bits/typesizes.h
+++ b/bits/typesizes.h
@@ -26,24 +26,24 @@
 /* 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.  */
 
-#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 1f07950..4a6043c 100644
--- a/posix/bits/types.h
+++ b/posix/bits/types.h
@@ -27,12 +27,6 @@
 #include <bits/wordsize.h>
 #include <bits/timesize.h>
 
-/* 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 <bits/typesizes.h> 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 <bits/typesizes.h>	/* Defines __*_T_TYPE macros.  */
 #include <bits/time64.h>	/* Defines __TIME*_T_TYPE macros.  */
 
-
-__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.  */
-
-__STD_TYPE __KEY_T_TYPE __key_t;	/* Type of an IPC key.  */
-
-/* Clock ID used in clock and timer functions.  */
-__STD_TYPE __CLOCKID_T_TYPE __clockid_t;
-
-/* Timer ID returned by `timer_create'.  */
-__STD_TYPE __TIMER_T_TYPE __timer_t;
-
-/* 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 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.  */
+
+/* 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;
+
+/* Types added by Y2038:  */
+typedef __TIME64_T_TYPE __time64_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.  */
+
+/* Types added by BSD:  */
+typedef __FSID_T_TYPE __fsid_t;		/* File system IDs.  */
+typedef __REGISTER_T_TYPE __register_t;	/* Integer register.  */
+
+/* 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;
-
-/* Duplicate info from sys/socket.h.  */
-__STD_TYPE __U32_TYPE __socklen_t;
 
-/* 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;
+/* 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.  */
 
-/* BSD: Size of a general-purpose integer register.  */
-__STD_TYPE __REGISTER_T_TYPE __register_t;
+/* POSIX:  */
+typedef __U32_TYPE __socklen_t;		/* Size of a socket address.  */
 
-#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 7327904..2d8cfd1 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 701ad5a..518de75 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
+        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
 
+        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 == "u_char":
+            return defn == "unsigned char"
+
+        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 == "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
+        if name == "u_quad_t":
+            return defn == "__uint64_t"
 
-        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[:5] == "u_int" and name[-2:] == "_t":
+            return defn == "__uint" + name[5:-2] + "_t"
 
-        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
+        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 1ad538f..8645d91 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 beded52..99e5f4f 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 23ee7af..eaeaab1 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 26dabcf..fb4a560 100644
--- a/sysdeps/unix/sysv/linux/generic/bits/typesizes.h
+++ b/sysdeps/unix/sysv/linux/generic/bits/typesizes.h
@@ -27,24 +27,24 @@
 /* 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.  */
 
-#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 7c1bedd..e73bba4 100644
--- a/sysdeps/unix/sysv/linux/mips/bits/typesizes.h
+++ b/sysdeps/unix/sysv/linux/mips/bits/typesizes.h
@@ -26,24 +26,24 @@
 /* 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.  */
 
-#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 712264a..741dfae 100644
--- a/sysdeps/unix/sysv/linux/s390/bits/typesizes.h
+++ b/sysdeps/unix/sysv/linux/s390/bits/typesizes.h
@@ -26,24 +26,24 @@
 /* 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.  */
 
-#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 b2d3929..c084ebd 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h
@@ -26,24 +26,24 @@
 /* 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.  */
 
-#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 fb724e6..37fac92 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]