]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Clean up bits/types.h.
authorZack Weinberg <zackw@panix.com>
Sat, 9 Mar 2019 23:01:48 +0000 (18:01 -0500)
committerZack Weinberg <zackw@panix.com>
Wed, 8 Jan 2020 17:56:32 +0000 (12:56 -0500)
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.

13 files changed:
bits/time64.h
bits/typesizes.h
posix/bits/types.h
posix/sys/types.h
scripts/check-obsolete-constructs.py
stdlib/stdint.h
sunrpc/rpc/types.h
sysdeps/mach/hurd/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

index 42f21fc86ee83369df626686a6a56ba329029847..a6941aa4edfaa45db59ad78d06e4870791576f56 100644 (file)
@@ -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 */
index c2ecd1764d2e148353fd24304d0c843fc7c90d5c..f9c568c77e72dd9bc94b28c7f161af14b7371d56 100644 (file)
 /* 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
index 7509faa79c7cd23e80c44875536af7cc0e4e6a63..dc595058402cc93bc7f8dbaad65930e6ee378d0e 100644 (file)
 #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 */
index 65a8cfb1975489f1f12724c8183dfacd81034bc7..f7452aeef4948e8aabb8627acb6016b108c76df9 100644 (file)
@@ -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
index ea457265beffc802c291523aaded8af7e790dc50..ae740993ef9d67839db187e222ef7c784b1ee529 100755 (executable)
@@ -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
index 2df07e485b402f9328c51e6cd0cabb0cf5afd6c1..391e3d2500744e093432adec0a3ea7fce5837ada 100644 (file)
@@ -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;
index beded5255595513cf0bd8b5e69a3a4e3ba630343..99e5f4f151d53a171f007a6a65c7c756def47546 100644 (file)
@@ -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
index d3b0dcd9c853101cc7c7808213049e83bb4c2735..b66c3f5e62003e9b30c6aea18972a47f77389a9f 100644 (file)
 #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
index c7e72f3ca54d9bcaef9c38debb361fdaf89137c8..52f7967d1e5f1ef446e10192d83d199209035cbd 100644 (file)
 /* 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
index 7c1bedd9af3f95c7567585cc074113084e676483..e73bba4ee7d2e18c34ce1f94e60ab91b666bbf21 100644 (file)
 /* 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
index e812109140b2f5076a92e2f5490df618c4bab711..36713552256939ac31863e066be16d262b45e05d 100644 (file)
 /* 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
index 830a45f01c292693ff8863ae2098cf534b004c32..37627bd297ed670f2ed46c61728fd693bea43b1b 100644 (file)
 /* 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
index 55f9a4c430b0c8ffeaf534347d9c7edb907b4853..e4f3698976d347ecb6e900fc6a3b3ae6ddedfa1d 100644 (file)
 
 /* 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
 # 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