This is the mail archive of the
cygwin-patches
mailing list for the Cygwin project.
Re: [PATCH] Fix type inconsistencies in stdint.h
On Apr 7 09:06, Charles Wilson wrote:
> Eric Blake wrote:
> > Making the ABI change now (which
> > probably won't affect C apps, but will definitely affect any C++ code that
> > used uint32_t and friends in mangled names)
> >
> > But I'm with Dave that IF we decide
> > the ABI change is the right thing to do, then NOW is the only time worth
> > doing it.
>
> Especially as the transition to
> gcc4/dw2-eh/shared-libgcc/shared-libstdc++/--enable-fully-dynamic-string
> is *definitely* an ABI break for C++, anyway.
Good point, I guess. So, if we all agree on that, I'd suggest to
change Dave's patch to the one below.
Corinna
* include/stdint.h (int_least32_t): Define as int.
(uint_least32_t): Ditto, unsigned.
(int_fast16_t): Define as int.
(int_fast32_t): Ditto.
(uint_fast16_t): Ditto, unsigned.
(uint_fast32_t): Ditto.
(UINT32_MAX): Remove `L' long marker.
(UINT_LEAST32_MAX): Ditto.
(UINT_FAST16_MAX): Ditto.
(UINT_FAST32_MAX): Ditto.
(INT32_C): Ditto.
(UINT32_C): Ditto.
Index: include/stdint.h
===================================================================
RCS file: /cvs/src/src/winsup/cygwin/include/stdint.h,v
retrieving revision 1.10
diff -u -p -r1.10 stdint.h
--- include/stdint.h 17 May 2008 21:34:05 -0000 1.10
+++ include/stdint.h 7 Apr 2009 13:12:48 -0000
@@ -33,24 +33,24 @@ typedef unsigned long long uint64_t;
typedef signed char int_least8_t;
typedef short int_least16_t;
-typedef long int_least32_t;
+typedef int int_least32_t;
typedef long long int_least64_t;
typedef unsigned char uint_least8_t;
typedef unsigned short uint_least16_t;
-typedef unsigned long uint_least32_t;
+typedef unsigned int uint_least32_t;
typedef unsigned long long uint_least64_t;
/* Fastest minimum-width integer types */
typedef signed char int_fast8_t;
-typedef long int_fast16_t;
-typedef long int_fast32_t;
+typedef int int_fast16_t;
+typedef int int_fast32_t;
typedef long long int_fast64_t;
typedef unsigned char uint_fast8_t;
-typedef unsigned long uint_fast16_t;
-typedef unsigned long uint_fast32_t;
+typedef unsigned int uint_fast16_t;
+typedef unsigned int uint_fast32_t;
typedef unsigned long long uint_fast64_t;
/* Integer types capable of holding object pointers */
@@ -80,7 +80,7 @@ typedef unsigned long long uintmax_t;
#define UINT8_MAX (255)
#define UINT16_MAX (65535)
-#define UINT32_MAX (4294967295UL)
+#define UINT32_MAX (4294967295U)
#define UINT64_MAX (18446744073709551615ULL)
/* Limits of minimum-width integer types */
@@ -97,7 +97,7 @@ typedef unsigned long long uintmax_t;
#define UINT_LEAST8_MAX (255)
#define UINT_LEAST16_MAX (65535)
-#define UINT_LEAST32_MAX (4294967295UL)
+#define UINT_LEAST32_MAX (4294967295U)
#define UINT_LEAST64_MAX (18446744073709551615ULL)
/* Limits of fastest minimum-width integer types */
@@ -113,8 +113,8 @@ typedef unsigned long long uintmax_t;
#define INT_FAST64_MAX (9223372036854775807LL)
#define UINT_FAST8_MAX (255)
-#define UINT_FAST16_MAX (4294967295UL)
-#define UINT_FAST32_MAX (4294967295UL)
+#define UINT_FAST16_MAX (4294967295U)
+#define UINT_FAST32_MAX (4294967295U)
#define UINT_FAST64_MAX (18446744073709551615ULL)
/* Limits of integer types capable of holding object pointers */
@@ -166,12 +166,12 @@ typedef unsigned long long uintmax_t;
#define INT8_C(x) x
#define INT16_C(x) x
-#define INT32_C(x) x ## L
+#define INT32_C(x) x
#define INT64_C(x) x ## LL
#define UINT8_C(x) x
#define UINT16_C(x) x
-#define UINT32_C(x) x ## UL
+#define UINT32_C(x) x ## U
#define UINT64_C(x) x ## ULL
/* Macros for greatest-width integer constant expressions */
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat