Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2013-10-30 19:51:13 +0400
committerCorinna Vinschen <corinna@vinschen.de>2013-10-30 19:51:13 +0400
commit4afcc6ced9f16386d589bd93b1e8d6c9f93821c0 (patch)
treec21b1736261350e6df939fa23fa8270d55675012
parentb8dc053d2b18c279032363d364ca4cb099b8f081 (diff)
* libc/include/machine/_default_types.h: Revert change from 2013-10-10.
-rw-r--r--newlib/ChangeLog8
-rw-r--r--newlib/libc/include/machine/_default_types.h110
2 files changed, 100 insertions, 18 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog
index 0c89f3076..506b87a2f 100644
--- a/newlib/ChangeLog
+++ b/newlib/ChangeLog
@@ -1,3 +1,7 @@
+2013-10-30 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * libc/include/machine/_default_types.h: Revert change from 2013-10-10.
+
2013-10-24 Hans-Peter Nilsson <hp@axis.com>
* libc/include/stdio.h [!__LARGE64_FILES] (funopen): Fix typo
@@ -82,6 +86,10 @@
* libc/sys/rtems/machine/_types.h (_ssize_t): Delete.
(__ssize_t_defined) Likewise.
+2013-10-30 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * libc/include/machine/_default_types.h: Revert change from 2013-10-10.
+
2013-10-10 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libc/include/machine/_default_types.h (__int8_t): Define via
diff --git a/newlib/libc/include/machine/_default_types.h b/newlib/libc/include/machine/_default_types.h
index cb6d2b7ba..362e07903 100644
--- a/newlib/libc/include/machine/_default_types.h
+++ b/newlib/libc/include/machine/_default_types.h
@@ -5,40 +5,114 @@
#ifndef _MACHINE__DEFAULT_TYPES_H
#define _MACHINE__DEFAULT_TYPES_H
-#include <stdint.h>
-
#ifdef __cplusplus
extern "C" {
#endif
-typedef int8_t __int8_t ;
-typedef uint8_t __uint8_t ;
-#define ___int8_t_defined 1
+/*
+ * Guess on types by examining *_MIN / *_MAX defines.
+ */
+#if __GNUC_PREREQ (3, 3)
+/* GCC >= 3.3.0 has __<val>__ implicitly defined. */
+#define __EXP(x) __##x##__
+#else
+/* Fall back to POSIX versions from <limits.h> */
+#define __EXP(x) x
+#include <limits.h>
+#endif
-typedef int_least8_t __int_least8_t;
-typedef uint_least8_t __uint_least8_t;
-#define ___int_least8_t_defined 1
+#if __EXP(SCHAR_MAX) == 0x7f
+typedef signed char __int8_t ;
+typedef unsigned char __uint8_t ;
+#define ___int8_t_defined 1
+#endif
-typedef int16_t __int16_t;
-typedef uint16_t __uint16_t;
+#if __EXP(INT_MAX) == 0x7fff
+typedef signed int __int16_t;
+typedef unsigned int __uint16_t;
+#define ___int16_t_defined 1
+#elif __EXP(SHRT_MAX) == 0x7fff
+typedef signed short __int16_t;
+typedef unsigned short __uint16_t;
#define ___int16_t_defined 1
+#elif __EXP(SCHAR_MAX) == 0x7fff
+typedef signed char __int16_t;
+typedef unsigned char __uint16_t;
+#define ___int16_t_defined 1
+#endif
-typedef int_least16_t __int_least16_t;
-typedef uint_least16_t __uint_least16_t;
+#if ___int16_t_defined
+typedef __int16_t __int_least16_t;
+typedef __uint16_t __uint_least16_t;
#define ___int_least16_t_defined 1
-typedef int32_t __int32_t;
-typedef uint32_t __uint32_t;
+#if !___int8_t_defined
+typedef __int16_t __int_least8_t;
+typedef __uint16_t __uint_least8_t;
+#define ___int_least8_t_defined 1
+#endif
+#endif
+
+#if __EXP(INT_MAX) == 0x7fffffffL
+typedef signed int __int32_t;
+typedef unsigned int __uint32_t;
+#define ___int32_t_defined 1
+#elif __EXP(LONG_MAX) == 0x7fffffffL
+typedef signed long __int32_t;
+typedef unsigned long __uint32_t;
+#define ___int32_t_defined 1
+#elif __EXP(SHRT_MAX) == 0x7fffffffL
+typedef signed short __int32_t;
+typedef unsigned short __uint32_t;
#define ___int32_t_defined 1
+#elif __EXP(SCHAR_MAX) == 0x7fffffffL
+typedef signed char __int32_t;
+typedef unsigned char __uint32_t;
+#define ___int32_t_defined 1
+#endif
-typedef int_least32_t __int_least32_t;
-typedef uint_least32_t __uint_least32_t;
+#if ___int32_t_defined
+typedef __int32_t __int_least32_t;
+typedef __uint32_t __uint_least32_t;
#define ___int_least32_t_defined 1
-typedef int64_t __int64_t;
-typedef uint64_t __uint64_t;
+#if !___int8_t_defined
+typedef __int32_t __int_least8_t;
+typedef __uint32_t __uint_least8_t;
+#define ___int_least8_t_defined 1
+#endif
+#if !___int16_t_defined
+typedef __int32_t __int_least16_t;
+typedef __uint32_t __uint_least16_t;
+#define ___int_least16_t_defined 1
+#endif
+#endif
+
+#if __EXP(LONG_MAX) > 0x7fffffff
+typedef signed long __int64_t;
+typedef unsigned long __uint64_t;
#define ___int64_t_defined 1
+/* GCC has __LONG_LONG_MAX__ */
+#elif defined(__LONG_LONG_MAX__) && (__LONG_LONG_MAX__ > 0x7fffffff)
+typedef signed long long __int64_t;
+typedef unsigned long long __uint64_t;
+#define ___int64_t_defined 1
+
+/* POSIX mandates LLONG_MAX in <limits.h> */
+#elif defined(LLONG_MAX) && (LLONG_MAX > 0x7fffffff)
+typedef signed long long __int64_t;
+typedef unsigned long long __uint64_t;
+#define ___int64_t_defined 1
+
+#elif __EXP(INT_MAX) > 0x7fffffff
+typedef signed int __int64_t;
+typedef unsigned int __uint64_t;
+#define ___int64_t_defined 1
+#endif
+
+#undef __EXP
+
#ifdef __cplusplus
}
#endif