]> rtime.felk.cvut.cz Git - rtems-devel.git/blobdiff - newlib-patches/1.15.0/newlib-1.15.0-rtems4.8-20070413.diff
Update of the build and patches to rtems-4.7.1
[rtems-devel.git] / newlib-patches / 1.15.0 / newlib-1.15.0-rtems4.8-20070413.diff
diff --git a/newlib-patches/1.15.0/newlib-1.15.0-rtems4.8-20070413.diff b/newlib-patches/1.15.0/newlib-1.15.0-rtems4.8-20070413.diff
new file mode 100644 (file)
index 0000000..853e2b1
--- /dev/null
@@ -0,0 +1,1449 @@
+diff -uNr newlib-1.15.0.orig/newlib/libc/include/inttypes.h newlib-1.15.0/newlib/libc/include/inttypes.h
+--- newlib-1.15.0.orig/newlib/libc/include/inttypes.h  2005-12-16 20:03:12.000000000 +0100
++++ newlib-1.15.0/newlib/libc/include/inttypes.h       2007-04-13 10:41:47.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 -uNr newlib-1.15.0.orig/newlib/libc/include/machine/setjmp.h newlib-1.15.0/newlib/libc/include/machine/setjmp.h
+--- newlib-1.15.0.orig/newlib/libc/include/machine/setjmp.h    2006-12-18 17:48:03.000000000 +0100
++++ newlib-1.15.0/newlib/libc/include/machine/setjmp.h 2007-04-13 10:41:47.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.
+diff -uNr newlib-1.15.0.orig/newlib/libc/include/stdint.h newlib-1.15.0/newlib/libc/include/stdint.h
+--- newlib-1.15.0.orig/newlib/libc/include/stdint.h    2006-08-16 23:39:43.000000000 +0200
++++ newlib-1.15.0/newlib/libc/include/stdint.h 2007-04-13 10:41:47.000000000 +0200
+@@ -393,6 +393,9 @@
+ #define UINTMAX_C(x)  x##UL
+ #endif
++#ifdef __rtems__
++#include <machine/stdint.h>
++#endif
+ #ifdef __cplusplus
+ }
+diff -uNr newlib-1.15.0.orig/newlib/libc/include/sys/errno.h newlib-1.15.0/newlib/libc/include/sys/errno.h
+--- newlib-1.15.0.orig/newlib/libc/include/sys/errno.h 2002-09-24 16:10:12.000000000 +0200
++++ newlib-1.15.0/newlib/libc/include/sys/errno.h      2007-04-13 10:41:47.000000000 +0200
+@@ -148,6 +148,7 @@
+ #define ECASECLASH 137  /* Filename exists with different case */
+ #define EILSEQ 138
+ #define EOVERFLOW 139 /* Value too large for defined data type */
++#define ECANCELED 140 /* Operation canceled. */
+ /* From cygwin32.  */
+ #define EWOULDBLOCK EAGAIN    /* Operation would block */
+diff -uNr newlib-1.15.0.orig/newlib/libc/include/sys/features.h newlib-1.15.0/newlib/libc/include/sys/features.h
+--- newlib-1.15.0.orig/newlib/libc/include/sys/features.h      2006-09-14 00:09:27.000000000 +0200
++++ newlib-1.15.0/newlib/libc/include/sys/features.h   2007-04-13 10:41:47.000000000 +0200
+@@ -38,6 +38,7 @@
+ #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
+@@ -81,17 +82,89 @@
+ #endif
+ #ifdef __CYGWIN__
+-# define _POSIX_JOB_CONTROL                   1
+-# define _POSIX_SAVED_IDS                     0
+-# define _POSIX_VERSION                               199009L
+-# define _POSIX_THREADS                         1
+-# define _POSIX_THREAD_PROCESS_SHARED           1
+-# define _POSIX_THREAD_SAFE_FUNCTIONS           1
+-# define _POSIX_THREAD_PRIORITY_SCHEDULING      1
+-# define _POSIX_THREAD_ATTR_STACKSIZE           1
+-# define _POSIX_SEMAPHORES                      1
+-# define _POSIX_TIMERS                                1
+-# define _POSIX_MEMLOCK_RANGE                 1
++#define _POSIX_VERSION                                200112L
++#define _POSIX2_VERSION                               200112L
++#define _XOPEN_VERSION                                   600
++
++#define _POSIX_ADVISORY_INFO                  200112L
++/* #define _POSIX_ASYNCHRONOUS_IO                 -1 */
++/* #define _POSIX_BARRIERS                        -1 */
++#define _POSIX_CHOWN_RESTRICTED                            1
++/* #define _POSIX_CLOCK_SELECTION                 -1 */
++/* #define _POSIX_CPUTIME                         -1 */
++#define _POSIX_FSYNC                          200112L
++#define _POSIX_IPV6                           200112L
++#define _POSIX_JOB_CONTROL                         1
++#define _POSIX_MAPPED_FILES                   200112L
++/* #define _POSIX_MEMLOCK                         -1 */
++#define _POSIX_MEMLOCK_RANGE                  200112L
++#define _POSIX_MEMORY_PROTECTION              200112L
++/* #define _POSIX_MESSAGE_PASSING                 -1 */
++/* #define _POSIX_MONOTONIC_CLOCK                 -1 */
++#define _POSIX_NO_TRUNC                                    1
++/* #define _POSIX_PRIORITIZED_IO                  -1 */
++#define _POSIX_PRIORITY_SCHEDULING            200112L
++#define _POSIX_RAW_SOCKETS                    200112L
++#define _POSIX_READER_WRITER_LOCKS            200112L
++#define _POSIX_REALTIME_SIGNALS                       200112L
++#define _POSIX_REGEXP                              1
++#define _POSIX_SAVED_IDS                           1
++#define _POSIX_SEMAPHORES                          1
++/* #define _POSIX_SHARED_MEMORY_OBJECTS                   -1 */
++#define _POSIX_SHELL                               1
++/* #define _POSIX_SPAWN                                   -1 */
++/* #define _POSIX_SPIN_LOCKS                      -1 */
++/* #define _POSIX_SPORADIC_SERVER                 -1 */
++#define _POSIX_SYNCHRONIZED_IO                        200112L
++/* #define _POSIX_THREAD_ATTR_STACKADDR                   -1 */
++#define _POSIX_THREAD_ATTR_STACKSIZE  200112L
++/* #define _POSIX_THREAD_CPUTIME                  -1 */
++/* #define _POSIX_THREAD_PRIO_INHERIT             -1 */
++/* #define _POSIX_THREAD_PRIO_PROTECT             -1 */
++#define _POSIX_THREAD_PRIORITY_SCHEDULING     200112L
++#define _POSIX_THREAD_PROCESS_SHARED          200112L
++#define _POSIX_THREAD_SAFE_FUNCTIONS          200112L
++/* #define _POSIX_THREAD_SPORADIC_SERVER          -1 */
++#define _POSIX_THREADS                                200112L
++/* #define _POSIX_TIMEOUTS                        -1 */
++#define _POSIX_TIMERS                              1
++/* #define _POSIX_TRACE                                   -1 */
++/* #define _POSIX_TRACE_EVENT_FILTER              -1 */
++/* #define _POSIX_TRACE_INHERIT                           -1 */
++/* #define _POSIX_TRACE_LOG                       -1 */
++/* #define _POSIX_TYPED_MEMORY_OBJECTS                    -1 */
++#define _POSIX_VDISABLE                                  '\0'
++#define _POSIX2_C_BIND                                200112L
++#define _POSIX2_C_DEV                         200112L
++#define _POSIX2_CHAR_TERM                     200112L
++/* #define _POSIX2_FORT_DEV                       -1 */
++/* #define _POSIX2_FORT_RUN                       -1 */
++/* #define _POSIX2_LOCALEDEF                      -1 */
++/* #define _POSIX2_PBS                                    -1 */
++/* #define _POSIX2_PBS_ACCOUNTING                 -1 */
++/* #define _POSIX2_PBS_CHECKPOINT                 -1 */
++/* #define _POSIX2_PBS_LOCATE                     -1 */
++/* #define _POSIX2_PBS_MESSAGE                            -1 */
++/* #define _POSIX2_PBS_TRACK                      -1 */
++#define _POSIX2_SW_DEV                                200112L
++#define _POSIX2_UPE                           200112L
++/* #define _POSIX_V6_ILP32_OFF32                  -1 */
++#define _XBS5_ILP32_OFF32                     _POSIX_V6_ILP32_OFF32
++#define _POSIX_V6_ILP32_OFFBIG                             1
++#define _XBS5_ILP32_OFFBIG                    _POSIX_V6_ILP32_OFFBIG
++/* #define _POSIX_V6_LP64_OFF64                           -1 */
++#define _XBS5_LP64_OFF64                      _POSIX_V6_LP64_OFF64
++/* #define _POSIX_V6_LPBIG_OFFBIG                 -1 */
++#define _XBS5_LPBIG_OFFBIG                    _POSIX_V6_LPBIG_OFFBIG
++#define _XOPEN_CRYPT                               1
++#define _XOPEN_ENH_I18N                                    1
++/* #define _XOPEN_LEGACY                          -1 */
++/* #define _XOPEN_REALTIME                        -1 */
++/* #define _XOPEN_REALTIME_THREADS                -1 */
++#define _XOPEN_SHM                                 1
++/* #define _XOPEN_STREAMS                         -1 */
++/* #define _XOPEN_UNIX                                    -1 */
++
+ #endif
+ #ifdef __cplusplus
+diff -uNr newlib-1.15.0.orig/newlib/libc/include/sys/_types.h newlib-1.15.0/newlib/libc/include/sys/_types.h
+--- newlib-1.15.0.orig/newlib/libc/include/sys/_types.h        2004-06-11 22:37:09.000000000 +0200
++++ newlib-1.15.0/newlib/libc/include/sys/_types.h     2007-04-13 10:41:47.000000000 +0200
+@@ -39,4 +39,7 @@
+ /* Iconv descriptor type */
+ typedef void *_iconv_t;
++typedef long * __intptr_t;
++typedef unsigned long* __uintptr_t;
++
+ #endif        /* _SYS__TYPES_H */
+diff -uNr newlib-1.15.0.orig/newlib/libc/include/sys/unistd.h newlib-1.15.0/newlib/libc/include/sys/unistd.h
+--- newlib-1.15.0.orig/newlib/libc/include/sys/unistd.h        2006-11-07 16:33:40.000000000 +0100
++++ newlib-1.15.0/newlib/libc/include/sys/unistd.h     2007-04-13 10:41:47.000000000 +0200
+@@ -200,7 +200,7 @@
+ int   _EXFUN(getdtablesize, (void));
+ int   _EXFUN(setdtablesize, (int));
+ useconds_t _EXFUN(ualarm, (useconds_t __useconds, useconds_t __interval));
+-unsigned _EXFUN(usleep, (unsigned int __useconds));
++int _EXFUN(usleep, (useconds_t __useconds));
+ #if !(defined  (_WINSOCK_H) || defined (__USE_W32_SOCKETS))
+ /* winsock[2].h defines as __stdcall, and with int as 2nd arg */
+  int  _EXFUN(gethostname, (char *__name, size_t __len));
+@@ -212,7 +212,7 @@
+ int     _EXFUN(sync, (void));
+ #endif
+ #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
+@@ -231,63 +231,55 @@
+ #define STDERR_FILENO   2       /* standard error file descriptor */
+ /*
+- *  4.8.1 Get Configurable System Variables, P1003.1b-1993, p. 96
+- *
+- *  NOTE: Table 4-2, Configurable System Variables, p. 96
+- */
+-
+-#define _SC_ARG_MAX                 0
+-#define _SC_CHILD_MAX               1
+-#define _SC_CLK_TCK                 2
+-#define _SC_NGROUPS_MAX             3
+-#define _SC_OPEN_MAX                4
+-  /* no _SC_STREAM_MAX */
+-#define _SC_JOB_CONTROL             5
+-#define _SC_SAVED_IDS               6
+-#define _SC_VERSION                 7
+-#define _SC_PAGESIZE                8
+-/* CYGWIN-specific values .. do not touch */
+-#define _SC_NPROCESSORS_CONF        9
+-#define _SC_NPROCESSORS_ONLN       10
+-#define _SC_PHYS_PAGES             11
+-#define _SC_AVPHYS_PAGES           12
+-/* end of CYGWIN-specific values */
+-#define _SC_MQ_OPEN_MAX            13
+-#define _SC_MQ_PRIO_MAX            14
+-#define _SC_RTSIG_MAX              15
+-#define _SC_SEM_NSEMS_MAX          16
+-#define _SC_SEM_VALUE_MAX          17
+-#define _SC_SIGQUEUE_MAX           18
+-#define _SC_TIMER_MAX              19
+-#define _SC_TZNAME_MAX             20
+-
+-#define _SC_ASYNCHRONOUS_IO        21
+-#define _SC_FSYNC                  22
+-#define _SC_MAPPED_FILES           23
+-#define _SC_MEMLOCK                24
+-#define _SC_MEMLOCK_RANGE          25
+-#define _SC_MEMORY_PROTECTION      26
+-#define _SC_MESSAGE_PASSING        27
+-#define _SC_PRIORITIZED_IO         28
+-#define _SC_REALTIME_SIGNALS       29
+-#define _SC_SEMAPHORES             30
+-#define _SC_SHARED_MEMORY_OBJECTS  31
+-#define _SC_SYNCHRONIZED_IO        32
+-#define _SC_TIMERS                 33
+-#define _SC_AIO_LISTIO_MAX         34
+-#define _SC_AIO_MAX                35
+-#define _SC_AIO_PRIO_DELTA_MAX     36
+-#define _SC_DELAYTIMER_MAX         37
+-
+-/*
+- *  P1003.1c/D10, p. 52 adds the following.
++ *  sysconf values per IEEE Std 1003.1, 2004 Edition
+  */
++#define _SC_ARG_MAX                       0
++#define _SC_CHILD_MAX                     1
++#define _SC_CLK_TCK                       2
++#define _SC_NGROUPS_MAX                   3
++#define _SC_OPEN_MAX                      4
++#define _SC_JOB_CONTROL                   5
++#define _SC_SAVED_IDS                     6
++#define _SC_VERSION                       7
++#define _SC_PAGESIZE                      8
++#define _SC_PAGE_SIZE                     _SC_PAGESIZE
++/* These are non-POSIX values we accidentally introduced in 2000 without
++   guarding them.  Keeping them unguarded for backward compatibility. */
++#define _SC_NPROCESSORS_CONF              9
++#define _SC_NPROCESSORS_ONLN             10
++#define _SC_PHYS_PAGES                   11
++#define _SC_AVPHYS_PAGES                 12
++/* End of non-POSIX values. */
++#define _SC_MQ_OPEN_MAX                  13
++#define _SC_MQ_PRIO_MAX                  14
++#define _SC_RTSIG_MAX                    15
++#define _SC_SEM_NSEMS_MAX                16
++#define _SC_SEM_VALUE_MAX                17
++#define _SC_SIGQUEUE_MAX                 18
++#define _SC_TIMER_MAX                    19
++#define _SC_TZNAME_MAX                   20
++#define _SC_ASYNCHRONOUS_IO              21
++#define _SC_FSYNC                        22
++#define _SC_MAPPED_FILES                 23
++#define _SC_MEMLOCK                      24
++#define _SC_MEMLOCK_RANGE                25
++#define _SC_MEMORY_PROTECTION            26
++#define _SC_MESSAGE_PASSING              27
++#define _SC_PRIORITIZED_IO               28
++#define _SC_REALTIME_SIGNALS             29
++#define _SC_SEMAPHORES                   30
++#define _SC_SHARED_MEMORY_OBJECTS        31
++#define _SC_SYNCHRONIZED_IO              32
++#define _SC_TIMERS                       33
++#define _SC_AIO_LISTIO_MAX               34
++#define _SC_AIO_MAX                      35
++#define _SC_AIO_PRIO_DELTA_MAX           36
++#define _SC_DELAYTIMER_MAX               37
+ #define _SC_THREAD_KEYS_MAX              38
+ #define _SC_THREAD_STACK_MIN             39
+ #define _SC_THREAD_THREADS_MAX           40
+ #define _SC_TTY_NAME_MAX                 41
+-
+ #define _SC_THREADS                      42
+ #define _SC_THREAD_ATTR_STACKADDR        43
+ #define _SC_THREAD_ATTR_STACKSIZE        44
+@@ -302,34 +294,99 @@
+ #define _SC_GETPW_R_SIZE_MAX             51
+ #define _SC_LOGIN_NAME_MAX               52
+ #define _SC_THREAD_DESTRUCTOR_ITERATIONS 53
+-
+-#if !defined(__rtems__)
+-#define _SC_STREAM_MAX                        100
+-#endif
+-#if !defined(__CYGWIN__) && !defined(__rtems__)
+-#define _SC_PRIORITY_SCHEDULING               101
+-#endif
+-  
+-# define      _PC_LINK_MAX            0
+-# define      _PC_MAX_CANON           1
+-# define      _PC_MAX_INPUT           2
+-# define      _PC_NAME_MAX            3
+-# define      _PC_PATH_MAX            4
+-# define      _PC_PIPE_BUF            5
+-# define      _PC_CHOWN_RESTRICTED    6
+-# define      _PC_NO_TRUNC            7
+-# define      _PC_VDISABLE            8
+-# define      _PC_ASYNC_IO            9
+-# define      _PC_PRIO_IO            10
+-# define      _PC_SYNC_IO            11
+-# define      _PC_FILESIZEBITS       12
+-# define      _PC_2_SYMLINKS         13
+-# define      _PC_SYMLINK_MAX        14
++#define _SC_ADVISORY_INFO                54
++#define _SC_ATEXIT_MAX                   55
++#define _SC_BARRIERS                     56
++#define _SC_BC_BASE_MAX                  57
++#define _SC_BC_DIM_MAX                   58
++#define _SC_BC_SCALE_MAX                 59
++#define _SC_BC_STRING_MAX                60
++#define _SC_CLOCK_SELECTION              61
++#define _SC_COLL_WEIGHTS_MAX             62
++#define _SC_CPUTIME                      63
++#define _SC_EXPR_NEST_MAX                64
++#define _SC_HOST_NAME_MAX                65
++#define _SC_IOV_MAX                      66
++#define _SC_IPV6                         67
++#define _SC_LINE_MAX                     68
++#define _SC_MONOTONIC_CLOCK              69
++#define _SC_RAW_SOCKETS                  70
++#define _SC_READER_WRITER_LOCKS          71
++#define _SC_REGEXP                       72
++#define _SC_RE_DUP_MAX                   73
++#define _SC_SHELL                        74
++#define _SC_SPAWN                        75
++#define _SC_SPIN_LOCKS                   76
++#define _SC_SPORADIC_SERVER              77
++#define _SC_SS_REPL_MAX                  78
++#define _SC_SYMLOOP_MAX                  79
++#define _SC_THREAD_CPUTIME               80
++#define _SC_THREAD_SPORADIC_SERVER       81
++#define _SC_TIMEOUTS                     82
++#define _SC_TRACE                        83
++#define _SC_TRACE_EVENT_FILTER           84
++#define _SC_TRACE_EVENT_NAME_MAX         85
++#define _SC_TRACE_INHERIT                86
++#define _SC_TRACE_LOG                    87
++#define _SC_TRACE_NAME_MAX               88
++#define _SC_TRACE_SYS_MAX                89
++#define _SC_TRACE_USER_EVENT_MAX         90
++#define _SC_TYPED_MEMORY_OBJECTS         91
++#define _SC_V6_ILP32_OFF32               92
++#define _SC_XBS5_ILP32_OFF32             _SC_V6_ILP32_OFF32
++#define _SC_V6_ILP32_OFFBIG              93
++#define _SC_XBS5_ILP32_OFFBIG            _SC_V6_ILP32_OFFBIG
++#define _SC_V6_LP64_OFF64                94
++#define _SC_XBS5_LP64_OFF64              _SC_V6_LP64_OFF64
++#define _SC_V6_LPBIG_OFFBIG              95
++#define _SC_XBS5_LPBIG_OFFBIG            _SC_V6_LPBIG_OFFBIG
++#define _SC_XOPEN_CRYPT                  96
++#define _SC_XOPEN_ENH_I18N               97
++#define _SC_XOPEN_LEGACY                 98
++#define _SC_XOPEN_REALTIME               99
++#define _SC_STREAM_MAX                  100
++#define _SC_PRIORITY_SCHEDULING         101
++#define _SC_XOPEN_REALTIME_THREADS      102
++#define _SC_XOPEN_SHM                   103
++#define _SC_XOPEN_STREAMS               104
++#define _SC_XOPEN_UNIX                  105
++#define _SC_XOPEN_VERSION               106
++#define _SC_2_CHAR_TERM                 107
++#define _SC_2_C_BIND                    108
++#define _SC_2_C_DEV                     109
++#define _SC_2_FORT_DEV                  110
++#define _SC_2_FORT_RUN                  111
++#define _SC_2_LOCALEDEF                 112
++#define _SC_2_PBS                       113
++#define _SC_2_PBS_ACCOUNTING            114
++#define _SC_2_PBS_CHECKPOINT            115
++#define _SC_2_PBS_LOCATE                116
++#define _SC_2_PBS_MESSAGE               117
++#define _SC_2_PBS_TRACK                 118
++#define _SC_2_SW_DEV                    119
++#define _SC_2_UPE                       120
++#define _SC_2_VERSION                   121
++
++#define _PC_LINK_MAX                      0
++#define _PC_MAX_CANON                     1
++#define _PC_MAX_INPUT                     2
++#define _PC_NAME_MAX                      3
++#define _PC_PATH_MAX                      4
++#define _PC_PIPE_BUF                      5
++#define _PC_CHOWN_RESTRICTED              6
++#define _PC_NO_TRUNC                      7
++#define _PC_VDISABLE                      8
++#define _PC_ASYNC_IO                      9
++#define _PC_PRIO_IO                      10
++#define _PC_SYNC_IO                      11
++#define _PC_FILESIZEBITS                 12
++#define _PC_2_SYMLINKS                   13
++#define _PC_SYMLINK_MAX                  14
+ #ifdef __CYGWIN__
+ /* Ask for POSIX permission bits support. */
+-# define      _PC_POSIX_PERMISSIONS   90
++#define _PC_POSIX_PERMISSIONS            90
+ /* Ask for full POSIX permission support including uid/gid settings. */
+-# define      _PC_POSIX_SECURITY     91
++#define _PC_POSIX_SECURITY               91
+ #endif
+ /* FIXME: This is temporary until winsup gets sorted out.  */
+diff -uNr newlib-1.15.0.orig/newlib/libc/include/time.h newlib-1.15.0/newlib/libc/include/time.h
+--- newlib-1.15.0.orig/newlib/libc/include/time.h      2005-11-18 16:57:24.000000000 +0100
++++ newlib-1.15.0/newlib/libc/include/time.h   2007-04-13 10:41:47.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 -uNr newlib-1.15.0.orig/newlib/libc/machine/arm/machine/endian.h newlib-1.15.0/newlib/libc/machine/arm/machine/endian.h
+--- newlib-1.15.0.orig/newlib/libc/machine/arm/machine/endian.h        2004-05-07 22:29:24.000000000 +0200
++++ newlib-1.15.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 -uNr newlib-1.15.0.orig/newlib/libc/search/db_local.h newlib-1.15.0/newlib/libc/search/db_local.h
+--- newlib-1.15.0.orig/newlib/libc/search/db_local.h   2002-06-25 01:05:08.000000000 +0200
++++ newlib-1.15.0/newlib/libc/search/db_local.h        2007-04-13 10:41:47.000000000 +0200
+@@ -50,7 +50,7 @@
+ #define       MAX_PAGE_NUMBER 0xffffffff      /* >= # of pages in a file */
+ typedef __uint32_t    pgno_t;
+ #define       MAX_PAGE_OFFSET 65535           /* >= # of bytes in a page */
+-typedef __uint16_t    indx_t;
++typedef __uint_least16_t      indx_t;
+ #define       MAX_REC_NUMBER  0xffffffff      /* >= # of records in a tree */
+ typedef __uint32_t    recno_t;
+@@ -191,12 +191,12 @@
+  *    P_16_COPY       swap from one location to another
+  */
+ #define       M_16_SWAP(a) {                                                  \
+-      __uint16_t _tmp = a;                                            \
++      __uint_least16_t _tmp = a;                                              \
+       ((char *)&a)[0] = ((char *)&_tmp)[1];                           \
+       ((char *)&a)[1] = ((char *)&_tmp)[0];                           \
+ }
+ #define       P_16_SWAP(a) {                                                  \
+-      __uint16_t _tmp = *(__uint16_t *)a;                             \
++      __uint_least16_t _tmp = *(__uint_least16_t *)a;                         \
+       ((char *)a)[0] = ((char *)&_tmp)[1];                            \
+       ((char *)a)[1] = ((char *)&_tmp)[0];                            \
+ }
+diff -uNr newlib-1.15.0.orig/newlib/libc/search/extern.h newlib-1.15.0/newlib/libc/search/extern.h
+--- newlib-1.15.0.orig/newlib/libc/search/extern.h     2002-06-20 21:51:31.000000000 +0200
++++ newlib-1.15.0/newlib/libc/search/extern.h  2007-04-13 10:41:47.000000000 +0200
+@@ -48,7 +48,7 @@
+ int    __delpair(HTAB *, BUFHEAD *, int);
+ int    __expand_table(HTAB *);
+ int    __find_bigpair(HTAB *, BUFHEAD *, int, char *, int);
+-__uint16_t     __find_last_page(HTAB *, BUFHEAD **);
++__uint_least16_t       __find_last_page(HTAB *, BUFHEAD **);
+ void   __free_ovflpage(HTAB *, BUFHEAD *);
+ BUFHEAD       *__get_buf(HTAB *, __uint32_t, BUFHEAD *, int);
+ int    __get_page(HTAB *, char *, __uint32_t, int, int, int);
+diff -uNr newlib-1.15.0.orig/newlib/libc/search/hash_bigkey.c newlib-1.15.0/newlib/libc/search/hash_bigkey.c
+--- newlib-1.15.0.orig/newlib/libc/search/hash_bigkey.c        2006-06-07 21:22:59.000000000 +0200
++++ newlib-1.15.0/newlib/libc/search/hash_bigkey.c     2007-04-13 10:41:47.000000000 +0200
+@@ -92,13 +92,13 @@
+       BUFHEAD *bufp;
+       const DBT *key, *val;
+ {
+-      __uint16_t *p;
++      __uint_least16_t *p;
+       int key_size, n, val_size;
+-      __uint16_t space, move_bytes, off;
++      __uint_least16_t space, move_bytes, off;
+       char *cp, *key_data, *val_data;
+       cp = bufp->page;                /* Character pointer of p. */
+-      p = (__uint16_t *)cp;
++      p = (__uint_least16_t *)cp;
+       key_data = (char *)key->data;
+       key_size = key->size;
+@@ -136,7 +136,7 @@
+                               OFFSET(p) = off;
+                       } else
+                               p[n - 2] = FULL_KEY;
+-              p = (__uint16_t *)bufp->page;
++              p = (__uint_least16_t *)bufp->page;
+               cp = bufp->page;
+               bufp->flags |= BUF_MOD;
+       }
+@@ -166,7 +166,7 @@
+                       if (!bufp)
+                               return (-1);
+                       cp = bufp->page;
+-                      p = (__uint16_t *)cp;
++                      p = (__uint_least16_t *)cp;
+               } else
+                       p[n] = FULL_KEY_DATA;
+               bufp->flags |= BUF_MOD;
+@@ -191,12 +191,12 @@
+       BUFHEAD *bufp;
+ {
+       BUFHEAD *last_bfp, *rbufp;
+-      __uint16_t *bp, pageno;
++      __uint_least16_t *bp, pageno;
+       int key_done, n;
+       rbufp = bufp;
+       last_bfp = NULL;
+-      bp = (__uint16_t *)bufp->page;
++      bp = (__uint_least16_t *)bufp->page;
+       pageno = 0;
+       key_done = 0;
+@@ -219,7 +219,7 @@
+               last_bfp = rbufp;
+               if (!rbufp)
+                       return (-1);            /* Error. */
+-              bp = (__uint16_t *)rbufp->page;
++              bp = (__uint_least16_t *)rbufp->page;
+       }
+       /*
+@@ -234,7 +234,7 @@
+       pageno = bp[n - 1];
+       /* Now, bp is the first page of the pair. */
+-      bp = (__uint16_t *)bufp->page;
++      bp = (__uint_least16_t *)bufp->page;
+       if (n > 2) {
+               /* There is an overflow page. */
+               bp[1] = pageno;
+@@ -272,13 +272,13 @@
+       char *key;
+       int size;
+ {
+-      __uint16_t *bp;
++      __uint_least16_t *bp;
+       char *p;
+       int ksize;
+-      __uint16_t bytes;
++      __uint_least16_t bytes;
+       char *kkey;
+-      bp = (__uint16_t *)bufp->page;
++      bp = (__uint_least16_t *)bufp->page;
+       p = bufp->page;
+       ksize = size;
+       kkey = key;
+@@ -294,7 +294,7 @@
+               if (!bufp)
+                       return (-3);
+               p = bufp->page;
+-              bp = (__uint16_t *)p;
++              bp = (__uint_least16_t *)p;
+               ndx = 1;
+       }
+@@ -316,17 +316,17 @@
+  * of the pair; 0 if there isn't any (i.e. big pair is the last key in the
+  * bucket)
+  */
+-extern __uint16_t
++extern __uint_least16_t
+ __find_last_page(hashp, bpp)
+       HTAB *hashp;
+       BUFHEAD **bpp;
+ {
+       BUFHEAD *bufp;
+-      __uint16_t *bp, pageno;
++      __uint_least16_t *bp, pageno;
+       int n;
+       bufp = *bpp;
+-      bp = (__uint16_t *)bufp->page;
++      bp = (__uint_least16_t *)bufp->page;
+       for (;;) {
+               n = bp[0];
+@@ -343,7 +343,7 @@
+               bufp = __get_buf(hashp, pageno, bufp, 0);
+               if (!bufp)
+                       return (0);     /* Need to indicate an error! */
+-              bp = (__uint16_t *)bufp->page;
++              bp = (__uint_least16_t *)bufp->page;
+       }
+       *bpp = bufp;
+@@ -366,15 +366,15 @@
+       int set_current;
+ {
+       BUFHEAD *save_p;
+-      __uint16_t *bp, len, off, save_addr;
++      __uint_least16_t *bp, len, off, save_addr;
+       char *tp;
+-      bp = (__uint16_t *)bufp->page;
++      bp = (__uint_least16_t *)bufp->page;
+       while (bp[ndx + 1] == PARTIAL_KEY) {
+               bufp = __get_buf(hashp, bp[bp[0] - 1], bufp, 0);
+               if (!bufp)
+                       return (-1);
+-              bp = (__uint16_t *)bufp->page;
++              bp = (__uint_least16_t *)bufp->page;
+               ndx = 1;
+       }
+@@ -382,7 +382,7 @@
+               bufp = __get_buf(hashp, bp[bp[0] - 1], bufp, 0);
+               if (!bufp)
+                       return (-1);
+-              bp = (__uint16_t *)bufp->page;
++              bp = (__uint_least16_t *)bufp->page;
+               save_p = bufp;
+               save_addr = save_p->addr;
+               off = bp[1];
+@@ -403,7 +403,7 @@
+                       bufp = __get_buf(hashp, bp[bp[0] - 1], bufp, 0);
+                       if (!bufp)
+                               return (-1);
+-                      bp = (__uint16_t *)bufp->page;
++                      bp = (__uint_least16_t *)bufp->page;
+               } else {
+                       /* The data is all on one page. */
+                       tp = (char *)bp;
+@@ -422,7 +422,7 @@
+                                       if (!hashp->cpage)
+                                               return (-1);
+                                       hashp->cndx = 1;
+-                                      if (!((__uint16_t *)
++                                      if (!((__uint_least16_t *)
+                                           hashp->cpage->page)[0]) {
+                                               hashp->cbucket++;
+                                               hashp->cpage = NULL;
+@@ -454,14 +454,14 @@
+       BUFHEAD *bufp;
+       int len, set;
+ {
+-      __uint16_t *bp;
++      __uint_least16_t *bp;
+       char *p;
+       BUFHEAD *xbp;
+-      __uint16_t save_addr;
++      __uint_least16_t save_addr;
+       int mylen, totlen;
+       p = bufp->page;
+-      bp = (__uint16_t *)p;
++      bp = (__uint_least16_t *)p;
+       mylen = hashp->BSIZE - bp[1];
+       save_addr = bufp->addr;
+@@ -481,7 +481,7 @@
+                                   __get_buf(hashp, bp[bp[0] - 1], bufp, 0);
+                               if (!hashp->cpage)
+                                       return (-1);
+-                              else if (!((__uint16_t *)hashp->cpage->page)[0]) {
++                              else if (!((__uint_least16_t *)hashp->cpage->page)[0]) {
+                                       hashp->cbucket++;
+                                       hashp->cpage = NULL;
+                               }
+@@ -533,10 +533,10 @@
+       BUFHEAD *xbp;
+       char *p;
+       int mylen, totlen;
+-      __uint16_t *bp, save_addr;
++      __uint_least16_t *bp, save_addr;
+       p = bufp->page;
+-      bp = (__uint16_t *)p;
++      bp = (__uint_least16_t *)p;
+       mylen = hashp->BSIZE - bp[1];
+       save_addr = bufp->addr;
+@@ -579,11 +579,11 @@
+       SPLIT_RETURN *ret;
+ {
+       BUFHEAD *tmpp;
+-      __uint16_t *tp;
++      __uint_least16_t *tp;
+       BUFHEAD *bp;
+       DBT key, val;
+       __uint32_t change;
+-      __uint16_t free_space, n, off;
++      __uint_least16_t free_space, n, off;
+       bp = big_keyp;
+@@ -615,14 +615,14 @@
+           (tmpp->ovfl ? tmpp->ovfl->addr : 0), (bp ? bp->addr : 0));
+ #endif
+       tmpp->ovfl = bp;        /* one of op/np point to big_keyp */
+-      tp = (__uint16_t *)tmpp->page;
++      tp = (__uint_least16_t *)tmpp->page;
+ #ifdef DEBUG
+       assert(FREESPACE(tp) >= OVFLSIZE);
+ #endif
+       n = tp[0];
+       off = OFFSET(tp);
+       free_space = FREESPACE(tp);
+-      tp[++n] = (__uint16_t)addr;
++      tp[++n] = (__uint_least16_t)addr;
+       tp[++n] = OVFLPAGE;
+       tp[0] = n;
+       OFFSET(tp) = off;
+@@ -638,7 +638,7 @@
+       ret->newp = np;
+       ret->oldp = op;
+-      tp = (__uint16_t *)big_keyp->page;
++      tp = (__uint_least16_t *)big_keyp->page;
+       big_keyp->flags |= BUF_MOD;
+       if (tp[0] > 2) {
+               /*
+diff -uNr newlib-1.15.0.orig/newlib/libc/search/hash_buf.c newlib-1.15.0/newlib/libc/search/hash_buf.c
+--- newlib-1.15.0.orig/newlib/libc/search/hash_buf.c   2004-05-26 19:57:10.000000000 +0200
++++ newlib-1.15.0/newlib/libc/search/hash_buf.c        2007-04-13 10:41:47.000000000 +0200
+@@ -176,7 +176,7 @@
+       BUFHEAD *next_xbp;
+       SEGMENT segp;
+       int segment_ndx;
+-      __uint16_t oaddr, *shortp;
++      __uint_least16_t oaddr, *shortp;
+       oaddr = 0;
+       bp = LRU;
+@@ -212,7 +212,7 @@
+                        * Set oaddr before __put_page so that you get it
+                        * before bytes are swapped.
+                        */
+-                      shortp = (__uint16_t *)bp->page;
++                      shortp = (__uint_least16_t *)bp->page;
+                       if (shortp[0])
+                               oaddr = shortp[shortp[0] - 1];
+                       if ((bp->flags & BUF_MOD) && __put_page(hashp, bp->page,
+@@ -255,7 +255,7 @@
+                                   (oaddr != xbp->addr))
+                                       break;
+-                              shortp = (__uint16_t *)xbp->page;
++                              shortp = (__uint_least16_t *)xbp->page;
+                               if (shortp[0])
+                                       /* set before __put_page */
+                                       oaddr = shortp[shortp[0] - 1];
+diff -uNr newlib-1.15.0.orig/newlib/libc/search/hash.c newlib-1.15.0/newlib/libc/search/hash.c
+--- newlib-1.15.0.orig/newlib/libc/search/hash.c       2004-05-26 19:57:10.000000000 +0200
++++ newlib-1.15.0/newlib/libc/search/hash.c    2007-04-13 10:41:47.000000000 +0200
+@@ -628,10 +628,10 @@
+ {
+       BUFHEAD *rbufp;
+       BUFHEAD *bufp, *save_bufp;
+-      __uint16_t *bp;
++      __uint_least16_t *bp;
+       int n, ndx, off, size;
+       char *kp;
+-      __uint16_t pageno;
++      __uint_least16_t pageno;
+ #ifdef HASH_STATISTICS
+       hash_accesses++;
+@@ -647,7 +647,7 @@
+       /* Pin the bucket chain */
+       rbufp->flags |= BUF_PIN;
+-      for (bp = (__uint16_t *)rbufp->page, n = *bp++, ndx = 1; ndx < n;)
++      for (bp = (__uint_least16_t *)rbufp->page, n = *bp++, ndx = 1; ndx < n;)
+               if (bp[1] >= REAL_KEY) {
+                       /* Real key/data pair */
+                       if (size == off - *bp &&
+@@ -666,7 +666,7 @@
+                               return (ERROR);
+                       }
+                       /* FOR LOOP INIT */
+-                      bp = (__uint16_t *)rbufp->page;
++                      bp = (__uint_least16_t *)rbufp->page;
+                       n = *bp++;
+                       ndx = 1;
+                       off = hashp->BSIZE;
+@@ -688,7 +688,7 @@
+                                       return (ERROR);
+                               }
+                               /* FOR LOOP INIT */
+-                              bp = (__uint16_t *)rbufp->page;
++                              bp = (__uint_least16_t *)rbufp->page;
+                               n = *bp++;
+                               ndx = 1;
+                               off = hashp->BSIZE;
+@@ -722,7 +722,7 @@
+               save_bufp->flags &= ~BUF_PIN;
+               return (ABNORMAL);
+       case HASH_GET:
+-              bp = (__uint16_t *)rbufp->page;
++              bp = (__uint_least16_t *)rbufp->page;
+               if (bp[ndx + 1] < REAL_KEY) {
+                       if (__big_return(hashp, rbufp, ndx, val, 0))
+                               return (ERROR);
+@@ -758,7 +758,7 @@
+       __uint32_t bucket;
+       BUFHEAD *bufp;
+       HTAB *hashp;
+-      __uint16_t *bp, ndx;
++      __uint_least16_t *bp, ndx;
+       hashp = (HTAB *)dbp->internal;
+       if (flag && flag != R_FIRST && flag != R_NEXT) {
+@@ -783,7 +783,7 @@
+                               if (!bufp)
+                                       return (ERROR);
+                               hashp->cpage = bufp;
+-                              bp = (__uint16_t *)bufp->page;
++                              bp = (__uint_least16_t *)bufp->page;
+                               if (bp[0])
+                                       break;
+                       }
+@@ -793,7 +793,7 @@
+                               return (ABNORMAL);
+                       }
+               } else
+-                      bp = (__uint16_t *)hashp->cpage->page;
++                      bp = (__uint_least16_t *)hashp->cpage->page;
+ #ifdef DEBUG
+               assert(bp);
+@@ -804,7 +804,7 @@
+                           __get_buf(hashp, bp[hashp->cndx], bufp, 0);
+                       if (!bufp)
+                               return (ERROR);
+-                      bp = (__uint16_t *)(bufp->page);
++                      bp = (__uint_least16_t *)(bufp->page);
+                       hashp->cndx = 1;
+               }
+               if (!bp[0]) {
+diff -uNr newlib-1.15.0.orig/newlib/libc/search/hash.h newlib-1.15.0/newlib/libc/search/hash.h
+--- newlib-1.15.0.orig/newlib/libc/search/hash.h       2002-07-02 20:18:58.000000000 +0200
++++ newlib-1.15.0/newlib/libc/search/hash.h    2007-04-13 10:41:47.000000000 +0200
+@@ -102,7 +102,7 @@
+ #define NCACHED       32                      /* number of bit maps and spare 
+                                        * points */
+       int             spares[NCACHED];/* spare pages for overflow */
+-      __uint16_t      bitmaps[NCACHED];       /* address of overflow page 
++      __uint_least16_t        bitmaps[NCACHED];       /* address of overflow page 
+                                                * bitmaps */
+ } HASHHDR;
+diff -uNr newlib-1.15.0.orig/newlib/libc/search/hash_page.c newlib-1.15.0/newlib/libc/search/hash_page.c
+--- newlib-1.15.0.orig/newlib/libc/search/hash_page.c  2002-09-19 23:28:51.000000000 +0200
++++ newlib-1.15.0/newlib/libc/search/hash_page.c       2007-04-13 10:41:47.000000000 +0200
+@@ -77,16 +77,16 @@
+ static __uint32_t     *fetch_bitmap(HTAB *, int);
+ static __uint32_t      first_free(__uint32_t);
+ static int     open_temp(HTAB *);
+-static __uint16_t      overflow_page(HTAB *);
++static __uint_least16_t        overflow_page(HTAB *);
+ static void    putpair(char *, const DBT *, const DBT *);
+-static void    squeeze_key(__uint16_t *, const DBT *, const DBT *);
++static void    squeeze_key(__uint_least16_t *, const DBT *, const DBT *);
+ static int     ugly_split
+ (HTAB *, __uint32_t, BUFHEAD *, BUFHEAD *, int, int);
+ #define       PAGE_INIT(P) { \
+-      ((__uint16_t *)(P))[0] = 0; \
+-      ((__uint16_t *)(P))[1] = hashp->BSIZE - 3 * sizeof(__uint16_t); \
+-      ((__uint16_t *)(P))[2] = hashp->BSIZE; \
++      ((__uint_least16_t *)(P))[0] = 0; \
++      ((__uint_least16_t *)(P))[1] = hashp->BSIZE - 3 * sizeof(__uint_least16_t); \
++      ((__uint_least16_t *)(P))[2] = hashp->BSIZE; \
+ }
+ /*
+@@ -99,9 +99,9 @@
+       char *p;
+       const DBT *key, *val;
+ {
+-      __uint16_t *bp, n, off;
++      __uint_least16_t *bp, n, off;
+-      bp = (__uint16_t *)p;
++      bp = (__uint_least16_t *)p;
+       /* Enter the key first. */
+       n = bp[0];
+@@ -117,7 +117,7 @@
+       /* Adjust page info. */
+       bp[0] = n;
+-      bp[n + 1] = off - ((n + 3) * sizeof(__uint16_t));
++      bp[n + 1] = off - ((n + 3) * sizeof(__uint_least16_t));
+       bp[n + 2] = off;
+ }
+@@ -132,11 +132,11 @@
+       BUFHEAD *bufp;
+       int ndx;
+ {
+-      __uint16_t *bp, newoff;
++      __uint_least16_t *bp, newoff;
+       int n;
+-      __uint16_t pairlen;
++      __uint_least16_t pairlen;
+-      bp = (__uint16_t *)bufp->page;
++      bp = (__uint_least16_t *)bufp->page;
+       n = bp[0];
+       if (bp[ndx + 1] < REAL_KEY)
+@@ -167,7 +167,7 @@
+       }
+       /* Finally adjust the page data */
+       bp[n] = OFFSET(bp) + pairlen;
+-      bp[n - 1] = bp[n + 1] + pairlen + 2 * sizeof(__uint16_t);
++      bp[n - 1] = bp[n + 1] + pairlen + 2 * sizeof(__uint_least16_t);
+       bp[0] = n - 2;
+       hashp->NKEYS--;
+@@ -185,15 +185,15 @@
+       __uint32_t obucket, nbucket;
+ {
+       BUFHEAD *new_bufp, *old_bufp;
+-      __uint16_t *ino;
++      __uint_least16_t *ino;
+       char *np;
+       DBT key, val;
+       int n, ndx, retval;
+-      __uint16_t copyto, diff, off, moved;
++      __uint_least16_t copyto, diff, off, moved;
+       char *op;
+-      copyto = (__uint16_t)hashp->BSIZE;
+-      off = (__uint16_t)hashp->BSIZE;
++      copyto = (__uint_least16_t)hashp->BSIZE;
++      off = (__uint_least16_t)hashp->BSIZE;
+       old_bufp = __get_buf(hashp, obucket, NULL, 0);
+       if (old_bufp == NULL)
+               return (-1);
+@@ -204,7 +204,7 @@
+       old_bufp->flags |= (BUF_MOD | BUF_PIN);
+       new_bufp->flags |= (BUF_MOD | BUF_PIN);
+-      ino = (__uint16_t *)(op = old_bufp->page);
++      ino = (__uint_least16_t *)(op = old_bufp->page);
+       np = new_bufp->page;
+       moved = 0;
+@@ -246,13 +246,13 @@
+       /* Now clean up the page */
+       ino[0] -= moved;
+-      FREESPACE(ino) = copyto - sizeof(__uint16_t) * (ino[0] + 3);
++      FREESPACE(ino) = copyto - sizeof(__uint_least16_t) * (ino[0] + 3);
+       OFFSET(ino) = copyto;
+ #ifdef DEBUG3
+       (void)fprintf(stderr, "split %d/%d\n",
+-          ((__uint16_t *)np)[0] / 2,
+-          ((__uint16_t *)op)[0] / 2);
++          ((__uint_least16_t *)np)[0] / 2,
++          ((__uint_least16_t *)op)[0] / 2);
+ #endif
+       /* unpin both pages */
+       old_bufp->flags &= ~BUF_PIN;
+@@ -284,22 +284,22 @@
+       int moved;              /* Number of pairs moved to new page. */
+ {
+       BUFHEAD *bufp;          /* Buffer header for ino */
+-      __uint16_t *ino;                /* Page keys come off of */
+-      __uint16_t *np;         /* New page */
+-      __uint16_t *op;         /* Page keys go on to if they aren't moving */
++      __uint_least16_t *ino;          /* Page keys come off of */
++      __uint_least16_t *np;           /* New page */
++      __uint_least16_t *op;           /* Page keys go on to if they aren't moving */
+       BUFHEAD *last_bfp;      /* Last buf header OVFL needing to be freed */
+       DBT key, val;
+       SPLIT_RETURN ret;
+-      __uint16_t n, off, ov_addr, scopyto;
++      __uint_least16_t n, off, ov_addr, scopyto;
+       char *cino;             /* Character value of ino */
+       bufp = old_bufp;
+-      ino = (__uint16_t *)old_bufp->page;
+-      np = (__uint16_t *)new_bufp->page;
+-      op = (__uint16_t *)old_bufp->page;
++      ino = (__uint_least16_t *)old_bufp->page;
++      np = (__uint_least16_t *)new_bufp->page;
++      op = (__uint_least16_t *)old_bufp->page;
+       last_bfp = NULL;
+-      scopyto = (__uint16_t)copyto;   /* ANSI */
++      scopyto = (__uint_least16_t)copyto;     /* ANSI */
+       n = ino[0] - 1;
+       while (n < ino[0]) {
+@@ -310,16 +310,16 @@
+                       old_bufp = ret.oldp;
+                       if (!old_bufp)
+                               return (-1);
+-                      op = (__uint16_t *)old_bufp->page;
++                      op = (__uint_least16_t *)old_bufp->page;
+                       new_bufp = ret.newp;
+                       if (!new_bufp)
+                               return (-1);
+-                      np = (__uint16_t *)new_bufp->page;
++                      np = (__uint_least16_t *)new_bufp->page;
+                       bufp = ret.nextp;
+                       if (!bufp)
+                               return (0);
+                       cino = (char *)bufp->page;
+-                      ino = (__uint16_t *)cino;
++                      ino = (__uint_least16_t *)cino;
+                       last_bfp = ret.nextp;
+               } else if (ino[n + 1] == OVFLPAGE) {
+                       ov_addr = ino[n];
+@@ -329,14 +329,14 @@
+                        */
+                       ino[0] -= (moved + 2);
+                       FREESPACE(ino) =
+-                          scopyto - sizeof(__uint16_t) * (ino[0] + 3);
++                          scopyto - sizeof(__uint_least16_t) * (ino[0] + 3);
+                       OFFSET(ino) = scopyto;
+                       bufp = __get_buf(hashp, ov_addr, bufp, 0);
+                       if (!bufp)
+                               return (-1);
+-                      ino = (__uint16_t *)bufp->page;
++                      ino = (__uint_least16_t *)bufp->page;
+                       n = 1;
+                       scopyto = hashp->BSIZE;
+                       moved = 0;
+@@ -364,7 +364,7 @@
+                                           __add_ovflpage(hashp, old_bufp);
+                                       if (!old_bufp)
+                                               return (-1);
+-                                      op = (__uint16_t *)old_bufp->page;
++                                      op = (__uint_least16_t *)old_bufp->page;
+                                       putpair((char *)op, &key, &val);
+                               }
+                               old_bufp->flags |= BUF_MOD;
+@@ -377,7 +377,7 @@
+                                           __add_ovflpage(hashp, new_bufp);
+                                       if (!new_bufp)
+                                               return (-1);
+-                                      np = (__uint16_t *)new_bufp->page;
++                                      np = (__uint_least16_t *)new_bufp->page;
+                                       putpair((char *)np, &key, &val);
+                               }
+                               new_bufp->flags |= BUF_MOD;
+@@ -402,10 +402,10 @@
+       BUFHEAD *bufp;
+       const DBT *key, *val;
+ {
+-      __uint16_t *bp, *sop;
++      __uint_least16_t *bp, *sop;
+       int do_expand;
+-      bp = (__uint16_t *)bufp->page;
++      bp = (__uint_least16_t *)bufp->page;
+       do_expand = 0;
+       while (bp[0] && (bp[2] < REAL_KEY || bp[bp[0]] < REAL_KEY))
+               /* Exception case */
+@@ -417,7 +417,7 @@
+                       bufp = __get_buf(hashp, bp[bp[0] - 1], bufp, 0);
+                       if (!bufp)
+                               return (-1);
+-                      bp = (__uint16_t *)bufp->page;
++                      bp = (__uint_least16_t *)bufp->page;
+               } else
+                       /* Try to squeeze key on this page */
+                       if (FREESPACE(bp) > PAIRSIZE(key, val)) {
+@@ -427,7 +427,7 @@
+                               bufp = __get_buf(hashp, bp[bp[0] - 1], bufp, 0);
+                               if (!bufp)
+                                       return (-1);
+-                              bp = (__uint16_t *)bufp->page;
++                              bp = (__uint_least16_t *)bufp->page;
+                       }
+       if (PAIRFITS(bp, key, val))
+@@ -437,7 +437,7 @@
+               bufp = __add_ovflpage(hashp, bufp);
+               if (!bufp)
+                       return (-1);
+-              sop = (__uint16_t *)bufp->page;
++              sop = (__uint_least16_t *)bufp->page;
+               if (PAIRFITS(sop, key, val))
+                       putpair((char *)sop, key, val);
+@@ -468,12 +468,12 @@
+       HTAB *hashp;
+       BUFHEAD *bufp;
+ {
+-      __uint16_t *sp;
+-      __uint16_t ndx, ovfl_num;
++      __uint_least16_t *sp;
++      __uint_least16_t ndx, ovfl_num;
+ #ifdef DEBUG1
+       int tmp1, tmp2;
+ #endif
+-      sp = (__uint16_t *)bufp->page;
++      sp = (__uint_least16_t *)bufp->page;
+       /* Check if we are dynamically determining the fill factor */
+       if (hashp->FFACTOR == DEF_FFACTOR) {
+@@ -525,7 +525,7 @@
+ {
+       int fd, page, size;
+       int rsize;
+-      __uint16_t *bp;
++      __uint_least16_t *bp;
+       fd = hashp->fp;
+       size = hashp->BSIZE;
+@@ -541,7 +541,7 @@
+       if ((lseek(fd, (off_t)page << hashp->BSHIFT, SEEK_SET) == -1) ||
+           ((rsize = read(fd, p, size)) == -1))
+               return (-1);
+-      bp = (__uint16_t *)p;
++      bp = (__uint_least16_t *)p;
+       if (!rsize)
+               bp[0] = 0;      /* We hit the EOF, so initialize a new page */
+       else
+@@ -600,9 +600,9 @@
+                       for (i = 0; i < max; i++)
+                               M_32_SWAP(((int *)p)[i]);
+               } else {
+-                      max = ((__uint16_t *)p)[0] + 2;
++                      max = ((__uint_least16_t *)p)[0] + 2;
+                       for (i = 0; i <= max; i++)
+-                              M_16_SWAP(((__uint16_t *)p)[i]);
++                              M_16_SWAP(((__uint_least16_t *)p)[i]);
+               }
+       }
+       if (is_bucket)
+@@ -643,7 +643,7 @@
+           hashp->BSIZE - clearbytes);
+       ip[clearints - 1] = ALL_SET << (nbits & BYTE_MASK);
+       SETBIT(ip, 0);
+-      hashp->BITMAPS[ndx] = (__uint16_t)pnum;
++      hashp->BITMAPS[ndx] = (__uint_least16_t)pnum;
+       hashp->mapp[ndx] = ip;
+       return (0);
+ }
+@@ -663,13 +663,13 @@
+       return (i);
+ }
+-static __uint16_t
++static __uint_least16_t
+ overflow_page(hashp)
+       HTAB *hashp;
+ {
+       __uint32_t *freep;
+       int max_free, offset, splitnum;
+-      __uint16_t addr;
++      __uint_least16_t addr;
+       int bit, first_page, free_bit, free_page, i, in_use_bits, j;
+ #ifdef DEBUG2
+       int tmp1, tmp2;
+@@ -816,16 +816,16 @@
+       HTAB *hashp;
+       BUFHEAD *obufp;
+ {
+-      __uint16_t addr;
++      __uint_least16_t addr;
+       __uint32_t *freep;
+       int bit_address, free_page, free_bit;
+-      __uint16_t ndx;
++      __uint_least16_t ndx;
+       addr = obufp->addr;
+ #ifdef DEBUG1
+       (void)fprintf(stderr, "Freeing %d\n", addr);
+ #endif
+-      ndx = (((__uint16_t)addr) >> SPLITSHIFT);
++      ndx = (((__uint_least16_t)addr) >> SPLITSHIFT);
+       bit_address =
+           (ndx ? hashp->SPARES[ndx - 1] : 0) + (addr & SPLITMASK) - 1;
+        if (bit_address < hashp->LAST_FREED)
+@@ -883,11 +883,11 @@
+  */
+ static void
+ squeeze_key(sp, key, val)
+-      __uint16_t *sp;
++      __uint_least16_t *sp;
+       const DBT *key, *val;
+ {
+       char *p;
+-      __uint16_t free_space, n, off, pageno;
++      __uint_least16_t free_space, n, off, pageno;
+       p = (char *)sp;
+       n = sp[0];
+diff -uNr newlib-1.15.0.orig/newlib/libc/search/page.h newlib-1.15.0/newlib/libc/search/page.h
+--- newlib-1.15.0.orig/newlib/libc/search/page.h       2002-06-20 21:51:31.000000000 +0200
++++ newlib-1.15.0/newlib/libc/search/page.h    2007-04-13 10:41:47.000000000 +0200
+@@ -74,20 +74,20 @@
+  * You might as well do this up front.
+  */
+-#define       PAIRSIZE(K,D)   (2*sizeof(__uint16_t) + (K)->size + (D)->size)
+-#define BIGOVERHEAD   (4*sizeof(__uint16_t))
+-#define KEYSIZE(K)    (4*sizeof(__uint16_t) + (K)->size);
+-#define OVFLSIZE      (2*sizeof(__uint16_t))
++#define       PAIRSIZE(K,D)   (2*sizeof(__uint_least16_t) + (K)->size + (D)->size)
++#define BIGOVERHEAD   (4*sizeof(__uint_least16_t))
++#define KEYSIZE(K)    (4*sizeof(__uint_least16_t) + (K)->size);
++#define OVFLSIZE      (2*sizeof(__uint_least16_t))
+ #define FREESPACE(P)  ((P)[(P)[0]+1])
+ #define       OFFSET(P)       ((P)[(P)[0]+2])
+ #define PAIRFITS(P,K,D) \
+       (((P)[2] >= REAL_KEY) && \
+           (PAIRSIZE((K),(D)) + OVFLSIZE) <= FREESPACE((P)))
+-#define PAGE_META(N)  (((N)+3) * sizeof(__uint16_t))
++#define PAGE_META(N)  (((N)+3) * sizeof(__uint_least16_t))
+ typedef struct {
+       BUFHEAD *newp;
+       BUFHEAD *oldp;
+       BUFHEAD *nextp;
+-      __uint16_t next_addr;
++      __uint_least16_t next_addr;
+ }       SPLIT_RETURN;
+diff -uNr newlib-1.15.0.orig/newlib/libc/sys/rtems/machine/stdint.h newlib-1.15.0/newlib/libc/sys/rtems/machine/stdint.h
+--- newlib-1.15.0.orig/newlib/libc/sys/rtems/machine/stdint.h  1970-01-01 01:00:00.000000000 +0100
++++ newlib-1.15.0/newlib/libc/sys/rtems/machine/stdint.h       2007-04-13 10:41:47.000000000 +0200
+@@ -0,0 +1,31 @@
++/*
++ *
++ */
++#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
++
++#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 -uNr newlib-1.15.0.orig/newlib/libc/sys/rtems/sys/param.h newlib-1.15.0/newlib/libc/sys/rtems/sys/param.h
+--- newlib-1.15.0.orig/newlib/libc/sys/rtems/sys/param.h       2004-05-07 22:29:24.000000000 +0200
++++ newlib-1.15.0/newlib/libc/sys/rtems/sys/param.h    2007-04-13 10:41:47.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 -uNr newlib-1.15.0.orig/newlib/Makefile.am newlib-1.15.0/newlib/Makefile.am
+--- newlib-1.15.0.orig/newlib/Makefile.am      2006-06-05 19:42:57.000000000 +0200
++++ newlib-1.15.0/newlib/Makefile.am   2007-04-13 10:41:47.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 -uNr newlib-1.15.0.orig/newlib/Makefile.in newlib-1.15.0/newlib/Makefile.in
+--- newlib-1.15.0.orig/newlib/Makefile.in      2006-12-18 21:32:41.000000000 +0100
++++ newlib-1.15.0/newlib/Makefile.in   2007-04-13 10:41:47.000000000 +0200
+@@ -103,7 +103,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)
+@@ -205,12 +205,7 @@
+ USE_LIBTOOL_FALSE = @USE_LIBTOOL_FALSE@
+ USE_LIBTOOL_TRUE = @USE_LIBTOOL_TRUE@
+ VERSION = @VERSION@
+-ac_ct_AR = @ac_ct_AR@
+-ac_ct_AS = @ac_ct_AS@
+ ac_ct_CC = @ac_ct_CC@
+-ac_ct_RANLIB = @ac_ct_RANLIB@
+-ac_ct_READELF = @ac_ct_READELF@
+-ac_ct_STRIP = @ac_ct_STRIP@
+ aext = @aext@
+ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+@@ -226,12 +221,16 @@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
+ datadir = @datadir@
++datarootdir = @datarootdir@
++docdir = @docdir@
++dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+ host = @host@
+ host_alias = @host_alias@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
++htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+@@ -240,6 +239,7 @@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+ libm_machine_dir = @libm_machine_dir@
++localedir = @localedir@
+ localstatedir = @localstatedir@
+ lpfx = @lpfx@
+ machine_dir = @machine_dir@
+@@ -248,8 +248,10 @@
+ newlib_basedir = @newlib_basedir@
+ oext = @oext@
+ oldincludedir = @oldincludedir@
++pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
++psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
+ subdirs = @subdirs@
+@@ -323,7 +325,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
+@@ -382,7 +384,7 @@
+ # dejagnu support
+ RUNTESTFLAGS = 
+-all: newlib.h
++all: $(BUILT_SOURCES) newlib.h
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
+ .SUFFIXES:
+@@ -687,14 +689,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
+@@ -719,6 +723,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 \
+@@ -837,8 +842,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.