Browse Source

move register_t and u_int64_t (back) to alltypes

during the header refactoring, I had moved u_int64_t out of alltypes
under the assumption that we could just use long long everywhere.
however, it seems some broken applications make inconsistent mixed use
of u_int64_t and uint64_t, resulting in build errors when the
underlying type differs.
Rich Felker 11 years ago
parent
commit
009f186810
2 changed files with 7 additions and 2 deletions
  1. 2 0
      include/alltypes.h.in
  2. 5 2
      include/sys/types.h

+ 2 - 0
include/alltypes.h.in

@@ -4,6 +4,7 @@ TYPEDEF _Addr ptrdiff_t;
 TYPEDEF _Addr ssize_t;
 TYPEDEF _Addr intptr_t;
 TYPEDEF _Addr regoff_t;
+TYPEDEF _Reg register_t;
 
 TYPEDEF signed char     int8_t;
 TYPEDEF short           int16_t;
@@ -14,6 +15,7 @@ TYPEDEF unsigned char   uint8_t;
 TYPEDEF unsigned short  uint16_t;
 TYPEDEF unsigned int    uint32_t;
 TYPEDEF unsigned _Int64 uint64_t;
+TYPEDEF unsigned _Int64 u_int64_t;
 TYPEDEF unsigned _Int64 uintmax_t;
 
 TYPEDEF unsigned mode_t;

+ 5 - 2
include/sys/types.h

@@ -49,13 +49,17 @@ extern "C" {
 #define __NEED_pthread_key_t
 #define __NEED_pthread_once_t
 #define __NEED_useconds_t
+#define __NEED_u_int64_t
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define __NEED_register_t
+#endif
 
 #include <bits/alltypes.h>
 
 typedef unsigned char u_int8_t;
 typedef unsigned short u_int16_t;
 typedef unsigned u_int32_t;
-typedef unsigned long long u_int64_t;
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 typedef char *caddr_t;
@@ -65,7 +69,6 @@ typedef unsigned u_int, uint;
 typedef unsigned long u_long, ulong;
 typedef long long quad_t;
 typedef unsigned long long u_quad_t;
-typedef long register_t;
 #include <endian.h>
 #include <sys/select.h>
 #include <sys/sysmacros.h>