diff options
author | Ralf Corsepius <ralf.corsepius@rtems.org> | 2008-08-27 07:50:31 +0000 |
---|---|---|
committer | Ralf Corsepius <ralf.corsepius@rtems.org> | 2008-08-27 07:50:31 +0000 |
commit | d880bc54b10e444a909b8e91ea490508279e5881 (patch) | |
tree | a80e63e90c52839652dd475248fd13ef4a201a2b /contrib/crossrpms | |
parent | Remove. (diff) | |
download | rtems-d880bc54b10e444a909b8e91ea490508279e5881.tar.bz2 |
New.
Diffstat (limited to 'contrib/crossrpms')
-rw-r--r-- | contrib/crossrpms/patches/newlib-1.16.0-rtems4.10-20080827.diff | 1041 | ||||
-rw-r--r-- | contrib/crossrpms/patches/newlib-1.16.0-rtems4.9-20080827.diff | 1041 |
2 files changed, 2082 insertions, 0 deletions
diff --git a/contrib/crossrpms/patches/newlib-1.16.0-rtems4.10-20080827.diff b/contrib/crossrpms/patches/newlib-1.16.0-rtems4.10-20080827.diff new file mode 100644 index 0000000000..5729274f0e --- /dev/null +++ b/contrib/crossrpms/patches/newlib-1.16.0-rtems4.10-20080827.diff @@ -0,0 +1,1041 @@ +diff -Naur newlib-1.16.0.orig/newlib/libc/include/getopt.h newlib-1.16.0/newlib/libc/include/getopt.h +--- newlib-1.16.0.orig/newlib/libc/include/getopt.h 2006-01-04 22:21:52.000000000 +0100 ++++ newlib-1.16.0/newlib/libc/include/getopt.h 2008-08-27 09:16:12.000000000 +0200 +@@ -89,31 +89,40 @@ + + /* include files needed by this include file */ + +-/* macros defined by this include file */ +-#define NO_ARG 0 +-#define REQUIRED_ARG 1 +-#define OPTIONAL_ARG 2 +- +-/* types defined by this include file */ +- +-struct option +-{ +- char *name; /* the name of the long option */ +- int has_arg; /* one of the above macros */ +- int *flag; /* determines if getopt_long() returns a +- * value for a long option; if it is +- * non-NULL, 0 is returned as a function +- * value and the value of val is stored in +- * the area pointed to by flag. Otherwise, +- * val is returned. */ +- int val; /* determines the value to return if flag is +- * NULL. */ +-}; ++ /* These #defines are to keep the namespace clear... */ ++#define getopt_r __getopt_r ++#define getopt_long_r __getopt_long_r ++#define getopt_long_only_r __getopt_long_only_r + + #ifdef __cplusplus + extern "C" + { +-#endif ++ ++#endif /* __cplusplus */ ++ ++/* types defined by this include file */ ++ struct option ++ { ++ char *name; /* the name of the long option */ ++ int has_arg; /* one of the above macros */ ++ int *flag; /* determines if getopt_long() returns a ++ * value for a long option; if it is ++ * non-NULL, 0 is returned as a function ++ * value and the value of val is stored in ++ * the area pointed to by flag. Otherwise, ++ * val is returned. */ ++ int val; /* determines the value to return if flag is ++ * NULL. */ ++ ++ }; ++ ++ /* The getopt_data structure is for reentrancy. Its members are similar to ++ the externally-defined variables. */ ++ typedef struct getopt_data ++ { ++ char *optarg; ++ int optind, opterr, optopt, optwhere; ++ } getopt_data; + + /* externally-defined variables */ + extern char *optarg; +@@ -122,14 +131,35 @@ + extern int optopt; + + /* function prototypes */ +- int _EXFUN (getopt, (int __argc, char *const __argv[], const char *__optstring)); +- int _EXFUN (getopt_long, (int __argc, char *const __argv[], const char *__shortopts, const struct option *__longopts, int *__longind)); +- int _EXFUN (getopt_long_only, (int __argc, char *const __argv[], const char *__shortopts, const struct option *__longopts, int *__longind)); ++ int _EXFUN (getopt, ++ (int __argc, char *const __argv[], const char *__optstring)); ++ ++ int _EXFUN (getopt_long, ++ (int __argc, char *const __argv[], const char *__shortopts, ++ const struct option * __longopts, int *__longind)); ++ ++ int _EXFUN (getopt_long_only, ++ (int __argc, char *const __argv[], const char *__shortopts, ++ const struct option * __longopts, int *__longind)); ++ ++ int _EXFUN (__getopt_r, ++ (int __argc, char *const __argv[], const char *__optstring, ++ struct getopt_data * __data)); ++ ++ int _EXFUN (__getopt_long_r, ++ (int __argc, char *const __argv[], const char *__shortopts, ++ const struct option * __longopts, int *__longind, ++ struct getopt_data * __data)); ++ ++ int _EXFUN (__getopt_long_only_r, ++ (int __argc, char *const __argv[], const char *__shortopts, ++ const struct option * __longopts, int *__longind, ++ struct getopt_data * __data)); + + #ifdef __cplusplus + }; + +-#endif ++#endif /* __cplusplus */ + + #endif /* GETOPT_H */ + +diff -Naur newlib-1.16.0.orig/newlib/libc/include/inttypes.h newlib-1.16.0/newlib/libc/include/inttypes.h +--- newlib-1.16.0.orig/newlib/libc/include/inttypes.h 2005-12-16 20:03:12.000000000 +0100 ++++ newlib-1.16.0/newlib/libc/include/inttypes.h 2008-08-27 09:16:12.000000000 +0200 +@@ -242,9 +242,12 @@ + #define SCNxMAX __SCNMAX(x) + + /* ptr types */ +-#if __have_longlong64 +-#define __PRIPTR(x) __STRINGIFY(ll##x) +-#define __SCNPTR(x) __STRINGIFY(ll##x) ++#if __ptrint_t_long_defined ++#define __PRIPTR(x) __STRINGIFY(l##x) ++#define __SCNPTR(x) __STRINGIFY(l##x) ++#elif __ptrint_t_int_defined ++#define __PRIPTR(x) __STRINGIFY(x) ++#define __SCNPTR(x) __STRINGIFY(x) + #elif __have_long64 + #define __PRIPTR(x) __STRINGIFY(l##x) + #define __SCNPTR(x) __STRINGIFY(l##x) +diff -Naur newlib-1.16.0.orig/newlib/libc/include/machine/ieeefp.h newlib-1.16.0/newlib/libc/include/machine/ieeefp.h +--- newlib-1.16.0.orig/newlib/libc/include/machine/ieeefp.h 2007-11-07 22:42:24.000000000 +0100 ++++ newlib-1.16.0/newlib/libc/include/machine/ieeefp.h 2008-08-27 09:17:54.000000000 +0200 +@@ -62,8 +62,12 @@ + # define __IEEE_BIG_ENDIAN + # endif + #else +-# define __IEEE_BIG_ENDIAN + # ifdef __ARMEL__ ++# define __IEEE_LITTLE_ENDIAN ++# else ++# define __IEEE_BIG_ENDIAN ++# endif ++# ifdef __ARMWEL__ + # define __IEEE_BYTES_LITTLE_ENDIAN + # endif + #endif +diff -Naur newlib-1.16.0.orig/newlib/libc/include/machine/setjmp.h newlib-1.16.0/newlib/libc/include/machine/setjmp.h +--- newlib-1.16.0.orig/newlib/libc/include/machine/setjmp.h 2007-11-07 22:42:24.000000000 +0100 ++++ newlib-1.16.0/newlib/libc/include/machine/setjmp.h 2008-08-27 09:16:12.000000000 +0200 +@@ -27,7 +27,7 @@ + + /* necv70 was 9 as well. */ + +-#ifdef __mc68000__ ++#if defined(__m68k__) || defined(__mc68000__) + /* + * onsstack,sigmask,sp,pc,psl,d2-d7,a2-a6, + * fp2-fp7 for 68881. +@@ -268,6 +268,12 @@ + # define _CYGWIN_WORKING_SIGSETJMP + #endif + ++#ifdef _POSIX_THREADS ++#define __SIGMASK_FUNC pthread_sigmask ++#else ++#define __SIGMASK_FUNC sigprocmask ++#endif ++ + #if defined(__GNUC__) + + #define sigsetjmp(env, savemask) \ +@@ -275,7 +281,7 @@ + ({ \ + sigjmp_buf *_sjbuf = &(env); \ + ((*_sjbuf)[_SAVEMASK] = savemask,\ +- sigprocmask (SIG_SETMASK, 0, (sigset_t *)((*_sjbuf) + _SIGMASK)),\ ++ __SIGMASK_FUNC (SIG_SETMASK, 0, (sigset_t *)((*_sjbuf) + _SIGMASK)),\ + setjmp (*_sjbuf)); \ + }) + +@@ -284,7 +290,7 @@ + ({ \ + sigjmp_buf *_sjbuf = &(env); \ + ((((*_sjbuf)[_SAVEMASK]) ? \ +- sigprocmask (SIG_SETMASK, (sigset_t *)((*_sjbuf) + _SIGMASK), 0)\ ++ __SIGMASK_FUNC (SIG_SETMASK, (sigset_t *)((*_sjbuf) + _SIGMASK), 0)\ + : 0), \ + longjmp (*_sjbuf, val)); \ + }) +@@ -292,15 +298,21 @@ + #else /* !__GNUC__ */ + + #define sigsetjmp(env, savemask) ((env)[_SAVEMASK] = savemask,\ +- sigprocmask (SIG_SETMASK, 0, (sigset_t *) ((env) + _SIGMASK)),\ ++ __SIGMASK_FUNC (SIG_SETMASK, 0, (sigset_t *) ((env) + _SIGMASK)),\ + setjmp (env)) + + #define siglongjmp(env, val) ((((env)[_SAVEMASK])?\ +- sigprocmask (SIG_SETMASK, (sigset_t *) ((env) + _SIGMASK), 0):0),\ ++ __SIGMASK_FUNC (SIG_SETMASK, (sigset_t *) ((env) + _SIGMASK), 0):0),\ + longjmp (env, val)) + + #endif + ++/* POSIX _setjmp/_longjmp macros, maintained for XSI compatibility. These ++ are equivalent to sigsetjmp/siglongjmp when not saving the signal mask. ++ New applications should use sigsetjmp/siglongjmp instead. */ ++#define _setjmp(env) sigsetjmp ((env), 0) ++#define _longjmp(env, val) siglongjmp ((env), (val)) ++ + #ifdef __cplusplus + } + #endif +diff -Naur newlib-1.16.0.orig/newlib/libc/include/pthread.h newlib-1.16.0/newlib/libc/include/pthread.h +--- newlib-1.16.0.orig/newlib/libc/include/pthread.h 2006-09-14 00:09:27.000000000 +0200 ++++ newlib-1.16.0/newlib/libc/include/pthread.h 2008-08-27 09:16:12.000000000 +0200 +@@ -283,14 +283,6 @@ + int _EXFUN(pthread_getcpuclockid, + (pthread_t __pthread_id, clockid_t *__clock_id)); + +-/* CPU-time Clock Thread Creation Attribute, P1003.4b/D8, p. 59 */ +- +-int _EXFUN(pthread_attr_setcputime, +- (pthread_attr_t *__attr, int __clock_allowed)); +- +-int _EXFUN(pthread_attr_getcputime, +- (pthread_attr_t *__attr, int *__clock_allowed)); +- + #endif /* defined(_POSIX_THREAD_CPUTIME) */ + + +diff -Naur newlib-1.16.0.orig/newlib/libc/include/stdint.h newlib-1.16.0/newlib/libc/include/stdint.h +--- newlib-1.16.0.orig/newlib/libc/include/stdint.h 2006-08-16 23:39:43.000000000 +0200 ++++ newlib-1.16.0/newlib/libc/include/stdint.h 2008-08-27 09:16:12.000000000 +0200 +@@ -348,8 +348,7 @@ + #endif + + /* This must match size_t in stddef.h, currently long unsigned int */ +-#define SIZE_MIN (-__STDINT_EXP(LONG_MAX) - 1L) +-#define SIZE_MAX __STDINT_EXP(LONG_MAX) ++#define SIZE_MAX (__STDINT_EXP(LONG_MAX) * 2UL + 1) + + /* This must match sig_atomic_t in <signal.h> (currently int) */ + #define SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1) +@@ -393,6 +392,9 @@ + #define UINTMAX_C(x) x##UL + #endif + ++#ifdef __rtems__ ++#include <machine/stdint.h> ++#endif + + #ifdef __cplusplus + } +diff -Naur newlib-1.16.0.orig/newlib/libc/include/sys/features.h newlib-1.16.0/newlib/libc/include/sys/features.h +--- newlib-1.16.0.orig/newlib/libc/include/sys/features.h 2007-12-19 19:51:19.000000000 +0100 ++++ newlib-1.16.0/newlib/libc/include/sys/features.h 2008-08-27 09:16:12.000000000 +0200 +@@ -38,11 +38,12 @@ + #define _POSIX_MEMLOCK_RANGE 1 + #define _POSIX_MEMORY_PROTECTION 1 + #define _POSIX_MESSAGE_PASSING 1 ++#define _POSIX_MONOTONIC_CLOCK 200112L + #define _POSIX_PRIORITIZED_IO 1 + #define _POSIX_PRIORITY_SCHEDULING 1 + #define _POSIX_REALTIME_SIGNALS 1 + #define _POSIX_SEMAPHORES 1 +-#define _POSIX_SHARED_MEMORY_OBJECTS 1 ++/* #define _POSIX_SHARED_MEMORY_OBJECTS 1 */ + #define _POSIX_SYNCHRONIZED_IO 1 + #define _POSIX_TIMERS 1 + #define _POSIX_BARRIERS 200112L +diff -Naur newlib-1.16.0.orig/newlib/libc/include/sys/_types.h newlib-1.16.0/newlib/libc/include/sys/_types.h +--- newlib-1.16.0.orig/newlib/libc/include/sys/_types.h 2007-09-18 22:05:17.000000000 +0200 ++++ newlib-1.16.0/newlib/libc/include/sys/_types.h 2008-08-27 09:16:12.000000000 +0200 +@@ -84,4 +84,7 @@ + typedef void *_iconv_t; + #endif + ++typedef long * __intptr_t; ++typedef unsigned long* __uintptr_t; ++ + #endif /* _SYS__TYPES_H */ +diff -Naur newlib-1.16.0.orig/newlib/libc/include/sys/unistd.h newlib-1.16.0/newlib/libc/include/sys/unistd.h +--- newlib-1.16.0.orig/newlib/libc/include/sys/unistd.h 2007-11-08 17:20:12.000000000 +0100 ++++ newlib-1.16.0/newlib/libc/include/sys/unistd.h 2008-08-27 09:16:12.000000000 +0200 +@@ -219,13 +219,11 @@ + char * _EXFUN(mktemp, (char *)); + #endif + +-#if defined(__CYGWIN__) || defined(__SPU__) ++#if defined(__CYGWIN__) || defined(__SPU__) || defined(__rtems__) + void _EXFUN(sync, (void)); +-#elif defined(__rtems__) +-int _EXFUN(sync, (void)); + #endif + +-int _EXFUN(readlink, (const char *__path, char *__buf, int __buflen)); ++ssize_t _EXFUN(readlink, (const char *__path, char *__buf, size_t __buflen)); + int _EXFUN(symlink, (const char *__name1, const char *__name2)); + + #define F_OK 0 +diff -Naur newlib-1.16.0.orig/newlib/libc/include/_syslist.h newlib-1.16.0/newlib/libc/include/_syslist.h +--- newlib-1.16.0.orig/newlib/libc/include/_syslist.h 2005-08-22 23:13:35.000000000 +0200 ++++ newlib-1.16.0/newlib/libc/include/_syslist.h 2008-08-27 09:16:12.000000000 +0200 +@@ -11,6 +11,7 @@ + #define _fstat fstat + #define _getpid getpid + #define _gettimeofday gettimeofday ++#define _isatty isatty + #define _kill kill + #define _link link + #define _lseek lseek +diff -Naur newlib-1.16.0.orig/newlib/libc/include/time.h newlib-1.16.0/newlib/libc/include/time.h +--- newlib-1.16.0.orig/newlib/libc/include/time.h 2005-11-18 16:57:24.000000000 +0100 ++++ newlib-1.16.0/newlib/libc/include/time.h 2008-08-27 09:16:12.000000000 +0200 +@@ -226,6 +226,16 @@ + + #endif + ++#if defined(_POSIX_MONOTONIC_CLOCK) ++ ++/* The identifier for the system-wide monotonic clock, which is defined ++ as a clock whose value cannot be set via clock_settime() and which ++ cannot have backward clock jumps. */ ++ ++#define CLOCK_MONOTONIC (clockid_t)4 ++ ++#endif ++ + #if defined(_POSIX_CPUTIME) + + /* Accessing a Process CPU-time CLock, P1003.4b/D8, p. 55 */ +diff -Naur newlib-1.16.0.orig/newlib/libc/machine/arm/machine/endian.h newlib-1.16.0/newlib/libc/machine/arm/machine/endian.h +--- newlib-1.16.0.orig/newlib/libc/machine/arm/machine/endian.h 2004-05-07 22:29:24.000000000 +0200 ++++ newlib-1.16.0/newlib/libc/machine/arm/machine/endian.h 1970-01-01 01:00:00.000000000 +0100 +@@ -1,12 +0,0 @@ +-/* ARM configuration file */ +- +-#ifndef _MACHINE_ENDIAN_H +-# define _MACHINE_ENDIAN_H +- +-#ifdef __ARMEB__ +-#define BYTE_ORDER BIG_ENDIAN +-#else +-#define BYTE_ORDER LITTLE_ENDIAN +-#endif +- +-#endif +diff -Naur newlib-1.16.0.orig/newlib/libc/stdlib/getopt.c newlib-1.16.0/newlib/libc/stdlib/getopt.c +--- newlib-1.16.0.orig/newlib/libc/stdlib/getopt.c 2007-05-29 23:26:59.000000000 +0200 ++++ newlib-1.16.0/newlib/libc/stdlib/getopt.c 2008-08-27 09:16:12.000000000 +0200 +@@ -90,6 +90,9 @@ + #include <getopt.h> + + /* macros */ ++#define NO_ARG 0 ++#define REQUIRED_ARG 1 ++#define OPTIONAL_ARG 2 + + /* types */ + typedef enum GETOPT_ORDERING_T +@@ -100,16 +103,19 @@ + } GETOPT_ORDERING_T; + + /* globally-defined variables */ +-char *optarg = NULL; ++char *optarg = 0; + int optind = 0; + int opterr = 1; + int optopt = '?'; + ++/* static variables */ ++static int optwhere = 0; ++ + /* functions */ + + /* reverse_argv_elements: reverses num elements starting at argv */ + static void +-reverse_argv_elements (char ** argv, int num) ++reverse_argv_elements (char **argv, int num) + { + int i; + char *tmp; +@@ -126,281 +132,346 @@ + static void + permute (char *const argv[], int len1, int len2) + { +- reverse_argv_elements ((char **)argv, len1); +- reverse_argv_elements ((char **)argv, len1 + len2); +- reverse_argv_elements ((char **)argv, len2); ++ reverse_argv_elements ((char **) argv, len1); ++ reverse_argv_elements ((char **) argv, len1 + len2); ++ reverse_argv_elements ((char **) argv, len2); + } + + /* is_option: is this argv-element an option or the end of the option list? */ + static int + is_option (char *argv_element, int only) + { +- return ((argv_element == NULL) +- || (argv_element[0] == '-') || (only && argv_element[0] == '+')); ++ return ((argv_element == 0) ++ || (argv_element[0] == '-') || (only && argv_element[0] == '+')); ++} ++ ++/* read_globals: read the values from the globals into a getopt_data ++ structure */ ++static void ++read_globals (struct getopt_data *data) ++{ ++ data->optarg = optarg; ++ data->optind = optind; ++ data->opterr = opterr; ++ data->optopt = optopt; ++ data->optwhere = optwhere; ++} ++ ++/* write_globals: write the values into the globals from a getopt_data ++ structure */ ++static void ++write_globals (struct getopt_data *data) ++{ ++ optarg = data->optarg; ++ optind = data->optind; ++ opterr = data->opterr; ++ optopt = data->optopt; ++ optwhere = data->optwhere; + } + + /* getopt_internal: the function that does all the dirty work */ + static int + getopt_internal (int argc, char *const argv[], const char *shortopts, +- const struct option *longopts, int *longind, int only) ++ const struct option *longopts, int *longind, int only, ++ struct getopt_data *data) + { + GETOPT_ORDERING_T ordering = PERMUTE; +- static size_t optwhere = 0; + size_t permute_from = 0; + int num_nonopts = 0; + int optindex = 0; + size_t match_chars = 0; +- char *possible_arg = NULL; ++ char *possible_arg = 0; + int longopt_match = -1; + int has_arg = -1; +- char *cp = NULL; ++ char *cp = 0; + int arg_next = 0; + + /* first, deal with silly parameters and easy stuff */ +- if (argc == 0 || argv == NULL || (shortopts == NULL && longopts == NULL)) +- return EOF; +- if (optind >= argc || argv[optind] == NULL) ++ if (argc == 0 || argv == 0 || (shortopts == 0 && longopts == 0) ++ || data->optind >= argc || argv[data->optind] == 0) + return EOF; +- if (strcmp (argv[optind], "--") == 0) ++ if (strcmp (argv[data->optind], "--") == 0) + { +- optind++; ++ data->optind++; + return EOF; + } ++ + /* if this is our first time through */ +- if (optind == 0) +- optind = optwhere = 1; ++ if (data->optind == 0) ++ data->optind = data->optwhere = 1; + + /* define ordering */ +- if (shortopts != NULL && (*shortopts == '-' || *shortopts == '+')) ++ if (shortopts != 0 && (*shortopts == '-' || *shortopts == '+')) + { + ordering = (*shortopts == '-') ? RETURN_IN_ORDER : REQUIRE_ORDER; + shortopts++; + } + else +- ordering = (getenv ("POSIXLY_CORRECT") != NULL) ? REQUIRE_ORDER : PERMUTE; ++ ordering = (getenv ("POSIXLY_CORRECT") != 0) ? REQUIRE_ORDER : PERMUTE; + + /* + * based on ordering, find our next option, if we're at the beginning of + * one + */ +- if (optwhere == 1) ++ if (data->optwhere == 1) + { + switch (ordering) +- { +- case PERMUTE: +- permute_from = optind; +- num_nonopts = 0; +- while (!is_option (argv[optind], only)) +- { +- optind++; +- num_nonopts++; +- } +- if (argv[optind] == NULL) +- { +- /* no more options */ +- optind = permute_from; +- return EOF; +- } +- else if (strcmp (argv[optind], "--") == 0) +- { +- /* no more options, but have to get `--' out of the way */ +- permute (argv + permute_from, num_nonopts, 1); +- optind = permute_from + 1; +- return EOF; +- } +- break; +- case RETURN_IN_ORDER: +- if (!is_option (argv[optind], only)) +- { +- optarg = argv[optind++]; +- return (optopt = 1); +- } +- break; +- case REQUIRE_ORDER: +- if (!is_option (argv[optind], only)) +- return EOF; +- break; +- } ++ { ++ default: /* shouldn't happen */ ++ case PERMUTE: ++ permute_from = data->optind; ++ num_nonopts = 0; ++ while (!is_option (argv[data->optind], only)) ++ { ++ data->optind++; ++ num_nonopts++; ++ } ++ if (argv[data->optind] == 0) ++ { ++ /* no more options */ ++ data->optind = permute_from; ++ return EOF; ++ } ++ else if (strcmp (argv[data->optind], "--") == 0) ++ { ++ /* no more options, but have to get `--' out of the way */ ++ permute (argv + permute_from, num_nonopts, 1); ++ data->optind = permute_from + 1; ++ return EOF; ++ } ++ break; ++ case RETURN_IN_ORDER: ++ if (!is_option (argv[data->optind], only)) ++ { ++ data->optarg = argv[data->optind++]; ++ return (data->optopt = 1); ++ } ++ break; ++ case REQUIRE_ORDER: ++ if (!is_option (argv[data->optind], only)) ++ return EOF; ++ break; ++ } + } + /* we've got an option, so parse it */ + + /* first, is it a long option? */ +- if (longopts != NULL +- && (memcmp (argv[optind], "--", 2) == 0 +- || (only && argv[optind][0] == '+')) && optwhere == 1) ++ if (longopts != 0 ++ && (memcmp (argv[data->optind], "--", 2) == 0 ++ || (only && argv[data->optind][0] == '+')) && data->optwhere == 1) + { + /* handle long options */ +- if (memcmp (argv[optind], "--", 2) == 0) +- optwhere = 2; ++ if (memcmp (argv[data->optind], "--", 2) == 0) ++ data->optwhere = 2; + longopt_match = -1; +- possible_arg = strchr (argv[optind] + optwhere, '='); +- if (possible_arg == NULL) +- { +- /* no =, so next argv might be arg */ +- match_chars = strlen (argv[optind]); +- possible_arg = argv[optind] + match_chars; +- match_chars = match_chars - optwhere; +- } ++ possible_arg = strchr (argv[data->optind] + data->optwhere, '='); ++ if (possible_arg == 0) ++ { ++ /* no =, so next argv might be arg */ ++ match_chars = strlen (argv[data->optind]); ++ possible_arg = argv[data->optind] + match_chars; ++ match_chars = match_chars - data->optwhere; ++ } + else +- match_chars = (possible_arg - argv[optind]) - optwhere; +- for (optindex = 0; longopts[optindex].name != NULL; optindex++) +- { +- if (memcmp (argv[optind] + optwhere, +- longopts[optindex].name, match_chars) == 0) +- { +- /* do we have an exact match? */ +- if (match_chars == (int) (strlen (longopts[optindex].name))) +- { +- longopt_match = optindex; +- break; +- } +- /* do any characters match? */ +- else +- { +- if (longopt_match < 0) +- longopt_match = optindex; +- else +- { +- /* we have ambiguous options */ +- if (opterr) +- fprintf (stderr, "%s: option `%s' is ambiguous " +- "(could be `--%s' or `--%s')\n", +- argv[0], +- argv[optind], +- longopts[longopt_match].name, +- longopts[optindex].name); +- return (optopt = '?'); +- } +- } +- } +- } ++ match_chars = (possible_arg - argv[data->optind]) - data->optwhere; ++ for (optindex = 0; longopts[optindex].name != 0; ++optindex) ++ { ++ if (memcmp ++ (argv[data->optind] + data->optwhere, longopts[optindex].name, ++ match_chars) == 0) ++ { ++ /* do we have an exact match? */ ++ if (match_chars == (int) (strlen (longopts[optindex].name))) ++ { ++ longopt_match = optindex; ++ break; ++ } ++ /* do any characters match? */ ++ else ++ { ++ if (longopt_match < 0) ++ longopt_match = optindex; ++ else ++ { ++ /* we have ambiguous options */ ++ if (data->opterr) ++ fprintf (stderr, "%s: option `%s' is ambiguous " ++ "(could be `--%s' or `--%s')\n", ++ argv[0], ++ argv[data->optind], ++ longopts[longopt_match].name, ++ longopts[optindex].name); ++ return (data->optopt = '?'); ++ } ++ } ++ } ++ } + if (longopt_match >= 0) +- has_arg = longopts[longopt_match].has_arg; ++ has_arg = longopts[longopt_match].has_arg; + } ++ + /* if we didn't find a long option, is it a short option? */ +- if (longopt_match < 0 && shortopts != NULL) ++ if (longopt_match < 0 && shortopts != 0) + { +- cp = strchr (shortopts, argv[optind][optwhere]); +- if (cp == NULL) +- { +- /* couldn't find option in shortopts */ +- if (opterr) +- fprintf (stderr, +- "%s: invalid option -- `-%c'\n", +- argv[0], argv[optind][optwhere]); +- optwhere++; +- if (argv[optind][optwhere] == '\0') +- { +- optind++; +- optwhere = 1; +- } +- return (optopt = '?'); +- } ++ cp = strchr (shortopts, argv[data->optind][data->optwhere]); ++ if (cp == 0) ++ { ++ /* couldn't find option in shortopts */ ++ if (data->opterr) ++ fprintf (stderr, ++ "%s: invalid option -- `-%c'\n", ++ argv[0], argv[data->optind][data->optwhere]); ++ data->optwhere++; ++ if (argv[data->optind][data->optwhere] == '\0') ++ { ++ data->optind++; ++ data->optwhere = 1; ++ } ++ return (data->optopt = '?'); ++ } + has_arg = ((cp[1] == ':') +- ? ((cp[2] == ':') ? OPTIONAL_ARG : REQUIRED_ARG) : NO_ARG); +- possible_arg = argv[optind] + optwhere + 1; +- optopt = *cp; ++ ? ((cp[2] == ':') ? OPTIONAL_ARG : REQUIRED_ARG) : NO_ARG); ++ possible_arg = argv[data->optind] + data->optwhere + 1; ++ data->optopt = *cp; + } +- /* get argument and reset optwhere */ ++ ++ /* get argument and reset data->optwhere */ + arg_next = 0; + switch (has_arg) + { + case OPTIONAL_ARG: + if (*possible_arg == '=') +- possible_arg++; +- if (*possible_arg != '\0') +- { +- optarg = possible_arg; +- optwhere = 1; +- } +- else +- optarg = NULL; ++ possible_arg++; ++ data->optarg = (*possible_arg != '\0') ? possible_arg : 0; ++ data->optwhere = 1; + break; + case REQUIRED_ARG: + if (*possible_arg == '=') +- possible_arg++; ++ possible_arg++; + if (*possible_arg != '\0') +- { +- optarg = possible_arg; +- optwhere = 1; +- } +- else if (optind + 1 >= argc) +- { +- if (opterr) +- { +- fprintf (stderr, "%s: argument required for option `", argv[0]); +- if (longopt_match >= 0) +- fprintf (stderr, "--%s'\n", longopts[longopt_match].name); +- else +- fprintf (stderr, "-%c'\n", *cp); +- } +- optind++; +- return (optopt = ':'); +- } ++ { ++ data->optarg = possible_arg; ++ data->optwhere = 1; ++ } ++ else if (data->optind + 1 >= argc) ++ { ++ if (data->opterr) ++ { ++ fprintf (stderr, "%s: argument required for option `", argv[0]); ++ if (longopt_match >= 0) ++ fprintf (stderr, "--%s'\n", longopts[longopt_match].name); ++ else ++ fprintf (stderr, "-%c'\n", *cp); ++ } ++ data->optind++; ++ return (data->optopt = ':'); ++ } + else +- { +- optarg = argv[optind + 1]; +- arg_next = 1; +- optwhere = 1; +- } ++ { ++ data->optarg = argv[data->optind + 1]; ++ arg_next = 1; ++ data->optwhere = 1; ++ } + break; ++ default: /* shouldn't happen */ + case NO_ARG: + if (longopt_match < 0) +- { +- optwhere++; +- if (argv[optind][optwhere] == '\0') +- optwhere = 1; +- } ++ { ++ data->optwhere++; ++ if (argv[data->optind][data->optwhere] == '\0') ++ data->optwhere = 1; ++ } + else +- optwhere = 1; +- optarg = NULL; ++ data->optwhere = 1; ++ data->optarg = 0; + break; + } + +- /* do we have to permute or otherwise modify optind? */ +- if (ordering == PERMUTE && optwhere == 1 && num_nonopts != 0) ++ /* do we have to permute or otherwise modify data->optind? */ ++ if (ordering == PERMUTE && data->optwhere == 1 && num_nonopts != 0) + { + permute (argv + permute_from, num_nonopts, 1 + arg_next); +- optind = permute_from + 1 + arg_next; ++ data->optind = permute_from + 1 + arg_next; + } +- else if (optwhere == 1) +- optind = optind + 1 + arg_next; ++ else if (data->optwhere == 1) ++ data->optind = data->optind + 1 + arg_next; + + /* finally return */ + if (longopt_match >= 0) + { +- if (longind != NULL) +- *longind = longopt_match; +- if (longopts[longopt_match].flag != NULL) +- { +- *(longopts[longopt_match].flag) = longopts[longopt_match].val; +- return 0; +- } ++ if (longind != 0) ++ *longind = longopt_match; ++ if (longopts[longopt_match].flag != 0) ++ { ++ *(longopts[longopt_match].flag) = longopts[longopt_match].val; ++ return 0; ++ } + else +- return longopts[longopt_match].val; ++ return longopts[longopt_match].val; + } + else +- return optopt; ++ return data->optopt; + } + + int + getopt (int argc, char *const argv[], const char *optstring) + { +- return getopt_internal (argc, argv, optstring, NULL, NULL, 0); ++ struct getopt_data data; ++ int r; ++ ++ read_globals (&data); ++ r = getopt_internal (argc, argv, optstring, 0, 0, 0, &data); ++ write_globals (&data); ++ return r; + } + + int + getopt_long (int argc, char *const argv[], const char *shortopts, +- const struct option *longopts, int *longind) ++ const struct option *longopts, int *longind) + { +- return getopt_internal (argc, argv, shortopts, longopts, longind, 0); ++ struct getopt_data data; ++ int r; ++ ++ read_globals (&data); ++ r = getopt_internal (argc, argv, shortopts, longopts, longind, 0, &data); ++ write_globals (&data); ++ return r; + } + + int + getopt_long_only (int argc, char *const argv[], const char *shortopts, +- const struct option *longopts, int *longind) ++ const struct option *longopts, int *longind) ++{ ++ struct getopt_data data; ++ int r; ++ ++ read_globals (&data); ++ r = getopt_internal (argc, argv, shortopts, longopts, longind, 1, &data); ++ write_globals (&data); ++ return r; ++} ++ ++int ++__getopt_r (int argc, char *const argv[], const char *optstring, ++ struct getopt_data *data) ++{ ++ return getopt_internal (argc, argv, optstring, 0, 0, 0, data); ++} ++ ++int ++__getopt_long_r (int argc, char *const argv[], const char *shortopts, ++ const struct option *longopts, int *longind, ++ struct getopt_data *data) ++{ ++ return getopt_internal (argc, argv, shortopts, longopts, longind, 0, data); ++} ++ ++int ++__getopt_long_only_r (int argc, char *const argv[], const char *shortopts, ++ const struct option *longopts, int *longind, ++ struct getopt_data *data) + { +- return getopt_internal (argc, argv, shortopts, longopts, longind, 1); ++ return getopt_internal (argc, argv, shortopts, longopts, longind, 1, data); + } + + /* end of file GETOPT.C */ +diff -Naur newlib-1.16.0.orig/newlib/libc/sys/rtems/machine/stdint.h newlib-1.16.0/newlib/libc/sys/rtems/machine/stdint.h +--- newlib-1.16.0.orig/newlib/libc/sys/rtems/machine/stdint.h 1970-01-01 01:00:00.000000000 +0100 ++++ newlib-1.16.0/newlib/libc/sys/rtems/machine/stdint.h 2008-08-27 09:16:12.000000000 +0200 +@@ -0,0 +1,35 @@ ++/* ++ * ++ */ ++#ifndef _MACHINE_STDINT_H ++#define _MACHINE_STDINT_H ++ ++#ifndef _STDINT_H ++#error machine/stdint.h is an internal file and must not be directly included ++#endif ++ ++#ifndef __rtems__ ++#error machine/stdint.h is an RTEMS specific internal file and must not be used otherwise ++#endif ++ ++#if defined(__sparc__) \ ++ || defined(__powerpc__) || defined(__PPC__) \ ++ || defined(__mips__) \ ++ || defined(__sh__) \ ++ || defined(__AVR__) \ ++ || defined(_C4x) || defined(_C3x) \ ++ || defined(__H8300__) ++/* PTRDIFF_TYPE = int */ ++#define __ptrint_t_int_defined 1 ++#endif ++ ++#if defined(__i386__) \ ++ || defined(__m68k__) \ ++ || defined(__bfin__) \ ++ || defined(__arm__) \ ++ || defined(__H8300S__) || defined(__H8300H__) ++/* PTRDIFF_TYPE = long */ ++#define __ptrint_t_long_defined 1 ++#endif ++ ++#endif +diff -Naur newlib-1.16.0.orig/newlib/libc/sys/rtems/sys/param.h newlib-1.16.0/newlib/libc/sys/rtems/sys/param.h +--- newlib-1.16.0.orig/newlib/libc/sys/rtems/sys/param.h 2004-05-07 22:29:24.000000000 +0200 ++++ newlib-1.16.0/newlib/libc/sys/rtems/sys/param.h 2008-08-27 09:16:12.000000000 +0200 +@@ -93,7 +93,6 @@ + #include <sys/resource.h> + #include <sys/ucred.h> + #include <sys/uio.h> +-#include <sys/rtprio.h> + + #ifndef FALSE + #define FALSE 0 +diff -Naur newlib-1.16.0.orig/newlib/Makefile.am newlib-1.16.0/newlib/Makefile.am +--- newlib-1.16.0.orig/newlib/Makefile.am 2007-05-24 19:33:29.000000000 +0200 ++++ newlib-1.16.0/newlib/Makefile.am 2008-08-27 09:16:12.000000000 +0200 +@@ -81,7 +81,7 @@ + libc.a + endif + +-noinst_DATA = stmp-targ-include ++BUILT_SOURCES = stmp-targ-include + + toollib_DATA = $(CRT0) $(CRT1) + +@@ -186,9 +186,6 @@ + + $(CRT1_DIR)$(CRT1): ; @true + +- +-all-recursive: stmp-targ-include +- + # The targ-include directory just holds the includes files for the + # particular system and machine we have been configured for. It is + # used while building. +diff -Naur newlib-1.16.0.orig/newlib/Makefile.in newlib-1.16.0/newlib/Makefile.in +--- newlib-1.16.0.orig/newlib/Makefile.in 2007-12-19 23:36:26.000000000 +0100 ++++ newlib-1.16.0/newlib/Makefile.in 2008-08-27 09:16:12.000000000 +0200 +@@ -105,7 +105,7 @@ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive + toollibDATA_INSTALL = $(INSTALL_DATA) +-DATA = $(noinst_DATA) $(toollib_DATA) ++DATA = $(toollib_DATA) + ETAGS = etags + CTAGS = ctags + DEJATOOL = $(PACKAGE) +@@ -339,7 +339,7 @@ + @USE_LIBTOOL_FALSE@toollib_LIBRARIES = libm.a \ + @USE_LIBTOOL_FALSE@ libc.a + +-noinst_DATA = stmp-targ-include ++BUILT_SOURCES = stmp-targ-include + toollib_DATA = $(CRT0) $(CRT1) + + # The functions ldexp, frexp and modf are traditionally supplied in +@@ -398,7 +398,7 @@ + + # dejagnu support + RUNTESTFLAGS = +-all: newlib.h ++all: $(BUILT_SOURCES) newlib.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + + .SUFFIXES: +@@ -703,14 +703,16 @@ + done + check-am: + $(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU +-check: check-recursive ++check: $(BUILT_SOURCES) ++ $(MAKE) $(AM_MAKEFLAGS) check-recursive + all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(DATA) newlib.h + installdirs: installdirs-recursive + installdirs-am: + for dir in "$(DESTDIR)$(toollibdir)" "$(DESTDIR)$(toollibdir)" "$(DESTDIR)$(toollibdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +-install: install-recursive ++install: $(BUILT_SOURCES) ++ $(MAKE) $(AM_MAKEFLAGS) install-recursive + install-exec: install-exec-recursive + install-data: install-data-recursive + uninstall: uninstall-recursive +@@ -735,6 +737,7 @@ + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." ++ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + clean: clean-recursive + + clean-am: clean-generic clean-libtool clean-toollibLIBRARIES \ +@@ -853,8 +856,6 @@ + + $(CRT1_DIR)$(CRT1): ; @true + +-all-recursive: stmp-targ-include +- + # The targ-include directory just holds the includes files for the + # particular system and machine we have been configured for. It is + # used while building. diff --git a/contrib/crossrpms/patches/newlib-1.16.0-rtems4.9-20080827.diff b/contrib/crossrpms/patches/newlib-1.16.0-rtems4.9-20080827.diff new file mode 100644 index 0000000000..5729274f0e --- /dev/null +++ b/contrib/crossrpms/patches/newlib-1.16.0-rtems4.9-20080827.diff @@ -0,0 +1,1041 @@ +diff -Naur newlib-1.16.0.orig/newlib/libc/include/getopt.h newlib-1.16.0/newlib/libc/include/getopt.h +--- newlib-1.16.0.orig/newlib/libc/include/getopt.h 2006-01-04 22:21:52.000000000 +0100 ++++ newlib-1.16.0/newlib/libc/include/getopt.h 2008-08-27 09:16:12.000000000 +0200 +@@ -89,31 +89,40 @@ + + /* include files needed by this include file */ + +-/* macros defined by this include file */ +-#define NO_ARG 0 +-#define REQUIRED_ARG 1 +-#define OPTIONAL_ARG 2 +- +-/* types defined by this include file */ +- +-struct option +-{ +- char *name; /* the name of the long option */ +- int has_arg; /* one of the above macros */ +- int *flag; /* determines if getopt_long() returns a +- * value for a long option; if it is +- * non-NULL, 0 is returned as a function +- * value and the value of val is stored in +- * the area pointed to by flag. Otherwise, +- * val is returned. */ +- int val; /* determines the value to return if flag is +- * NULL. */ +-}; ++ /* These #defines are to keep the namespace clear... */ ++#define getopt_r __getopt_r ++#define getopt_long_r __getopt_long_r ++#define getopt_long_only_r __getopt_long_only_r + + #ifdef __cplusplus + extern "C" + { +-#endif ++ ++#endif /* __cplusplus */ ++ ++/* types defined by this include file */ ++ struct option ++ { ++ char *name; /* the name of the long option */ ++ int has_arg; /* one of the above macros */ ++ int *flag; /* determines if getopt_long() returns a ++ * value for a long option; if it is ++ * non-NULL, 0 is returned as a function ++ * value and the value of val is stored in ++ * the area pointed to by flag. Otherwise, ++ * val is returned. */ ++ int val; /* determines the value to return if flag is ++ * NULL. */ ++ ++ }; ++ ++ /* The getopt_data structure is for reentrancy. Its members are similar to ++ the externally-defined variables. */ ++ typedef struct getopt_data ++ { ++ char *optarg; ++ int optind, opterr, optopt, optwhere; ++ } getopt_data; + + /* externally-defined variables */ + extern char *optarg; +@@ -122,14 +131,35 @@ + extern int optopt; + + /* function prototypes */ +- int _EXFUN (getopt, (int __argc, char *const __argv[], const char *__optstring)); +- int _EXFUN (getopt_long, (int __argc, char *const __argv[], const char *__shortopts, const struct option *__longopts, int *__longind)); +- int _EXFUN (getopt_long_only, (int __argc, char *const __argv[], const char *__shortopts, const struct option *__longopts, int *__longind)); ++ int _EXFUN (getopt, ++ (int __argc, char *const __argv[], const char *__optstring)); ++ ++ int _EXFUN (getopt_long, ++ (int __argc, char *const __argv[], const char *__shortopts, ++ const struct option * __longopts, int *__longind)); ++ ++ int _EXFUN (getopt_long_only, ++ (int __argc, char *const __argv[], const char *__shortopts, ++ const struct option * __longopts, int *__longind)); ++ ++ int _EXFUN (__getopt_r, ++ (int __argc, char *const __argv[], const char *__optstring, ++ struct getopt_data * __data)); ++ ++ int _EXFUN (__getopt_long_r, ++ (int __argc, char *const __argv[], const char *__shortopts, ++ const struct option * __longopts, int *__longind, ++ struct getopt_data * __data)); ++ ++ int _EXFUN (__getopt_long_only_r, ++ (int __argc, char *const __argv[], const char *__shortopts, ++ const struct option * __longopts, int *__longind, ++ struct getopt_data * __data)); + + #ifdef __cplusplus + }; + +-#endif ++#endif /* __cplusplus */ + + #endif /* GETOPT_H */ + +diff -Naur newlib-1.16.0.orig/newlib/libc/include/inttypes.h newlib-1.16.0/newlib/libc/include/inttypes.h +--- newlib-1.16.0.orig/newlib/libc/include/inttypes.h 2005-12-16 20:03:12.000000000 +0100 ++++ newlib-1.16.0/newlib/libc/include/inttypes.h 2008-08-27 09:16:12.000000000 +0200 +@@ -242,9 +242,12 @@ + #define SCNxMAX __SCNMAX(x) + + /* ptr types */ +-#if __have_longlong64 +-#define __PRIPTR(x) __STRINGIFY(ll##x) +-#define __SCNPTR(x) __STRINGIFY(ll##x) ++#if __ptrint_t_long_defined ++#define __PRIPTR(x) __STRINGIFY(l##x) ++#define __SCNPTR(x) __STRINGIFY(l##x) ++#elif __ptrint_t_int_defined ++#define __PRIPTR(x) __STRINGIFY(x) ++#define __SCNPTR(x) __STRINGIFY(x) + #elif __have_long64 + #define __PRIPTR(x) __STRINGIFY(l##x) + #define __SCNPTR(x) __STRINGIFY(l##x) +diff -Naur newlib-1.16.0.orig/newlib/libc/include/machine/ieeefp.h newlib-1.16.0/newlib/libc/include/machine/ieeefp.h +--- newlib-1.16.0.orig/newlib/libc/include/machine/ieeefp.h 2007-11-07 22:42:24.000000000 +0100 ++++ newlib-1.16.0/newlib/libc/include/machine/ieeefp.h 2008-08-27 09:17:54.000000000 +0200 +@@ -62,8 +62,12 @@ + # define __IEEE_BIG_ENDIAN + # endif + #else +-# define __IEEE_BIG_ENDIAN + # ifdef __ARMEL__ ++# define __IEEE_LITTLE_ENDIAN ++# else ++# define __IEEE_BIG_ENDIAN ++# endif ++# ifdef __ARMWEL__ + # define __IEEE_BYTES_LITTLE_ENDIAN + # endif + #endif +diff -Naur newlib-1.16.0.orig/newlib/libc/include/machine/setjmp.h newlib-1.16.0/newlib/libc/include/machine/setjmp.h +--- newlib-1.16.0.orig/newlib/libc/include/machine/setjmp.h 2007-11-07 22:42:24.000000000 +0100 ++++ newlib-1.16.0/newlib/libc/include/machine/setjmp.h 2008-08-27 09:16:12.000000000 +0200 +@@ -27,7 +27,7 @@ + + /* necv70 was 9 as well. */ + +-#ifdef __mc68000__ ++#if defined(__m68k__) || defined(__mc68000__) + /* + * onsstack,sigmask,sp,pc,psl,d2-d7,a2-a6, + * fp2-fp7 for 68881. +@@ -268,6 +268,12 @@ + # define _CYGWIN_WORKING_SIGSETJMP + #endif + ++#ifdef _POSIX_THREADS ++#define __SIGMASK_FUNC pthread_sigmask ++#else ++#define __SIGMASK_FUNC sigprocmask ++#endif ++ + #if defined(__GNUC__) + + #define sigsetjmp(env, savemask) \ +@@ -275,7 +281,7 @@ + ({ \ + sigjmp_buf *_sjbuf = &(env); \ + ((*_sjbuf)[_SAVEMASK] = savemask,\ +- sigprocmask (SIG_SETMASK, 0, (sigset_t *)((*_sjbuf) + _SIGMASK)),\ ++ __SIGMASK_FUNC (SIG_SETMASK, 0, (sigset_t *)((*_sjbuf) + _SIGMASK)),\ + setjmp (*_sjbuf)); \ + }) + +@@ -284,7 +290,7 @@ + ({ \ + sigjmp_buf *_sjbuf = &(env); \ + ((((*_sjbuf)[_SAVEMASK]) ? \ +- sigprocmask (SIG_SETMASK, (sigset_t *)((*_sjbuf) + _SIGMASK), 0)\ ++ __SIGMASK_FUNC (SIG_SETMASK, (sigset_t *)((*_sjbuf) + _SIGMASK), 0)\ + : 0), \ + longjmp (*_sjbuf, val)); \ + }) +@@ -292,15 +298,21 @@ + #else /* !__GNUC__ */ + + #define sigsetjmp(env, savemask) ((env)[_SAVEMASK] = savemask,\ +- sigprocmask (SIG_SETMASK, 0, (sigset_t *) ((env) + _SIGMASK)),\ ++ __SIGMASK_FUNC (SIG_SETMASK, 0, (sigset_t *) ((env) + _SIGMASK)),\ + setjmp (env)) + + #define siglongjmp(env, val) ((((env)[_SAVEMASK])?\ +- sigprocmask (SIG_SETMASK, (sigset_t *) ((env) + _SIGMASK), 0):0),\ ++ __SIGMASK_FUNC (SIG_SETMASK, (sigset_t *) ((env) + _SIGMASK), 0):0),\ + longjmp (env, val)) + + #endif + ++/* POSIX _setjmp/_longjmp macros, maintained for XSI compatibility. These ++ are equivalent to sigsetjmp/siglongjmp when not saving the signal mask. ++ New applications should use sigsetjmp/siglongjmp instead. */ ++#define _setjmp(env) sigsetjmp ((env), 0) ++#define _longjmp(env, val) siglongjmp ((env), (val)) ++ + #ifdef __cplusplus + } + #endif +diff -Naur newlib-1.16.0.orig/newlib/libc/include/pthread.h newlib-1.16.0/newlib/libc/include/pthread.h +--- newlib-1.16.0.orig/newlib/libc/include/pthread.h 2006-09-14 00:09:27.000000000 +0200 ++++ newlib-1.16.0/newlib/libc/include/pthread.h 2008-08-27 09:16:12.000000000 +0200 +@@ -283,14 +283,6 @@ + int _EXFUN(pthread_getcpuclockid, + (pthread_t __pthread_id, clockid_t *__clock_id)); + +-/* CPU-time Clock Thread Creation Attribute, P1003.4b/D8, p. 59 */ +- +-int _EXFUN(pthread_attr_setcputime, +- (pthread_attr_t *__attr, int __clock_allowed)); +- +-int _EXFUN(pthread_attr_getcputime, +- (pthread_attr_t *__attr, int *__clock_allowed)); +- + #endif /* defined(_POSIX_THREAD_CPUTIME) */ + + +diff -Naur newlib-1.16.0.orig/newlib/libc/include/stdint.h newlib-1.16.0/newlib/libc/include/stdint.h +--- newlib-1.16.0.orig/newlib/libc/include/stdint.h 2006-08-16 23:39:43.000000000 +0200 ++++ newlib-1.16.0/newlib/libc/include/stdint.h 2008-08-27 09:16:12.000000000 +0200 +@@ -348,8 +348,7 @@ + #endif + + /* This must match size_t in stddef.h, currently long unsigned int */ +-#define SIZE_MIN (-__STDINT_EXP(LONG_MAX) - 1L) +-#define SIZE_MAX __STDINT_EXP(LONG_MAX) ++#define SIZE_MAX (__STDINT_EXP(LONG_MAX) * 2UL + 1) + + /* This must match sig_atomic_t in <signal.h> (currently int) */ + #define SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1) +@@ -393,6 +392,9 @@ + #define UINTMAX_C(x) x##UL + #endif + ++#ifdef __rtems__ ++#include <machine/stdint.h> ++#endif + + #ifdef __cplusplus + } +diff -Naur newlib-1.16.0.orig/newlib/libc/include/sys/features.h newlib-1.16.0/newlib/libc/include/sys/features.h +--- newlib-1.16.0.orig/newlib/libc/include/sys/features.h 2007-12-19 19:51:19.000000000 +0100 ++++ newlib-1.16.0/newlib/libc/include/sys/features.h 2008-08-27 09:16:12.000000000 +0200 +@@ -38,11 +38,12 @@ + #define _POSIX_MEMLOCK_RANGE 1 + #define _POSIX_MEMORY_PROTECTION 1 + #define _POSIX_MESSAGE_PASSING 1 ++#define _POSIX_MONOTONIC_CLOCK 200112L + #define _POSIX_PRIORITIZED_IO 1 + #define _POSIX_PRIORITY_SCHEDULING 1 + #define _POSIX_REALTIME_SIGNALS 1 + #define _POSIX_SEMAPHORES 1 +-#define _POSIX_SHARED_MEMORY_OBJECTS 1 ++/* #define _POSIX_SHARED_MEMORY_OBJECTS 1 */ + #define _POSIX_SYNCHRONIZED_IO 1 + #define _POSIX_TIMERS 1 + #define _POSIX_BARRIERS 200112L +diff -Naur newlib-1.16.0.orig/newlib/libc/include/sys/_types.h newlib-1.16.0/newlib/libc/include/sys/_types.h +--- newlib-1.16.0.orig/newlib/libc/include/sys/_types.h 2007-09-18 22:05:17.000000000 +0200 ++++ newlib-1.16.0/newlib/libc/include/sys/_types.h 2008-08-27 09:16:12.000000000 +0200 +@@ -84,4 +84,7 @@ + typedef void *_iconv_t; + #endif + ++typedef long * __intptr_t; ++typedef unsigned long* __uintptr_t; ++ + #endif /* _SYS__TYPES_H */ +diff -Naur newlib-1.16.0.orig/newlib/libc/include/sys/unistd.h newlib-1.16.0/newlib/libc/include/sys/unistd.h +--- newlib-1.16.0.orig/newlib/libc/include/sys/unistd.h 2007-11-08 17:20:12.000000000 +0100 ++++ newlib-1.16.0/newlib/libc/include/sys/unistd.h 2008-08-27 09:16:12.000000000 +0200 +@@ -219,13 +219,11 @@ + char * _EXFUN(mktemp, (char *)); + #endif + +-#if defined(__CYGWIN__) || defined(__SPU__) ++#if defined(__CYGWIN__) || defined(__SPU__) || defined(__rtems__) + void _EXFUN(sync, (void)); +-#elif defined(__rtems__) +-int _EXFUN(sync, (void)); + #endif + +-int _EXFUN(readlink, (const char *__path, char *__buf, int __buflen)); ++ssize_t _EXFUN(readlink, (const char *__path, char *__buf, size_t __buflen)); + int _EXFUN(symlink, (const char *__name1, const char *__name2)); + + #define F_OK 0 +diff -Naur newlib-1.16.0.orig/newlib/libc/include/_syslist.h newlib-1.16.0/newlib/libc/include/_syslist.h +--- newlib-1.16.0.orig/newlib/libc/include/_syslist.h 2005-08-22 23:13:35.000000000 +0200 ++++ newlib-1.16.0/newlib/libc/include/_syslist.h 2008-08-27 09:16:12.000000000 +0200 +@@ -11,6 +11,7 @@ + #define _fstat fstat + #define _getpid getpid + #define _gettimeofday gettimeofday ++#define _isatty isatty + #define _kill kill + #define _link link + #define _lseek lseek +diff -Naur newlib-1.16.0.orig/newlib/libc/include/time.h newlib-1.16.0/newlib/libc/include/time.h +--- newlib-1.16.0.orig/newlib/libc/include/time.h 2005-11-18 16:57:24.000000000 +0100 ++++ newlib-1.16.0/newlib/libc/include/time.h 2008-08-27 09:16:12.000000000 +0200 +@@ -226,6 +226,16 @@ + + #endif + ++#if defined(_POSIX_MONOTONIC_CLOCK) ++ ++/* The identifier for the system-wide monotonic clock, which is defined ++ as a clock whose value cannot be set via clock_settime() and which ++ cannot have backward clock jumps. */ ++ ++#define CLOCK_MONOTONIC (clockid_t)4 ++ ++#endif ++ + #if defined(_POSIX_CPUTIME) + + /* Accessing a Process CPU-time CLock, P1003.4b/D8, p. 55 */ +diff -Naur newlib-1.16.0.orig/newlib/libc/machine/arm/machine/endian.h newlib-1.16.0/newlib/libc/machine/arm/machine/endian.h +--- newlib-1.16.0.orig/newlib/libc/machine/arm/machine/endian.h 2004-05-07 22:29:24.000000000 +0200 ++++ newlib-1.16.0/newlib/libc/machine/arm/machine/endian.h 1970-01-01 01:00:00.000000000 +0100 +@@ -1,12 +0,0 @@ +-/* ARM configuration file */ +- +-#ifndef _MACHINE_ENDIAN_H +-# define _MACHINE_ENDIAN_H +- +-#ifdef __ARMEB__ +-#define BYTE_ORDER BIG_ENDIAN +-#else +-#define BYTE_ORDER LITTLE_ENDIAN +-#endif +- +-#endif +diff -Naur newlib-1.16.0.orig/newlib/libc/stdlib/getopt.c newlib-1.16.0/newlib/libc/stdlib/getopt.c +--- newlib-1.16.0.orig/newlib/libc/stdlib/getopt.c 2007-05-29 23:26:59.000000000 +0200 ++++ newlib-1.16.0/newlib/libc/stdlib/getopt.c 2008-08-27 09:16:12.000000000 +0200 +@@ -90,6 +90,9 @@ + #include <getopt.h> + + /* macros */ ++#define NO_ARG 0 ++#define REQUIRED_ARG 1 ++#define OPTIONAL_ARG 2 + + /* types */ + typedef enum GETOPT_ORDERING_T +@@ -100,16 +103,19 @@ + } GETOPT_ORDERING_T; + + /* globally-defined variables */ +-char *optarg = NULL; ++char *optarg = 0; + int optind = 0; + int opterr = 1; + int optopt = '?'; + ++/* static variables */ ++static int optwhere = 0; ++ + /* functions */ + + /* reverse_argv_elements: reverses num elements starting at argv */ + static void +-reverse_argv_elements (char ** argv, int num) ++reverse_argv_elements (char **argv, int num) + { + int i; + char *tmp; +@@ -126,281 +132,346 @@ + static void + permute (char *const argv[], int len1, int len2) + { +- reverse_argv_elements ((char **)argv, len1); +- reverse_argv_elements ((char **)argv, len1 + len2); +- reverse_argv_elements ((char **)argv, len2); ++ reverse_argv_elements ((char **) argv, len1); ++ reverse_argv_elements ((char **) argv, len1 + len2); ++ reverse_argv_elements ((char **) argv, len2); + } + + /* is_option: is this argv-element an option or the end of the option list? */ + static int + is_option (char *argv_element, int only) + { +- return ((argv_element == NULL) +- || (argv_element[0] == '-') || (only && argv_element[0] == '+')); ++ return ((argv_element == 0) ++ || (argv_element[0] == '-') || (only && argv_element[0] == '+')); ++} ++ ++/* read_globals: read the values from the globals into a getopt_data ++ structure */ ++static void ++read_globals (struct getopt_data *data) ++{ ++ data->optarg = optarg; ++ data->optind = optind; ++ data->opterr = opterr; ++ data->optopt = optopt; ++ data->optwhere = optwhere; ++} ++ ++/* write_globals: write the values into the globals from a getopt_data ++ structure */ ++static void ++write_globals (struct getopt_data *data) ++{ ++ optarg = data->optarg; ++ optind = data->optind; ++ opterr = data->opterr; ++ optopt = data->optopt; ++ optwhere = data->optwhere; + } + + /* getopt_internal: the function that does all the dirty work */ + static int + getopt_internal (int argc, char *const argv[], const char *shortopts, +- const struct option *longopts, int *longind, int only) ++ const struct option *longopts, int *longind, int only, ++ struct getopt_data *data) + { + GETOPT_ORDERING_T ordering = PERMUTE; +- static size_t optwhere = 0; + size_t permute_from = 0; + int num_nonopts = 0; + int optindex = 0; + size_t match_chars = 0; +- char *possible_arg = NULL; ++ char *possible_arg = 0; + int longopt_match = -1; + int has_arg = -1; +- char *cp = NULL; ++ char *cp = 0; + int arg_next = 0; + + /* first, deal with silly parameters and easy stuff */ +- if (argc == 0 || argv == NULL || (shortopts == NULL && longopts == NULL)) +- return EOF; +- if (optind >= argc || argv[optind] == NULL) ++ if (argc == 0 || argv == 0 || (shortopts == 0 && longopts == 0) ++ || data->optind >= argc || argv[data->optind] == 0) + return EOF; +- if (strcmp (argv[optind], "--") == 0) ++ if (strcmp (argv[data->optind], "--") == 0) + { +- optind++; ++ data->optind++; + return EOF; + } ++ + /* if this is our first time through */ +- if (optind == 0) +- optind = optwhere = 1; ++ if (data->optind == 0) ++ data->optind = data->optwhere = 1; + + /* define ordering */ +- if (shortopts != NULL && (*shortopts == '-' || *shortopts == '+')) ++ if (shortopts != 0 && (*shortopts == '-' || *shortopts == '+')) + { + ordering = (*shortopts == '-') ? RETURN_IN_ORDER : REQUIRE_ORDER; + shortopts++; + } + else +- ordering = (getenv ("POSIXLY_CORRECT") != NULL) ? REQUIRE_ORDER : PERMUTE; ++ ordering = (getenv ("POSIXLY_CORRECT") != 0) ? REQUIRE_ORDER : PERMUTE; + + /* + * based on ordering, find our next option, if we're at the beginning of + * one + */ +- if (optwhere == 1) ++ if (data->optwhere == 1) + { + switch (ordering) +- { +- case PERMUTE: +- permute_from = optind; +- num_nonopts = 0; +- while (!is_option (argv[optind], only)) +- { +- optind++; +- num_nonopts++; +- } +- if (argv[optind] == NULL) +- { +- /* no more options */ +- optind = permute_from; +- return EOF; +- } +- else if (strcmp (argv[optind], "--") == 0) +- { +- /* no more options, but have to get `--' out of the way */ +- permute (argv + permute_from, num_nonopts, 1); +- optind = permute_from + 1; +- return EOF; +- } +- break; +- case RETURN_IN_ORDER: +- if (!is_option (argv[optind], only)) +- { +- optarg = argv[optind++]; +- return (optopt = 1); +- } +- break; +- case REQUIRE_ORDER: +- if (!is_option (argv[optind], only)) +- return EOF; +- break; +- } ++ { ++ default: /* shouldn't happen */ ++ case PERMUTE: ++ permute_from = data->optind; ++ num_nonopts = 0; ++ while (!is_option (argv[data->optind], only)) ++ { ++ data->optind++; ++ num_nonopts++; ++ } ++ if (argv[data->optind] == 0) ++ { ++ /* no more options */ ++ data->optind = permute_from; ++ return EOF; ++ } ++ else if (strcmp (argv[data->optind], "--") == 0) ++ { ++ /* no more options, but have to get `--' out of the way */ ++ permute (argv + permute_from, num_nonopts, 1); ++ data->optind = permute_from + 1; ++ return EOF; ++ } ++ break; ++ case RETURN_IN_ORDER: ++ if (!is_option (argv[data->optind], only)) ++ { ++ data->optarg = argv[data->optind++]; ++ return (data->optopt = 1); ++ } ++ break; ++ case REQUIRE_ORDER: ++ if (!is_option (argv[data->optind], only)) ++ return EOF; ++ break; ++ } + } + /* we've got an option, so parse it */ + + /* first, is it a long option? */ +- if (longopts != NULL +- && (memcmp (argv[optind], "--", 2) == 0 +- || (only && argv[optind][0] == '+')) && optwhere == 1) ++ if (longopts != 0 ++ && (memcmp (argv[data->optind], "--", 2) == 0 ++ || (only && argv[data->optind][0] == '+')) && data->optwhere == 1) + { + /* handle long options */ +- if (memcmp (argv[optind], "--", 2) == 0) +- optwhere = 2; ++ if (memcmp (argv[data->optind], "--", 2) == 0) ++ data->optwhere = 2; + longopt_match = -1; +- possible_arg = strchr (argv[optind] + optwhere, '='); +- if (possible_arg == NULL) +- { +- /* no =, so next argv might be arg */ +- match_chars = strlen (argv[optind]); +- possible_arg = argv[optind] + match_chars; +- match_chars = match_chars - optwhere; +- } ++ possible_arg = strchr (argv[data->optind] + data->optwhere, '='); ++ if (possible_arg == 0) ++ { ++ /* no =, so next argv might be arg */ ++ match_chars = strlen (argv[data->optind]); ++ possible_arg = argv[data->optind] + match_chars; ++ match_chars = match_chars - data->optwhere; ++ } + else +- match_chars = (possible_arg - argv[optind]) - optwhere; +- for (optindex = 0; longopts[optindex].name != NULL; optindex++) +- { +- if (memcmp (argv[optind] + optwhere, +- longopts[optindex].name, match_chars) == 0) +- { +- /* do we have an exact match? */ +- if (match_chars == (int) (strlen (longopts[optindex].name))) +- { +- longopt_match = optindex; +- break; +- } +- /* do any characters match? */ +- else +- { +- if (longopt_match < 0) +- longopt_match = optindex; +- else +- { +- /* we have ambiguous options */ +- if (opterr) +- fprintf (stderr, "%s: option `%s' is ambiguous " +- "(could be `--%s' or `--%s')\n", +- argv[0], +- argv[optind], +- longopts[longopt_match].name, +- longopts[optindex].name); +- return (optopt = '?'); +- } +- } +- } +- } ++ match_chars = (possible_arg - argv[data->optind]) - data->optwhere; ++ for (optindex = 0; longopts[optindex].name != 0; ++optindex) ++ { ++ if (memcmp ++ (argv[data->optind] + data->optwhere, longopts[optindex].name, ++ match_chars) == 0) ++ { ++ /* do we have an exact match? */ ++ if (match_chars == (int) (strlen (longopts[optindex].name))) ++ { ++ longopt_match = optindex; ++ break; ++ } ++ /* do any characters match? */ ++ else ++ { ++ if (longopt_match < 0) ++ longopt_match = optindex; ++ else ++ { ++ /* we have ambiguous options */ ++ if (data->opterr) ++ fprintf (stderr, "%s: option `%s' is ambiguous " ++ "(could be `--%s' or `--%s')\n", ++ argv[0], ++ argv[data->optind], ++ longopts[longopt_match].name, ++ longopts[optindex].name); ++ return (data->optopt = '?'); ++ } ++ } ++ } ++ } + if (longopt_match >= 0) +- has_arg = longopts[longopt_match].has_arg; ++ has_arg = longopts[longopt_match].has_arg; + } ++ + /* if we didn't find a long option, is it a short option? */ +- if (longopt_match < 0 && shortopts != NULL) ++ if (longopt_match < 0 && shortopts != 0) + { +- cp = strchr (shortopts, argv[optind][optwhere]); +- if (cp == NULL) +- { +- /* couldn't find option in shortopts */ +- if (opterr) +- fprintf (stderr, +- "%s: invalid option -- `-%c'\n", +- argv[0], argv[optind][optwhere]); +- optwhere++; +- if (argv[optind][optwhere] == '\0') +- { +- optind++; +- optwhere = 1; +- } +- return (optopt = '?'); +- } ++ cp = strchr (shortopts, argv[data->optind][data->optwhere]); ++ if (cp == 0) ++ { ++ /* couldn't find option in shortopts */ ++ if (data->opterr) ++ fprintf (stderr, ++ "%s: invalid option -- `-%c'\n", ++ argv[0], argv[data->optind][data->optwhere]); ++ data->optwhere++; ++ if (argv[data->optind][data->optwhere] == '\0') ++ { ++ data->optind++; ++ data->optwhere = 1; ++ } ++ return (data->optopt = '?'); ++ } + has_arg = ((cp[1] == ':') +- ? ((cp[2] == ':') ? OPTIONAL_ARG : REQUIRED_ARG) : NO_ARG); +- possible_arg = argv[optind] + optwhere + 1; +- optopt = *cp; ++ ? ((cp[2] == ':') ? OPTIONAL_ARG : REQUIRED_ARG) : NO_ARG); ++ possible_arg = argv[data->optind] + data->optwhere + 1; ++ data->optopt = *cp; + } +- /* get argument and reset optwhere */ ++ ++ /* get argument and reset data->optwhere */ + arg_next = 0; + switch (has_arg) + { + case OPTIONAL_ARG: + if (*possible_arg == '=') +- possible_arg++; +- if (*possible_arg != '\0') +- { +- optarg = possible_arg; +- optwhere = 1; +- } +- else +- optarg = NULL; ++ possible_arg++; ++ data->optarg = (*possible_arg != '\0') ? possible_arg : 0; ++ data->optwhere = 1; + break; + case REQUIRED_ARG: + if (*possible_arg == '=') +- possible_arg++; ++ possible_arg++; + if (*possible_arg != '\0') +- { +- optarg = possible_arg; +- optwhere = 1; +- } +- else if (optind + 1 >= argc) +- { +- if (opterr) +- { +- fprintf (stderr, "%s: argument required for option `", argv[0]); +- if (longopt_match >= 0) +- fprintf (stderr, "--%s'\n", longopts[longopt_match].name); +- else +- fprintf (stderr, "-%c'\n", *cp); +- } +- optind++; +- return (optopt = ':'); +- } ++ { ++ data->optarg = possible_arg; ++ data->optwhere = 1; ++ } ++ else if (data->optind + 1 >= argc) ++ { ++ if (data->opterr) ++ { ++ fprintf (stderr, "%s: argument required for option `", argv[0]); ++ if (longopt_match >= 0) ++ fprintf (stderr, "--%s'\n", longopts[longopt_match].name); ++ else ++ fprintf (stderr, "-%c'\n", *cp); ++ } ++ data->optind++; ++ return (data->optopt = ':'); ++ } + else +- { +- optarg = argv[optind + 1]; +- arg_next = 1; +- optwhere = 1; +- } ++ { ++ data->optarg = argv[data->optind + 1]; ++ arg_next = 1; ++ data->optwhere = 1; ++ } + break; ++ default: /* shouldn't happen */ + case NO_ARG: + if (longopt_match < 0) +- { +- optwhere++; +- if (argv[optind][optwhere] == '\0') +- optwhere = 1; +- } ++ { ++ data->optwhere++; ++ if (argv[data->optind][data->optwhere] == '\0') ++ data->optwhere = 1; ++ } + else +- optwhere = 1; +- optarg = NULL; ++ data->optwhere = 1; ++ data->optarg = 0; + break; + } + +- /* do we have to permute or otherwise modify optind? */ +- if (ordering == PERMUTE && optwhere == 1 && num_nonopts != 0) ++ /* do we have to permute or otherwise modify data->optind? */ ++ if (ordering == PERMUTE && data->optwhere == 1 && num_nonopts != 0) + { + permute (argv + permute_from, num_nonopts, 1 + arg_next); +- optind = permute_from + 1 + arg_next; ++ data->optind = permute_from + 1 + arg_next; + } +- else if (optwhere == 1) +- optind = optind + 1 + arg_next; ++ else if (data->optwhere == 1) ++ data->optind = data->optind + 1 + arg_next; + + /* finally return */ + if (longopt_match >= 0) + { +- if (longind != NULL) +- *longind = longopt_match; +- if (longopts[longopt_match].flag != NULL) +- { +- *(longopts[longopt_match].flag) = longopts[longopt_match].val; +- return 0; +- } ++ if (longind != 0) ++ *longind = longopt_match; ++ if (longopts[longopt_match].flag != 0) ++ { ++ *(longopts[longopt_match].flag) = longopts[longopt_match].val; ++ return 0; ++ } + else +- return longopts[longopt_match].val; ++ return longopts[longopt_match].val; + } + else +- return optopt; ++ return data->optopt; + } + + int + getopt (int argc, char *const argv[], const char *optstring) + { +- return getopt_internal (argc, argv, optstring, NULL, NULL, 0); ++ struct getopt_data data; ++ int r; ++ ++ read_globals (&data); ++ r = getopt_internal (argc, argv, optstring, 0, 0, 0, &data); ++ write_globals (&data); ++ return r; + } + + int + getopt_long (int argc, char *const argv[], const char *shortopts, +- const struct option *longopts, int *longind) ++ const struct option *longopts, int *longind) + { +- return getopt_internal (argc, argv, shortopts, longopts, longind, 0); ++ struct getopt_data data; ++ int r; ++ ++ read_globals (&data); ++ r = getopt_internal (argc, argv, shortopts, longopts, longind, 0, &data); ++ write_globals (&data); ++ return r; + } + + int + getopt_long_only (int argc, char *const argv[], const char *shortopts, +- const struct option *longopts, int *longind) ++ const struct option *longopts, int *longind) ++{ ++ struct getopt_data data; ++ int r; ++ ++ read_globals (&data); ++ r = getopt_internal (argc, argv, shortopts, longopts, longind, 1, &data); ++ write_globals (&data); ++ return r; ++} ++ ++int ++__getopt_r (int argc, char *const argv[], const char *optstring, ++ struct getopt_data *data) ++{ ++ return getopt_internal (argc, argv, optstring, 0, 0, 0, data); ++} ++ ++int ++__getopt_long_r (int argc, char *const argv[], const char *shortopts, ++ const struct option *longopts, int *longind, ++ struct getopt_data *data) ++{ ++ return getopt_internal (argc, argv, shortopts, longopts, longind, 0, data); ++} ++ ++int ++__getopt_long_only_r (int argc, char *const argv[], const char *shortopts, ++ const struct option *longopts, int *longind, ++ struct getopt_data *data) + { +- return getopt_internal (argc, argv, shortopts, longopts, longind, 1); ++ return getopt_internal (argc, argv, shortopts, longopts, longind, 1, data); + } + + /* end of file GETOPT.C */ +diff -Naur newlib-1.16.0.orig/newlib/libc/sys/rtems/machine/stdint.h newlib-1.16.0/newlib/libc/sys/rtems/machine/stdint.h +--- newlib-1.16.0.orig/newlib/libc/sys/rtems/machine/stdint.h 1970-01-01 01:00:00.000000000 +0100 ++++ newlib-1.16.0/newlib/libc/sys/rtems/machine/stdint.h 2008-08-27 09:16:12.000000000 +0200 +@@ -0,0 +1,35 @@ ++/* ++ * ++ */ ++#ifndef _MACHINE_STDINT_H ++#define _MACHINE_STDINT_H ++ ++#ifndef _STDINT_H ++#error machine/stdint.h is an internal file and must not be directly included ++#endif ++ ++#ifndef __rtems__ ++#error machine/stdint.h is an RTEMS specific internal file and must not be used otherwise ++#endif ++ ++#if defined(__sparc__) \ ++ || defined(__powerpc__) || defined(__PPC__) \ ++ || defined(__mips__) \ ++ || defined(__sh__) \ ++ || defined(__AVR__) \ ++ || defined(_C4x) || defined(_C3x) \ ++ || defined(__H8300__) ++/* PTRDIFF_TYPE = int */ ++#define __ptrint_t_int_defined 1 ++#endif ++ ++#if defined(__i386__) \ ++ || defined(__m68k__) \ ++ || defined(__bfin__) \ ++ || defined(__arm__) \ ++ || defined(__H8300S__) || defined(__H8300H__) ++/* PTRDIFF_TYPE = long */ ++#define __ptrint_t_long_defined 1 ++#endif ++ ++#endif +diff -Naur newlib-1.16.0.orig/newlib/libc/sys/rtems/sys/param.h newlib-1.16.0/newlib/libc/sys/rtems/sys/param.h +--- newlib-1.16.0.orig/newlib/libc/sys/rtems/sys/param.h 2004-05-07 22:29:24.000000000 +0200 ++++ newlib-1.16.0/newlib/libc/sys/rtems/sys/param.h 2008-08-27 09:16:12.000000000 +0200 +@@ -93,7 +93,6 @@ + #include <sys/resource.h> + #include <sys/ucred.h> + #include <sys/uio.h> +-#include <sys/rtprio.h> + + #ifndef FALSE + #define FALSE 0 +diff -Naur newlib-1.16.0.orig/newlib/Makefile.am newlib-1.16.0/newlib/Makefile.am +--- newlib-1.16.0.orig/newlib/Makefile.am 2007-05-24 19:33:29.000000000 +0200 ++++ newlib-1.16.0/newlib/Makefile.am 2008-08-27 09:16:12.000000000 +0200 +@@ -81,7 +81,7 @@ + libc.a + endif + +-noinst_DATA = stmp-targ-include ++BUILT_SOURCES = stmp-targ-include + + toollib_DATA = $(CRT0) $(CRT1) + +@@ -186,9 +186,6 @@ + + $(CRT1_DIR)$(CRT1): ; @true + +- +-all-recursive: stmp-targ-include +- + # The targ-include directory just holds the includes files for the + # particular system and machine we have been configured for. It is + # used while building. +diff -Naur newlib-1.16.0.orig/newlib/Makefile.in newlib-1.16.0/newlib/Makefile.in +--- newlib-1.16.0.orig/newlib/Makefile.in 2007-12-19 23:36:26.000000000 +0100 ++++ newlib-1.16.0/newlib/Makefile.in 2008-08-27 09:16:12.000000000 +0200 +@@ -105,7 +105,7 @@ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive + toollibDATA_INSTALL = $(INSTALL_DATA) +-DATA = $(noinst_DATA) $(toollib_DATA) ++DATA = $(toollib_DATA) + ETAGS = etags + CTAGS = ctags + DEJATOOL = $(PACKAGE) +@@ -339,7 +339,7 @@ + @USE_LIBTOOL_FALSE@toollib_LIBRARIES = libm.a \ + @USE_LIBTOOL_FALSE@ libc.a + +-noinst_DATA = stmp-targ-include ++BUILT_SOURCES = stmp-targ-include + toollib_DATA = $(CRT0) $(CRT1) + + # The functions ldexp, frexp and modf are traditionally supplied in +@@ -398,7 +398,7 @@ + + # dejagnu support + RUNTESTFLAGS = +-all: newlib.h ++all: $(BUILT_SOURCES) newlib.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + + .SUFFIXES: +@@ -703,14 +703,16 @@ + done + check-am: + $(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU +-check: check-recursive ++check: $(BUILT_SOURCES) ++ $(MAKE) $(AM_MAKEFLAGS) check-recursive + all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(DATA) newlib.h + installdirs: installdirs-recursive + installdirs-am: + for dir in "$(DESTDIR)$(toollibdir)" "$(DESTDIR)$(toollibdir)" "$(DESTDIR)$(toollibdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +-install: install-recursive ++install: $(BUILT_SOURCES) ++ $(MAKE) $(AM_MAKEFLAGS) install-recursive + install-exec: install-exec-recursive + install-data: install-data-recursive + uninstall: uninstall-recursive +@@ -735,6 +737,7 @@ + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." ++ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + clean: clean-recursive + + clean-am: clean-generic clean-libtool clean-toollibLIBRARIES \ +@@ -853,8 +856,6 @@ + + $(CRT1_DIR)$(CRT1): ; @true + +-all-recursive: stmp-targ-include +- + # The targ-include directory just holds the includes files for the + # particular system and machine we have been configured for. It is + # used while building. |