From f2f8a9a2298b14b59a6e6e2a675cc117e2cbe157 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Thu, 24 Feb 2005 18:29:31 +0000 Subject: [PATCH] 2005-02-24 Ralf Corsepious * libc/include/sys/types.h [__rtems__]: Include new header file machine/_types.h. * libc/include/machine/types.h: Ditto. * libc/sys/rtems/machine/_types.h: New file. --- newlib/ChangeLog | 7 ++ newlib/libc/include/machine/types.h | 19 +--- newlib/libc/include/sys/types.h | 34 +++++++ newlib/libc/sys/rtems/machine/_types.h | 121 +++++++++++++++++++++++++ 4 files changed, 163 insertions(+), 18 deletions(-) create mode 100644 newlib/libc/sys/rtems/machine/_types.h diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 1d9f30623..47f5794be 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,10 @@ +2005-02-24 Ralf Corsepious + + * libc/include/sys/types.h [__rtems__]: Include new + header file machine/_types.h. + * libc/include/machine/types.h: Ditto. + * libc/sys/rtems/machine/_types.h: New file. + 2005-02-23 Corinna Vinschen * libc/include/time.h (_timezone): Change to long also for Cygwin. diff --git a/newlib/libc/include/machine/types.h b/newlib/libc/include/machine/types.h index b573336b7..40a75faa5 100644 --- a/newlib/libc/include/machine/types.h +++ b/newlib/libc/include/machine/types.h @@ -6,25 +6,8 @@ * closely match the types defined in the BSD machine/types.h. * This is needed to let the RTEMS/BSD TCP/IP stack compile. */ - #if defined(__rtems__) -typedef signed long long int64_t; -#if defined( __h8300__) -typedef signed long int32_t; -#else -typedef signed int int32_t; -#endif -typedef signed short int16_t; -typedef signed char int8_t; - -typedef unsigned long long u_int64_t; -#if defined( __h8300__) -typedef unsigned long u_int32_t; -#else -typedef unsigned int u_int32_t; -#endif -typedef unsigned short u_int16_t; -typedef unsigned char u_int8_t; +#include #endif #define _CLOCK_T_ unsigned long /* clock() */ diff --git a/newlib/libc/include/sys/types.h b/newlib/libc/include/sys/types.h index 238af1f50..944149589 100644 --- a/newlib/libc/include/sys/types.h +++ b/newlib/libc/include/sys/types.h @@ -21,6 +21,8 @@ #ifndef __INTTYPES_DEFINED__ #define __INTTYPES_DEFINED__ + +#if !defined (__rtems__) typedef short int __int16_t; typedef unsigned short int __uint16_t; @@ -39,6 +41,38 @@ typedef unsigned long int __uint64_t; __extension__ typedef long long __int64_t; __extension__ typedef unsigned long long __uint64_t; #endif +#else /* __rtems__ */ + +/* + * The following section is RTEMS specific and is needed to more + * closely match the types defined in the BSD sys/types.h. + * This is needed to let the RTEMS/BSD TCP/IP stack compile. + */ + +#include + +/* deprecated */ +#if ___int8_t_defined +typedef __uint8_t u_int8_t; +#endif +#if ___int16_t_defined +typedef __uint16_t u_int16_t; +#endif +#if ___int32_t_defined +typedef __uint32_t u_int32_t; +#endif + +#if ___int64_t_defined +typedef __uint64_t u_int64_t; + +/* deprecated */ +typedef __uint64_t u_quad_t; +typedef __int64_t quad_t; +typedef quad_t * qaddr_t; +#endif + +#endif + #endif /* ! __INTTYPES_DEFINED */ #ifndef __need_inttypes diff --git a/newlib/libc/sys/rtems/machine/_types.h b/newlib/libc/sys/rtems/machine/_types.h new file mode 100644 index 000000000..ab76561be --- /dev/null +++ b/newlib/libc/sys/rtems/machine/_types.h @@ -0,0 +1,121 @@ +/* + * $Id$ + */ + +#ifndef _MACHINE__TYPES_H +#define _MACHINE__TYPES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Guess on types by examining *_MIN/*_MAX defines. + */ +#if defined(__GNUC__) && (__GNUC__ >= 3 ) \ + && defined(__GNUC_MINOR__) && (__GNUC_MINOR__ > 2 ) +/* GCC >= 3.3.0 has ____ implicitly defined. */ +#define __EXP(x) __##x##__ +#else +/* Fall back to POSIX versions from */ +#define __EXP(x) x +#include +#endif + +#if __EXP(SCHAR_MAX) == 0x7f +typedef signed char __int8_t ; +typedef unsigned char __uint8_t ; +#define ___int8_t_defined 1 +#endif + +#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 + +#if ___int16_t_defined +typedef __int16_t __int_least16_t; +typedef __uint16_t __uint_least16_t; +#define ___int_least16_t_defined 1 + +#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 + +#if ___int32_t_defined +typedef __int32_t __int_least32_t; +typedef __uint32_t __uint_least32_t; +#define ___int_least32_t_defined 1 + +#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 */ +#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 + +#endif /* _MACHINE__TYPES_H */