[PATCH] Fix cygwin-stdint.h
Yaakov Selkowitz
yselkowi@redhat.com
Tue Aug 12 20:00:00 GMT 2014
This patch fixes an error in r197168 where type definitions were made
dependent on the host architecture instead of the target. This causes
cross-compilation issues, particularly in a --host=x86_64-*
--target=i686-pc-cygwin configuration.
Attached patch was tested by comparing output of './gcc/xgcc -B ./gcc
-dM -E - </dev/null' between native and cross compilers for each of the
Cygwin targets.
--
Yaakov Selkowitz
Associate Software Engineer, ARM
Red Hat, Inc.
-------------- next part --------------
2014-08-12 Yaakov Selkowitz <yselkowi@redhat.com>
* config/i386/cygwin-stdint.h: Throughout, make type
definitions dependent on target architecture, not host.
Index: gcc/config/i386/cygwin-stdint.h
===================================================================
--- gcc/config/i386/cygwin-stdint.h (revision 213874)
+++ gcc/config/i386/cygwin-stdint.h (working copy)
@@ -24,20 +24,12 @@
#define INT8_TYPE "signed char"
#define INT16_TYPE "short int"
#define INT32_TYPE "int"
-#ifdef __x86_64__
-#define INT64_TYPE "long int"
-#else
-#define INT64_TYPE "long long int"
-#endif
+#define INT64_TYPE (TARGET_64BIT ? "long int" : "long long int")
#define UINT8_TYPE "unsigned char"
#define UINT16_TYPE "short unsigned int"
#define UINT32_TYPE "unsigned int"
-#ifdef __x86_64__
-#define UINT64_TYPE "long unsigned int"
-#else
-#define UINT64_TYPE "long long unsigned int"
-#endif
+#define UINT64_TYPE (TARGET_64BIT ? "long unsigned int" : "long long unsigned int")
/* Minimum-width integer types */
@@ -44,51 +36,26 @@
#define INT_LEAST8_TYPE "signed char"
#define INT_LEAST16_TYPE "short int"
#define INT_LEAST32_TYPE "int"
-#ifdef __x86_64__
-#define INT_LEAST64_TYPE "long int"
-#else
-#define INT_LEAST64_TYPE "long long int"
-#endif
+#define INT_LEAST64_TYPE (TARGET_64BIT ? "long int" : "long long int")
#define UINT_LEAST8_TYPE "unsigned char"
#define UINT_LEAST16_TYPE "short unsigned int"
#define UINT_LEAST32_TYPE "unsigned int"
-#ifdef __x86_64__
-#define UINT_LEAST64_TYPE "long unsigned int"
-#else
-#define UINT_LEAST64_TYPE "long long unsigned int"
-#endif
+#define UINT_LEAST64_TYPE (TARGET_64BIT ? "long unsigned int" : "long long unsigned int")
/* Fastest minimum-width integer types */
#define INT_FAST8_TYPE "signed char"
-#ifdef __x86_64__
-#define INT_FAST16_TYPE "long int"
-#define INT_FAST32_TYPE "long int"
-#define INT_FAST64_TYPE "long int"
-#else
-#define INT_FAST16_TYPE "int"
-#define INT_FAST32_TYPE "int"
-#define INT_FAST64_TYPE "long long int"
-#endif
+#define INT_FAST16_TYPE (TARGET_64BIT ? "long int" : "int")
+#define INT_FAST32_TYPE (TARGET_64BIT ? "long int" : "int")
+#define INT_FAST64_TYPE (TARGET_64BIT ? "long int" : "long long int")
#define UINT_FAST8_TYPE "unsigned char"
-#ifdef __x86_64__
-#define UINT_FAST16_TYPE "long unsigned int"
-#define UINT_FAST32_TYPE "long unsigned int"
-#define UINT_FAST64_TYPE "long unsigned int"
-#else
-#define UINT_FAST16_TYPE "unsigned int"
-#define UINT_FAST32_TYPE "unsigned int"
-#define UINT_FAST64_TYPE "long long unsigned int"
-#endif
+#define UINT_FAST16_TYPE (TARGET_64BIT ? "long unsigned int" : "unsigned int")
+#define UINT_FAST32_TYPE (TARGET_64BIT ? "long unsigned int" : "unsigned int")
+#define UINT_FAST64_TYPE (TARGET_64BIT ? "long unsigned int" : "long long unsigned int")
/* Integer types capable of holding object pointers */
-#ifdef __x86_64__
-#define INTPTR_TYPE "long int"
-#define UINTPTR_TYPE "long unsigned int"
-#else
-#define INTPTR_TYPE "int"
-#define UINTPTR_TYPE "unsigned int"
-#endif
+#define INTPTR_TYPE (TARGET_64BIT ? "long int" : "int")
+#define UINTPTR_TYPE (TARGET_64BIT ? "long unsigned int" : "unsigned int")
More information about the Gcc-patches
mailing list