diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2013-10-30 19:51:13 +0400 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2013-10-30 19:51:13 +0400 |
commit | 4afcc6ced9f16386d589bd93b1e8d6c9f93821c0 (patch) | |
tree | c21b1736261350e6df939fa23fa8270d55675012 | |
parent | b8dc053d2b18c279032363d364ca4cb099b8f081 (diff) |
* libc/include/machine/_default_types.h: Revert change from 2013-10-10.
-rw-r--r-- | newlib/ChangeLog | 8 | ||||
-rw-r--r-- | newlib/libc/include/machine/_default_types.h | 110 |
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 |