fix type issues in stdint.h so underlying types of 64-bit types match ABI
[musl] / arch / i386 / bits / alltypes.h.sh
index 4daaf98..aec7373 100755 (executable)
@@ -18,18 +18,29 @@ union \1 \2;\
 
 TYPEDEF unsigned size_t;
 TYPEDEF int ssize_t;
-TYPEDEF long ptrdiff_t;
+TYPEDEF int ptrdiff_t;
+
+#if __GNUC__ >= 3
+TYPEDEF __builtin_va_list va_list;
+#else
 TYPEDEF struct __va_list * va_list;
+#endif
 
+#ifndef __cplusplus
+#ifdef __WCHAR_TYPE__
+TYPEDEF __WCHAR_TYPE__ wchar_t;
+#else
 TYPEDEF long wchar_t;
+#endif
+#endif
 TYPEDEF long wint_t;
-TYPEDEF long wctrans_t;
-TYPEDEF long wctype_t;
+TYPEDEF const int * wctrans_t;
+TYPEDEF unsigned long wctype_t;
 
-TYPEDEF char      int8_t;
-TYPEDEF short     int16_t;
-TYPEDEF int       int32_t;
-TYPEDEF long long int64_t;
+TYPEDEF signed char int8_t;
+TYPEDEF short       int16_t;
+TYPEDEF int         int32_t;
+TYPEDEF long long   int64_t;
 
 TYPEDEF unsigned char      uint8_t;
 TYPEDEF unsigned short     uint16_t;
@@ -56,8 +67,17 @@ TYPEDEF unsigned long uintptr_t;
 TYPEDEF long long          intmax_t;
 TYPEDEF unsigned long long uintmax_t;
 
+#if defined(__FLT_EVAL_METHOD__) && __FLT_EVAL_METHOD__ == 0
+TYPEDEF float float_t;
+TYPEDEF double double_t;
+#else
+TYPEDEF long double float_t;
+TYPEDEF long double double_t;
+#endif
+
 TYPEDEF long time_t;
 TYPEDEF int suseconds_t;
+TYPEDEF unsigned useconds_t;
 STRUCT timeval { time_t tv_sec; int tv_usec; };
 STRUCT timespec { time_t tv_sec; long tv_nsec; };