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:
authorJeff Johnston <jjohnstn@redhat.com>2005-02-24 21:29:31 +0300
committerJeff Johnston <jjohnstn@redhat.com>2005-02-24 21:29:31 +0300
commitf2f8a9a2298b14b59a6e6e2a675cc117e2cbe157 (patch)
treef7c9dcb76a6ed3799579fbb41807a377099cd6c8
parent45df57e8d8801f5b01c3e45a2c427b55845dac19 (diff)
2005-02-24 Ralf Corsepious <ralf.corsepius@rtems.org>
* 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.
-rw-r--r--newlib/ChangeLog7
-rw-r--r--newlib/libc/include/machine/types.h19
-rw-r--r--newlib/libc/include/sys/types.h34
-rw-r--r--newlib/libc/sys/rtems/machine/_types.h121
4 files changed, 163 insertions, 18 deletions
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 <ralf.corsepius@rtems.org>
+
+ * 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 <corinna@vinschen.de>
* 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 <machine/_types.h>
#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 <machine/_types.h>
+
+/* 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 __<val>__ implicitly defined. */
+#define __EXP(x) __##x##__
+#else
+/* Fall back to POSIX versions from <limits.h> */
+#define __EXP(x) x
+#include <limits.h>
+#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 <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
+
+#endif /* _MACHINE__TYPES_H */