]> rtime.felk.cvut.cz Git - rtems-devel.git/commitdiff
gcc and binutils update for rtems-4.9.x arm9 build
authorPavel Pisa <pisa@cmp.felk.cvut.cz>
Sun, 29 Nov 2009 00:08:05 +0000 (01:08 +0100)
committerPavel Pisa <pisa@cmp.felk.cvut.cz>
Sun, 29 Nov 2009 00:08:05 +0000 (01:08 +0100)
14 files changed:
binutils-patches/2.17/binutils-2.17-rtems4.8-20061021.diff [deleted file]
binutils-patches/2.17/series [deleted file]
gcc-patches/4.1.2/gcc-core-4.1.2-rtems4.8-20070405.diff [deleted file]
gcc-patches/4.1.2/series [deleted file]
gcc-patches/4.3.4/gcc-core-4.3.4-rtems4.9-20090825.diff [new file with mode: 0644]
gcc-patches/4.3.4/series [new file with mode: 0644]
newlib-patches/1.15.0/newlib-1.15.0-rtems4.8-20070413.diff [deleted file]
newlib-patches/1.15.0/series [deleted file]
newlib-patches/newlib-1.16.0/newlib-1.16.0-rtems4.9-20090324.diff [new file with mode: 0644]
newlib-patches/newlib-1.16.0/series [new file with mode: 0644]
rtems-build/arm-csb336/binutils/binutils-arm9-rtems.cfg
rtems-build/arm-csb336/binutils/control
rtems-build/arm-csb336/gcc/control
rtems-build/arm-csb336/gcc/gcc-arm9-rtems.cfg

diff --git a/binutils-patches/2.17/binutils-2.17-rtems4.8-20061021.diff b/binutils-patches/2.17/binutils-2.17-rtems4.8-20061021.diff
deleted file mode 100644 (file)
index a5b2216..0000000
+++ /dev/null
@@ -1,556 +0,0 @@
-diff -uNr binutils-2.17.orig/bfd/bfd-in2.h binutils-2.17/bfd/bfd-in2.h
---- binutils-2.17.orig/bfd/bfd-in2.h   2006-03-26 01:38:42.000000000 +0100
-+++ binutils-2.17/bfd/bfd-in2.h        2006-10-21 13:53:23.000000000 +0200
-@@ -643,6 +643,12 @@
-   DYN_NO_NEEDED = 8
- };
-+enum notice_asneeded_action {
-+  notice_as_needed,
-+  notice_not_needed,
-+  notice_needed
-+};
-+
- extern bfd_boolean bfd_elf_record_link_assignment
-   (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
-    bfd_boolean);
-diff -uNr binutils-2.17.orig/bfd/bfd-in.h binutils-2.17/bfd/bfd-in.h
---- binutils-2.17.orig/bfd/bfd-in.h    2006-03-16 13:20:15.000000000 +0100
-+++ binutils-2.17/bfd/bfd-in.h 2006-10-21 13:53:23.000000000 +0200
-@@ -636,6 +636,12 @@
-   DYN_NO_NEEDED = 8
- };
-+enum notice_asneeded_action {
-+  notice_as_needed,
-+  notice_not_needed,
-+  notice_needed
-+};
-+
- extern bfd_boolean bfd_elf_record_link_assignment
-   (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
-    bfd_boolean);
-diff -uNr binutils-2.17.orig/bfd/ChangeLog binutils-2.17/bfd/ChangeLog
---- binutils-2.17.orig/bfd/ChangeLog   2006-06-23 20:18:16.000000000 +0200
-+++ binutils-2.17/bfd/ChangeLog        2006-10-21 13:53:23.000000000 +0200
-@@ -1,3 +1,25 @@
-+2006-08-08  Nick Clifton  <nickc@redhat.com>
-+
-+      PR binutils/2724
-+      * coffcode.h (coff_new_section_hook): Only modify the section
-+      symbol of sections which were created by the user.
-+
-+2006-07-19  Alan Modra  <amodra@bigpond.net.au>
-+
-+      * bfd-in.h (enum notice_asneeded_action): Define.
-+      * bfd-in2.h: Regenerate.
-+      * elflink.c (elf_link_add_object_symbols): Call linker "notice"
-+      function with NULL name for as-needed handling.
-+
-+2006-07-12  Matthew R. Dempsky  <mrd@alkemio.org>
-+
-+      * cpu-m68k.c (bfd_m68k_compatible): Handle CPU32.
-+
-+2006-06-23  Daniel Jacobowitz  <dan@codesourcery.com>
-+
-+      * Makefile.am: Clear RELEASE.
-+      * Makefile.in: Regenerated.
-+
- 2006-06-23  Daniel Jacobowitz  <dan@codesourcery.com>
-       * configure.in: Update version to 2.17.
-diff -uNr binutils-2.17.orig/bfd/coffcode.h binutils-2.17/bfd/coffcode.h
---- binutils-2.17.orig/bfd/coffcode.h  2005-10-25 19:40:09.000000000 +0200
-+++ binutils-2.17/bfd/coffcode.h       2006-10-21 13:53:24.000000000 +0200
-@@ -1546,9 +1546,6 @@
- static bfd_boolean
- coff_new_section_hook (bfd * abfd, asection * section)
- {
--  combined_entry_type *native;
--  bfd_size_type amt;
--
-   section->alignment_power = COFF_DEFAULT_SECTION_ALIGNMENT_POWER;
- #ifdef RS6000COFF_C
-@@ -1560,27 +1557,34 @@
-     section->alignment_power = bfd_xcoff_data_align_power (abfd);
- #endif
--  /* Allocate aux records for section symbols, to store size and
--     related info.
--
--     @@ The 10 is a guess at a plausible maximum number of aux entries
--     (but shouldn't be a constant).  */
--  amt = sizeof (combined_entry_type) * 10;
--  native = bfd_zalloc (abfd, amt);
--  if (native == NULL)
--    return FALSE;
--
--  /* We don't need to set up n_name, n_value, or n_scnum in the native
--     symbol information, since they'll be overridden by the BFD symbol
--     anyhow.  However, we do need to set the type and storage class,
--     in case this symbol winds up getting written out.  The value 0
--     for n_numaux is already correct.  */
--
--  native->u.syment.n_type = T_NULL;
--  native->u.syment.n_sclass = C_STAT;
-+  /* PR binutils/2724: Only real sections have a symbol that
-+     has the coff_symbol_type structure allocated for it.  */
-+  if (! bfd_is_const_section (section))
-+    {
-+      combined_entry_type *native;
-+      bfd_size_type amt;
-+
-+      /* Allocate aux records for section symbols, to store size and
-+       related info.
-+
-+       @@ The 10 is a guess at a plausible maximum number of aux entries
-+       (but shouldn't be a constant).  */
-+      amt = sizeof (combined_entry_type) * 10;
-+      native = bfd_zalloc (abfd, amt);
-+      if (native == NULL)
-+      return FALSE;
--  coffsymbol (section->symbol)->native = native;
-+      /* We don't need to set up n_name, n_value, or n_scnum in the native
-+       symbol information, since they'll be overridden by the BFD symbol
-+       anyhow.  However, we do need to set the type and storage class,
-+       in case this symbol winds up getting written out.  The value 0
-+       for n_numaux is already correct.  */
-+      native->u.syment.n_type = T_NULL;
-+      native->u.syment.n_sclass = C_STAT;
-+      coffsymbol (section->symbol)->native = native;
-+    }
-+  
-   coff_set_custom_section_alignment (abfd, section,
-                                    coff_section_alignment_table,
-                                    coff_section_alignment_table_size);
-diff -uNr binutils-2.17.orig/bfd/cpu-m68k.c binutils-2.17/bfd/cpu-m68k.c
---- binutils-2.17.orig/bfd/cpu-m68k.c  2006-03-25 11:24:27.000000000 +0100
-+++ binutils-2.17/bfd/cpu-m68k.c       2006-10-21 13:53:24.000000000 +0200
-@@ -202,6 +202,9 @@
-   if (a->mach <= bfd_mach_m68060 && b->mach <= bfd_mach_m68060)
-     /* Merge m68k machine. */
-     return a->mach > b->mach ? a : b;
-+  else if (a->mach == bfd_mach_cpu32 && b->mach == bfd_mach_cpu32)
-+    /* CPU32 is compatible with itself. */
-+    return a;
-   else if (a->mach >= bfd_mach_mcf_isa_a_nodiv
-          && b->mach >= bfd_mach_mcf_isa_a_nodiv)
-     {
-diff -uNr binutils-2.17.orig/bfd/elflink.c binutils-2.17/bfd/elflink.c
---- binutils-2.17.orig/bfd/elflink.c   2006-05-22 17:06:36.000000000 +0200
-+++ binutils-2.17/bfd/elflink.c        2006-10-21 13:53:24.000000000 +0200
-@@ -3496,6 +3496,13 @@
-       if (alloc_mark == NULL)
-       goto error_free_vers;
-+      /* Make a special call to the linker "notice" function to
-+       tell it that we are about to handle an as-needed lib.  */
-+      if (!(*info->callbacks->notice) (info, NULL, abfd, NULL,
-+                                     notice_as_needed))
-+      return FALSE;
-+
-+
-       /* Clone the symbol table and sym hashes.  Remember some
-        pointers into the symbol table, and dynamic symbol count.  */
-       old_hash = (char *) old_tab + tabsize;
-@@ -4169,6 +4176,12 @@
-           }
-       }
-+      /* Make a special call to the linker "notice" function to
-+       tell it that symbols added for crefs may need to be removed.  */
-+      if (!(*info->callbacks->notice) (info, NULL, abfd, NULL,
-+                                     notice_not_needed))
-+      return FALSE;
-+
-       free (old_tab);
-       objalloc_free_block ((struct objalloc *) htab->root.table.memory,
-                          alloc_mark);
-@@ -4179,6 +4192,9 @@
-   if (old_tab != NULL)
-     {
-+      if (!(*info->callbacks->notice) (info, NULL, abfd, NULL,
-+                                     notice_needed))
-+      return FALSE;
-       free (old_tab);
-       old_tab = NULL;
-     }
-diff -uNr binutils-2.17.orig/bfd/version.h binutils-2.17/bfd/version.h
---- binutils-2.17.orig/bfd/version.h   2006-06-23 20:14:41.000000000 +0200
-+++ binutils-2.17/bfd/version.h        2006-10-21 13:53:24.000000000 +0200
-@@ -1,3 +1,3 @@
--#define BFD_VERSION_DATE 20060623
-+#define BFD_VERSION_DATE 20061021
- #define BFD_VERSION @bfd_version@
- #define BFD_VERSION_STRING @bfd_version_string@
-diff -uNr binutils-2.17.orig/binutils/ChangeLog binutils-2.17/binutils/ChangeLog
---- binutils-2.17.orig/binutils/ChangeLog      2006-06-12 15:05:03.000000000 +0200
-+++ binutils-2.17/binutils/ChangeLog   2006-10-21 13:53:24.000000000 +0200
-@@ -1,3 +1,8 @@
-+2006-08-15  Nick Clifton  <nickc@redhat.com>
-+
-+      PR binutils/3039
-+      * wrstabs.c (stab_tag_type): Initialize 'size'.
-+
- 2006-06-07  Joseph S. Myers  <joseph@codesourcery.com>
-       * po/Make-in (pdf, ps): New dummy targets.
-diff -uNr binutils-2.17.orig/binutils/wrstabs.c binutils-2.17/binutils/wrstabs.c
---- binutils-2.17.orig/binutils/wrstabs.c      2006-03-16 13:20:16.000000000 +0100
-+++ binutils-2.17/binutils/wrstabs.c   2006-10-21 13:53:24.000000000 +0200
-@@ -1869,7 +1869,7 @@
- {
-   struct stab_write_handle *info = (struct stab_write_handle *) p;
-   long index;
--  unsigned int size;
-+  unsigned int size = 0;
-   index = stab_get_struct_index (info, name, id, kind, &size);
-   if (index < 0)
-diff -uNr binutils-2.17.orig/gas/ChangeLog binutils-2.17/gas/ChangeLog
---- binutils-2.17.orig/gas/ChangeLog   2006-06-12 15:05:03.000000000 +0200
-+++ binutils-2.17/gas/ChangeLog        2006-10-21 13:53:24.000000000 +0200
-@@ -1,3 +1,8 @@
-+2006-07-19  Mat Hostetter  <mat@lcs.mit.edu>
-+
-+      * symbols.c (report_op_error): Fix pasto.  Don't use as_bad_where
-+      when file and line unknown.
-+
- 2006-06-07  Joseph S. Myers  <joseph@codesourcery.com>
-       * po/Make-in (pdf, ps): New dummy targets.
-diff -uNr binutils-2.17.orig/gas/symbols.c binutils-2.17/gas/symbols.c
---- binutils-2.17.orig/gas/symbols.c   2006-01-09 18:14:40.000000000 +0100
-+++ binutils-2.17/gas/symbols.c        2006-10-21 13:53:24.000000000 +0200
-@@ -928,13 +928,11 @@
-         && seg_right != undefined_section)
-       {
-         if (right)
--          as_bad_where (file, line,
--                        _("invalid sections for operation on `%s' and `%s' setting `%s'"),
--                        S_GET_NAME (left), S_GET_NAME (right), S_GET_NAME (symp));
-+          as_bad (_("invalid sections for operation on `%s' and `%s' setting `%s'"),
-+                  S_GET_NAME (left), S_GET_NAME (right), S_GET_NAME (symp));
-         else
--          as_bad_where (file, line,
--                        _("invalid section for operation on `%s' setting `%s'"),
--                        S_GET_NAME (left), S_GET_NAME (symp));
-+          as_bad (_("invalid section for operation on `%s' setting `%s'"),
-+                  S_GET_NAME (left), S_GET_NAME (symp));
-       }
-     }
- }
-diff -uNr binutils-2.17.orig/ld/ChangeLog binutils-2.17/ld/ChangeLog
---- binutils-2.17.orig/ld/ChangeLog    2006-06-12 15:07:28.000000000 +0200
-+++ binutils-2.17/ld/ChangeLog 2006-10-21 13:53:24.000000000 +0200
-@@ -1,3 +1,20 @@
-+2006-07-19  Alan Modra  <amodra@bigpond.net.au>
-+
-+      * ld.h (handle_asneeded_cref): Declare.
-+      * ldcref.c: Include objalloc.h.
-+      (old_table, old_tab, alloc_mark): New variables.
-+      (tabsize, entsize, refsize, old_symcount): Likewise.
-+      (add_cref): Use bfd_hash_allocate for refs.
-+      (handle_asneeded_cref): New function.
-+      * ldmain.c (notice): Call handle_asneeded_cref for NULL name.
-+
-+2006-07-04  Daniel Jacobowitz  <dan@codesourcery.com>
-+
-+      Backport:
-+      2006-05-19  Alan Modra  <amodra@bigpond.net.au>
-+      * ldlang.c (lang_size_sections_1): Don't check mem regions for
-+      os->ignored sections.
-+
- 2006-06-12  Fred Fish  <fnf@specifix.com>
-       * emulparams/elf32bmip.sh (OTHER_SECTIONS): Keep the
-diff -uNr binutils-2.17.orig/ld/configure.tgt binutils-2.17/ld/configure.tgt
---- binutils-2.17.orig/ld/configure.tgt        2006-04-05 14:41:57.000000000 +0200
-+++ binutils-2.17/ld/configure.tgt     2006-10-21 13:53:24.000000000 +0200
-@@ -83,7 +83,8 @@
- avr-*-*)              targ_emul=avr2
-                       targ_extra_emuls="avr1 avr3 avr4 avr5"
-                       ;;
--bfin-*-elf)           targ_emul=elf32bfin; targ_extra_emuls="elf32bfinfd" ;;
-+bfin-*-elf | bfin-*-rtems*)
-+                      targ_emul=elf32bfin; targ_extra_emuls="elf32bfinfd" ;;
- bfin-*-uclinux*)      targ_emul=elf32bfin; targ_extra_emuls="elf32bfinfd" ;;
- cr16c-*-elf*)           targ_emul=elf32cr16c
-                       ;;
-diff -uNr binutils-2.17.orig/ld/emulparams/h8300elf.sh binutils-2.17/ld/emulparams/h8300elf.sh
---- binutils-2.17.orig/ld/emulparams/h8300elf.sh       2005-12-22 18:43:34.000000000 +0100
-+++ binutils-2.17/ld/emulparams/h8300elf.sh    2006-10-21 13:53:24.000000000 +0200
-@@ -17,7 +17,7 @@
- TINY_DATA_SECTION=".tinydata  0xff8000 :
-   {
-       *(.tinydata)
--      _tinydata = .;
-+      ${RELOCATING+ _tinydata = .; }
-   }"
- TINY_BSS_SECTION=".tinybss    : AT (_tinydata)
-   {
-diff -uNr binutils-2.17.orig/ld/ldcref.c binutils-2.17/ld/ldcref.c
---- binutils-2.17.orig/ld/ldcref.c     2006-03-16 13:20:16.000000000 +0100
-+++ binutils-2.17/ld/ldcref.c  2006-10-21 13:53:24.000000000 +0200
-@@ -27,6 +27,7 @@
- #include "sysdep.h"
- #include "bfdlink.h"
- #include "libiberty.h"
-+#include "objalloc.h"
- #include "ld.h"
- #include "ldmain.h"
-@@ -101,6 +102,15 @@
- static size_t cref_symcount;
-+/* Used to take a snapshot of the cref hash table when starting to
-+   add syms from an as-needed library.  */
-+static struct bfd_hash_entry **old_table;
-+static unsigned int old_size;
-+static void *old_tab;
-+static void *alloc_mark;
-+static size_t tabsize, entsize, refsize;
-+static size_t old_symcount;
-+
- /* Create an entry in a cref hash table.  */
- static struct bfd_hash_entry *
-@@ -165,7 +175,9 @@
-   if (r == NULL)
-     {
--      r = xmalloc (sizeof *r);
-+      r = bfd_hash_allocate (&cref_table.root, sizeof *r);
-+      if (r == NULL)
-+      einfo (_("%X%P: cref alloc failed: %E\n"));
-       r->next = h->refs;
-       h->refs = r;
-       r->abfd = abfd;
-@@ -182,6 +194,123 @@
-     r->def = TRUE;
- }
-+/* Called before loading an as-needed library to take a snapshot of
-+   the cref hash table, and after we have loaded or found that the
-+   library was not needed.  */
-+
-+bfd_boolean
-+handle_asneeded_cref (bfd *abfd ATTRIBUTE_UNUSED,
-+                    enum notice_asneeded_action act)
-+{
-+  unsigned int i;
-+
-+  if (!cref_initialized)
-+    return TRUE;
-+
-+  if (act == notice_as_needed)
-+    {
-+      char *old_ent, *old_ref;
-+
-+      for (i = 0; i < cref_table.root.size; i++)
-+      {
-+        struct bfd_hash_entry *p;
-+        struct cref_hash_entry *c;
-+        struct cref_ref *r;
-+
-+        for (p = cref_table.root.table[i]; p != NULL; p = p->next)
-+          {
-+            entsize += cref_table.root.entsize;
-+            c = (struct cref_hash_entry *) p;
-+            for (r = c->refs; r != NULL; r = r->next)
-+              refsize += sizeof (struct cref_hash_entry);
-+          }
-+      }
-+
-+      tabsize = cref_table.root.size * sizeof (struct bfd_hash_entry *);
-+      old_tab = xmalloc (tabsize + entsize + refsize);
-+
-+      alloc_mark = bfd_hash_allocate (&cref_table.root, 1);
-+      if (alloc_mark == NULL)
-+      return FALSE;
-+
-+      memcpy (old_tab, cref_table.root.table, tabsize);
-+      old_ent = (char *) old_tab + tabsize;
-+      old_ref = (char *) old_ent + entsize;
-+      old_table = cref_table.root.table;
-+      old_size = cref_table.root.size;
-+      old_symcount = cref_symcount;
-+
-+      for (i = 0; i < cref_table.root.size; i++)
-+      {
-+        struct bfd_hash_entry *p;
-+        struct cref_hash_entry *c;
-+        struct cref_ref *r;
-+
-+        for (p = cref_table.root.table[i]; p != NULL; p = p->next)
-+          {
-+            memcpy (old_ent, p, cref_table.root.entsize);
-+            old_ent = (char *) old_ent + cref_table.root.entsize;
-+            c = (struct cref_hash_entry *) p;
-+            for (r = c->refs; r != NULL; r = r->next)
-+              {
-+                memcpy (old_ref, r, sizeof (struct cref_hash_entry));
-+                old_ref = (char *) old_ref + sizeof (struct cref_hash_entry);
-+              }
-+          }
-+      }
-+      return TRUE;
-+    }
-+
-+  if (act == notice_not_needed)
-+    {
-+      char *old_ent, *old_ref;
-+
-+      if (old_tab == NULL)
-+      {
-+        /* The only way old_tab can be NULL is if the cref hash table
-+           had not been initialised when notice_as_needed.  */
-+        bfd_hash_table_free (&cref_table.root);
-+        cref_initialized = FALSE;
-+        return TRUE;
-+      }
-+
-+      old_ent = (char *) old_tab + tabsize;
-+      old_ref = (char *) old_ent + entsize;
-+      cref_table.root.table = old_table;
-+      cref_table.root.size = old_size;
-+      memcpy (cref_table.root.table, old_tab, tabsize);
-+      cref_symcount = old_symcount;
-+
-+      for (i = 0; i < cref_table.root.size; i++)
-+      {
-+        struct bfd_hash_entry *p;
-+        struct cref_hash_entry *c;
-+        struct cref_ref *r;
-+
-+        for (p = cref_table.root.table[i]; p != NULL; p = p->next)
-+          {
-+            memcpy (p, old_ent, cref_table.root.entsize);
-+            old_ent = (char *) old_ent + cref_table.root.entsize;
-+            c = (struct cref_hash_entry *) p;
-+            for (r = c->refs; r != NULL; r = r->next)
-+              {
-+                memcpy (r, old_ref, sizeof (struct cref_hash_entry));
-+                old_ref = (char *) old_ref + sizeof (struct cref_hash_entry);
-+              }
-+          }
-+      }
-+
-+      objalloc_free_block ((struct objalloc *) cref_table.root.memory,
-+                         alloc_mark);
-+    }
-+  else if (act != notice_needed)
-+    return FALSE;
-+
-+  free (old_tab);
-+  old_tab = NULL;
-+  return TRUE;
-+}
-+
- /* Copy the addresses of the hash table entries into an array.  This
-    is called via cref_hash_traverse.  We also fill in the demangled
-    name.  */
-diff -uNr binutils-2.17.orig/ld/ld.h binutils-2.17/ld/ld.h
---- binutils-2.17.orig/ld/ld.h 2005-09-30 13:42:04.000000000 +0200
-+++ binutils-2.17/ld/ld.h      2006-10-21 13:53:24.000000000 +0200
-@@ -1,6 +1,6 @@
- /* ld.h -- general linker header file
-    Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
--   2001, 2002, 2003, 2004, 2005
-+   2001, 2002, 2003, 2004, 2005, 2006
-    Free Software Foundation, Inc.
-    This file is part of GLD, the Gnu Linker.
-@@ -282,6 +282,7 @@
- extern int yyparse (void);
- extern void add_cref (const char *, bfd *, asection *, bfd_vma);
-+extern bfd_boolean handle_asneeded_cref (bfd *, enum notice_asneeded_action);
- extern void output_cref (FILE *);
- extern void check_nocrossrefs (void);
- extern void ld_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
-diff -uNr binutils-2.17.orig/ld/ldlang.c binutils-2.17/ld/ldlang.c
---- binutils-2.17.orig/ld/ldlang.c     2006-06-12 15:05:04.000000000 +0200
-+++ binutils-2.17/ld/ldlang.c  2006-10-21 13:53:24.000000000 +0200
-@@ -4207,7 +4207,8 @@
-                   /* If a loadable section is using the default memory
-                      region, and some non default memory regions were
-                      defined, issue an error message.  */
--                  if (!IGNORE_SECTION (os->bfd_section)
-+                  if (!os->ignored
-+                      && !IGNORE_SECTION (os->bfd_section)
-                       && ! link_info.relocatable
-                       && check_regions
-                       && strcmp (os->region->name,
-diff -uNr binutils-2.17.orig/ld/ldmain.c binutils-2.17/ld/ldmain.c
---- binutils-2.17.orig/ld/ldmain.c     2006-04-06 20:52:45.000000000 +0200
-+++ binutils-2.17/ld/ldmain.c  2006-10-21 13:53:24.000000000 +0200
-@@ -1511,6 +1511,13 @@
-       asection *section,
-       bfd_vma value)
- {
-+  if (name == NULL)
-+    {
-+      if (command_line.cref || nocrossref_list != NULL)
-+      return handle_asneeded_cref (abfd, value);
-+      return TRUE;
-+    }
-+
-   if (! info->notice_all
-       || (info->notice_hash != NULL
-         && bfd_hash_lookup (info->notice_hash, name, FALSE, FALSE) != NULL))
-diff -uNr binutils-2.17.orig/ld/testsuite/ChangeLog binutils-2.17/ld/testsuite/ChangeLog
---- binutils-2.17.orig/ld/testsuite/ChangeLog  2006-06-12 15:44:33.000000000 +0200
-+++ binutils-2.17/ld/testsuite/ChangeLog       2006-10-21 13:53:24.000000000 +0200
-@@ -1,3 +1,17 @@
-+2006-07-12  Richard Sandiford  <richard@codesourcery.com>
-+
-+      * ld-m68k/merge-ok-1c.d: New test.
-+      * ld-m68k/m68k.exp: Run it.
-+
-+2006-07-04  Daniel Jacobowitz  <dan@codesourcery.com>
-+
-+      Backport:
-+      2006-05-19  Alan Modra  <amodra@bigpond.net.au>
-+      * ld-scripts/empty-orphan.d: Update again.
-+
-+      * ld-scripts/empty-orphan.t: Discard .reginfo.
-+      * ld-scripts/empty-orphan.d: Update.
-+
- 2006-06-12  Daniel Jacobowitz  <dan@codesourcery.com>
-       Backport:
-diff -uNr binutils-2.17.orig/ld/testsuite/ld-m68k/m68k.exp binutils-2.17/ld/testsuite/ld-m68k/m68k.exp
---- binutils-2.17.orig/ld/testsuite/ld-m68k/m68k.exp   2006-03-25 11:24:27.000000000 +0100
-+++ binutils-2.17/ld/testsuite/ld-m68k/m68k.exp        2006-10-21 13:53:24.000000000 +0200
-@@ -53,3 +53,4 @@
- run_dump_test "merge-error-1e"
- run_dump_test "merge-ok-1a"
- run_dump_test "merge-ok-1b"
-+run_dump_test "merge-ok-1c"
-diff -uNr binutils-2.17.orig/ld/testsuite/ld-scripts/empty-orphan.d binutils-2.17/ld/testsuite/ld-scripts/empty-orphan.d
---- binutils-2.17.orig/ld/testsuite/ld-scripts/empty-orphan.d  2005-03-17 17:20:39.000000000 +0100
-+++ binutils-2.17/ld/testsuite/ld-scripts/empty-orphan.d       2006-10-21 13:53:24.000000000 +0200
-@@ -1,3 +1,6 @@
- #source: empty-orphan.s
- #ld: -T empty-orphan.t
--#error: no memory region specified for loadable section
-+#readelf: -l --wide
-+#...
-+ +LOAD +[x0-9a-f]+ [x0]+70000000 [x0]+70000000 [x0]+(2|4|8|10|20|40|80) .*
-+#pass
-diff -uNr binutils-2.17.orig/ld/testsuite/ld-scripts/empty-orphan.t binutils-2.17/ld/testsuite/ld-scripts/empty-orphan.t
---- binutils-2.17.orig/ld/testsuite/ld-scripts/empty-orphan.t  2005-03-17 17:20:39.000000000 +0100
-+++ binutils-2.17/ld/testsuite/ld-scripts/empty-orphan.t       2006-10-21 13:53:24.000000000 +0200
-@@ -17,5 +17,6 @@
-    .text : { *(.text) } > text_mem : text_phdr
-    .data : { *(.data) } > data_mem : data_phdr
-    .bss : { *(.bss) } > data_mem : data_phdr
-+   /DISCARD/ : { *(.reginfo) }
-    /* .orphan_data is an orphan */
- }
diff --git a/binutils-patches/2.17/series b/binutils-patches/2.17/series
deleted file mode 100644 (file)
index a3ba899..0000000
+++ /dev/null
@@ -1 +0,0 @@
-binutils-2.17-rtems4.8-20061021.diff
diff --git a/gcc-patches/4.1.2/gcc-core-4.1.2-rtems4.8-20070405.diff b/gcc-patches/4.1.2/gcc-core-4.1.2-rtems4.8-20070405.diff
deleted file mode 100644 (file)
index f9de16d..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-diff -uNr gcc-4.1.2.orig/gcc/config/arm/rtems-elf.h gcc-4.1.2/gcc/config/arm/rtems-elf.h
---- gcc-4.1.2.orig/gcc/config/arm/rtems-elf.h  2005-11-22 00:28:29.000000000 +0100
-+++ gcc-4.1.2/gcc/config/arm/rtems-elf.h       2007-04-05 04:50:02.000000000 +0200
-@@ -27,6 +27,7 @@
- #define TARGET_OS_CPP_BUILTINS()              \
-     do {                                      \
-       builtin_define ("__rtems__");           \
-+      builtin_define ("__USE_INIT_FINI__");   \
-       builtin_assert ("system=rtems");        \
-     } while (0)
-diff -uNr gcc-4.1.2.orig/gcc/config/c4x/rtems.h gcc-4.1.2/gcc/config/c4x/rtems.h
---- gcc-4.1.2.orig/gcc/config/c4x/rtems.h      2005-06-25 03:22:41.000000000 +0200
-+++ gcc-4.1.2/gcc/config/c4x/rtems.h   2007-04-05 04:50:02.000000000 +0200
-@@ -24,6 +24,5 @@
- #define TARGET_OS_CPP_BUILTINS()              \
-     do {                                      \
-       builtin_define ("__rtems__");           \
--      builtin_define ("__USE_INIT_FINI__");   \
-       builtin_assert ("system=rtems");        \
-     } while (0)
-diff -uNr gcc-4.1.2.orig/gcc/config/mips/elf.h gcc-4.1.2/gcc/config/mips/elf.h
---- gcc-4.1.2.orig/gcc/config/mips/elf.h       2005-07-09 10:46:34.000000000 +0200
-+++ gcc-4.1.2/gcc/config/mips/elf.h    2007-04-05 04:50:03.000000000 +0200
-@@ -48,5 +48,3 @@
- #undef  ENDFILE_SPEC
- #define ENDFILE_SPEC "crtend%O%s crtn%O%s"
--
--#define NO_IMPLICIT_EXTERN_C 1
-diff -uNr gcc-4.1.2.orig/gcc/config/mips/mips.h gcc-4.1.2/gcc/config/mips/mips.h
---- gcc-4.1.2.orig/gcc/config/mips/mips.h      2006-02-17 22:38:59.000000000 +0100
-+++ gcc-4.1.2/gcc/config/mips/mips.h   2007-04-05 04:49:10.000000000 +0200
-@@ -450,6 +450,8 @@
- #endif
- #endif /* IN_LIBGCC2 */
-+#define TARGET_LIBGCC_SDATA_SECTION ".sdata"
-+
- #ifndef MULTILIB_ENDIAN_DEFAULT
- #if TARGET_ENDIAN_DEFAULT == 0
- #define MULTILIB_ENDIAN_DEFAULT "EL"
-@@ -2712,7 +2714,6 @@
- /* Define the strings to put out for each section in the object file.  */
- #define TEXT_SECTION_ASM_OP   "\t.text"       /* instructions */
- #define DATA_SECTION_ASM_OP   "\t.data"       /* large data */
--#define SDATA_SECTION_ASM_OP  "\t.sdata"      /* small data */
- #undef READONLY_DATA_SECTION_ASM_OP
- #define READONLY_DATA_SECTION_ASM_OP  "\t.rdata"      /* read-only data */
-diff -uNr gcc-4.1.2.orig/gcc/config.gcc gcc-4.1.2/gcc/config.gcc
---- gcc-4.1.2.orig/gcc/config.gcc      2006-10-16 01:12:23.000000000 +0200
-+++ gcc-4.1.2/gcc/config.gcc   2007-04-05 04:50:03.000000000 +0200
-@@ -761,6 +761,11 @@
-         tmake_file=bfin/t-bfin-elf
-         use_collect2=no
-         ;;
-+bfin*-rtems*)
-+      tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h bfin/rtems.h rtems.h"
-+        tmake_file=bfin/t-bfin-elf
-+        use_collect2=no
-+        ;;
- bfin*-*)
-       tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h"
-         tmake_file=bfin/t-bfin
-@@ -1560,7 +1565,7 @@
-       tm_defines="MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_O64"
-       use_fixproto=yes
-       ;;
--mips*-*-rtems*)
-+mips-*-rtems*)
-       tm_file="elfos.h ${tm_file} mips/elf.h mips/rtems.h rtems.h"
-       tmake_file="mips/t-elf t-rtems mips/t-rtems"
-       ;;
-diff -uNr gcc-4.1.2.orig/gcc/crtstuff.c gcc-4.1.2/gcc/crtstuff.c
---- gcc-4.1.2.orig/gcc/crtstuff.c      2005-11-15 02:21:29.000000000 +0100
-+++ gcc-4.1.2/gcc/crtstuff.c   2007-04-05 04:49:10.000000000 +0200
-@@ -225,6 +225,9 @@
-    in one DSO or the main program is not used in another object.  The
-    dynamic linker takes care of this.  */
-+#ifdef TARGET_LIBGCC_SDATA_SECTION
-+extern void *__dso_handle __attribute__ ((__section__ (TARGET_LIBGCC_SDATA_SECTION)));
-+#endif
- #ifdef HAVE_GAS_HIDDEN
- extern void *__dso_handle __attribute__ ((__visibility__ ("hidden")));
- #endif
-diff -uNr gcc-4.1.2.orig/Makefile.in gcc-4.1.2/Makefile.in
---- gcc-4.1.2.orig/Makefile.in 2006-04-04 23:03:05.000000000 +0200
-+++ gcc-4.1.2/Makefile.in      2007-04-05 04:50:03.000000000 +0200
-@@ -329,9 +329,9 @@
- # CFLAGS will be just -g.  We want to ensure that TARGET libraries
- # (which we know are built with gcc) are built with optimizations so
- # prepend -O2 when setting CFLAGS_FOR_TARGET.
--CFLAGS_FOR_TARGET = -O2 $(CFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET)
-+CFLAGS_FOR_TARGET = $(strip -O2 $(CFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET))
- SYSROOT_CFLAGS_FOR_TARGET = @SYSROOT_CFLAGS_FOR_TARGET@
--CXXFLAGS_FOR_TARGET = $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET)
-+CXXFLAGS_FOR_TARGET = $(strip $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET))
- LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET)
- LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates
- LDFLAGS_FOR_TARGET = 
diff --git a/gcc-patches/4.1.2/series b/gcc-patches/4.1.2/series
deleted file mode 100644 (file)
index f54fce9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-gcc-core-4.1.2-rtems4.8-20070405.diff
diff --git a/gcc-patches/4.3.4/gcc-core-4.3.4-rtems4.9-20090825.diff b/gcc-patches/4.3.4/gcc-core-4.3.4-rtems4.9-20090825.diff
new file mode 100644 (file)
index 0000000..31d6089
--- /dev/null
@@ -0,0 +1,146 @@
+---
+ configure                  |    3 ++-
+ configure.ac               |    3 ++-
+ gcc/config/arm/rtems-elf.h |    1 -
+ gcc/config/avr/t-rtems     |    3 ++-
+ gcc/config/mips/elf.h      |    2 --
+ gcc/config/rs6000/rtems.h  |   12 +++++++++++-
+ gcc/config/rs6000/t-rtems  |   11 +++++++----
+ 7 files changed, 24 insertions(+), 11 deletions(-)
+
+Index: gcc-4.3.4/configure
+===================================================================
+--- gcc-4.3.4.orig/configure   2009-04-25 07:55:24.000000000 +0200
++++ gcc-4.3.4/configure        2009-11-28 22:40:01.647590027 +0100
+@@ -2185,6 +2185,7 @@
+     noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss ${libgcj} target-libmudflap"
+     ;;
+   *-*-rtems*)
++    skipdirs="$skipdirs target-libiberty"
+     noconfigdirs="$noconfigdirs target-libgloss ${libgcj}"
+     ;;
+     # The tpf target doesn't support gdb yet.
+@@ -5831,7 +5832,7 @@
+        # to it.  This is right: we don't want to search that directory
+        # for binaries, but we want the header files in there, so add
+        # them explicitly.
+-       FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -isystem $$r/$(HOST_SUBDIR)/gcc/include'
++       FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -isystem $$r/$(HOST_SUBDIR)/gcc/include -isystem $$r/$(HOST_SUBDIR)/gcc/include-fixed'
+        # Someone might think of using the pre-installed headers on
+        # Canadian crosses, in case the installed compiler is not fully
+Index: gcc-4.3.4/configure.ac
+===================================================================
+--- gcc-4.3.4.orig/configure.ac        2009-04-25 07:55:24.000000000 +0200
++++ gcc-4.3.4/configure.ac     2009-11-28 22:40:01.647590027 +0100
+@@ -462,6 +462,7 @@
+     noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss ${libgcj} target-libmudflap"
+     ;;
+   *-*-rtems*)
++    skipdirs="$skipdirs target-libiberty"
+     noconfigdirs="$noconfigdirs target-libgloss ${libgcj}"
+     ;;
+     # The tpf target doesn't support gdb yet.
+@@ -2342,7 +2343,7 @@
+        # to it.  This is right: we don't want to search that directory
+        # for binaries, but we want the header files in there, so add
+        # them explicitly.
+-       FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -isystem $$r/$(HOST_SUBDIR)/gcc/include'
++       FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -isystem $$r/$(HOST_SUBDIR)/gcc/include -isystem $$r/$(HOST_SUBDIR)/gcc/include-fixed'
+        # Someone might think of using the pre-installed headers on
+        # Canadian crosses, in case the installed compiler is not fully
+Index: gcc-4.3.4/gcc/config/arm/rtems-elf.h
+===================================================================
+--- gcc-4.3.4.orig/gcc/config/arm/rtems-elf.h  2008-02-06 08:33:26.000000000 +0100
++++ gcc-4.3.4/gcc/config/arm/rtems-elf.h       2009-11-28 22:40:01.647590027 +0100
+@@ -43,4 +43,3 @@
+  *  with how this used to be defined.
+  */
+ #undef LINK_GCC_C_SEQUENCE_SPEC
+-#define LINK_GCC_C_SEQUENCE_SPEC "%G %L"
+Index: gcc-4.3.4/gcc/config/avr/t-rtems
+===================================================================
+--- gcc-4.3.4.orig/gcc/config/avr/t-rtems      2004-11-23 04:44:03.000000000 +0100
++++ gcc-4.3.4/gcc/config/avr/t-rtems   2009-11-28 22:40:01.647590027 +0100
+@@ -1,3 +1,4 @@
+ # Multilibs for avr RTEMS targets.
+-# ATM, this is just a stub
++# RTEMS uses _exit from newlib
++LIB1ASMFUNCS := $(filter-out _exit,$(LIB1ASMFUNCS))
+Index: gcc-4.3.4/gcc/config/mips/elf.h
+===================================================================
+--- gcc-4.3.4.orig/gcc/config/mips/elf.h       2007-08-02 12:49:31.000000000 +0200
++++ gcc-4.3.4/gcc/config/mips/elf.h    2009-11-28 22:40:01.651569933 +0100
+@@ -48,6 +48,4 @@
+ #undef  ENDFILE_SPEC
+ #define ENDFILE_SPEC "crtend%O%s crtn%O%s"
+-#define NO_IMPLICIT_EXTERN_C 1
+-
+ #define HANDLE_PRAGMA_PACK_PUSH_POP 1
+Index: gcc-4.3.4/gcc/config/rs6000/rtems.h
+===================================================================
+--- gcc-4.3.4.orig/gcc/config/rs6000/rtems.h   2007-08-02 12:49:31.000000000 +0200
++++ gcc-4.3.4/gcc/config/rs6000/rtems.h        2009-11-28 22:40:01.651569933 +0100
+@@ -49,8 +49,18 @@
+ %{mcpu=604:  %{!Dppc*: %{!Dmpc*: -Dmpc604}  } } \
+ %{mcpu=750:  %{!Dppc*: %{!Dmpc*: -Dmpc750}  } } \
+ %{mcpu=821:  %{!Dppc*: %{!Dmpc*: -Dmpc821}  } } \
+-%{mcpu=860:  %{!Dppc*: %{!Dmpc*: -Dmpc860}  } }" 
++%{mcpu=860:  %{!Dppc*: %{!Dmpc*: -Dmpc860}  } } \
++%{mcpu=8540: %{!Dppc*: %{!Dmpc*: -Dppc8540}  } }" 
+ #undef  SUBSUBTARGET_EXTRA_SPECS
+ #define SUBSUBTARGET_EXTRA_SPECS \
+   { "cpp_os_rtems",           CPP_OS_RTEMS_SPEC }
++
++#undef SUBSUBTARGET_OVERRIDE_OPTIONS
++#define SUBSUBTARGET_OVERRIDE_OPTIONS         \
++  do {                                                \
++    if (TARGET_E500)                          \
++      {                                               \
++      rs6000_float_gprs = 1;                  \
++      }                                               \
++  } while(0)
+Index: gcc-4.3.4/gcc/config/rs6000/t-rtems
+===================================================================
+--- gcc-4.3.4.orig/gcc/config/rs6000/t-rtems   2005-05-27 09:54:06.000000000 +0200
++++ gcc-4.3.4/gcc/config/rs6000/t-rtems        2009-11-28 22:40:01.651569933 +0100
+@@ -1,17 +1,15 @@
+ # Multilibs for powerpc RTEMS targets.
+ MULTILIB_OPTIONS      = \
+-mcpu=403/mcpu=505/mcpu=601/mcpu=603e/mcpu=604/mcpu=860/mcpu=7400 \
++mcpu=403/mcpu=505/mcpu=601/mcpu=603e/mcpu=604/mcpu=860/mcpu=7400/mcpu=8540 \
+ Dmpc8260 \
+ msoft-float
+ MULTILIB_DIRNAMES     = \
+-m403 m505 m601 m603e m604 m860 m7400 \
++m403 m505 m601 m603e m604 m860 m7400 m8540 \
+ mpc8260 \
+ nof
+-MULTILIB_EXTRA_OPTS   = mrelocatable-lib mno-eabi mstrict-align
+-
+ # MULTILIB_MATCHES    = ${MULTILIB_MATCHES_FLOAT}
+ MULTILIB_MATCHES      =
+ MULTILIB_MATCHES      += ${MULTILIB_MATCHES_ENDIAN}
+@@ -31,6 +29,10 @@
+ # Map 750 to .
+ MULTILIB_MATCHES      += mcpu?750=
++# Map e500, 8548 to 8540
++MULTILIB_MATCHES      += mcpu?8540=mcpu?e500
++MULTILIB_MATCHES      += mcpu?8540=mcpu?8548
++
+ # Soft-float only, default implies msoft-float
+ # NOTE: Must match with MULTILIB_MATCHES_FLOAT and MULTILIB_MATCHES
+ MULTILIB_SOFTFLOAT_ONLY = \
+@@ -64,3 +66,4 @@
+ MULTILIB_EXCEPTIONS += *mcpu=750/Dmpc*
+ MULTILIB_EXCEPTIONS += *mcpu=860/Dmpc*
+ MULTILIB_EXCEPTIONS += *mcpu=7400/Dmpc*
++MULTILIB_EXCEPTIONS += *mcpu=8540/Dmpc*
diff --git a/gcc-patches/4.3.4/series b/gcc-patches/4.3.4/series
new file mode 100644 (file)
index 0000000..ee5ee2a
--- /dev/null
@@ -0,0 +1 @@
+gcc-core-4.3.4-rtems4.9-20090825.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
deleted file mode 100644 (file)
index 853e2b1..0000000
+++ /dev/null
@@ -1,1449 +0,0 @@
-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.
diff --git a/newlib-patches/1.15.0/series b/newlib-patches/1.15.0/series
deleted file mode 100644 (file)
index 7079b6a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-newlib-1.15.0-rtems4.8-20070413.diff
diff --git a/newlib-patches/newlib-1.16.0/newlib-1.16.0-rtems4.9-20090324.diff b/newlib-patches/newlib-1.16.0/newlib-1.16.0-rtems4.9-20090324.diff
new file mode 100644 (file)
index 0000000..ce08abf
--- /dev/null
@@ -0,0 +1,1199 @@
+diff -Naur newlib-1.16.0.orig/newlib/ChangeLog.rtems newlib-1.16.0/newlib/ChangeLog.rtems
+--- newlib-1.16.0.orig/newlib/ChangeLog.rtems  1970-01-01 01:00:00.000000000 +0100
++++ newlib-1.16.0/newlib/ChangeLog.rtems       2009-03-24 04:29:55.000000000 +0100
+@@ -0,0 +1,5 @@
++2009-03-09    Ralf Corsépius <ralf.corsepius@rtems.org>
++
++      * libc/machine/powerpc/times.c: Remove.
++      * libc/machine/powerpc/Makefile.am: Remove times.c.
++      * libc/machine/powerpc/Makefile.in: Regenerate.
+diff -Naur newlib-1.16.0.orig/newlib/configure.host newlib-1.16.0/newlib/configure.host
+--- newlib-1.16.0.orig/newlib/configure.host   2007-11-07 22:42:24.000000000 +0100
++++ newlib-1.16.0/newlib/configure.host        2009-03-24 04:29:55.000000000 +0100
+@@ -528,6 +528,7 @@
+ #  NOTE: When newlib malloc uses a semaphore, RTEMS will switch to that.
+   *-*-rtems*)
+       default_newlib_io_long_long="yes"
++      default_newlib_io_c99_formats="yes"
+       newlib_cflags="${newlib_cflags} -DMALLOC_PROVIDED -DEXIT_PROVIDED -DMISSING_SYSCALL_NAMES -DSIGNAL_PROVIDED -DREENTRANT_SYSCALLS_PROVIDED -DHAVE_OPENDIR -DNO_EXEC -DHAVE_FCNTL"
+       ;;
+ # VxWorks supplies its own version of malloc, and the newlib one
+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 2009-03-24 04:29:55.000000000 +0100
+@@ -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       2009-03-24 04:29:55.000000000 +0100
+@@ -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 2009-03-24 04:29:55.000000000 +0100
+@@ -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 2009-03-24 04:29:55.000000000 +0100
+@@ -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        2009-03-24 04:29:55.000000000 +0100
+@@ -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/sched.h newlib-1.16.0/newlib/libc/include/sched.h
+--- newlib-1.16.0.orig/newlib/libc/include/sched.h     2007-09-21 23:02:15.000000000 +0200
++++ newlib-1.16.0/newlib/libc/include/sched.h  1970-01-01 01:00:00.000000000 +0100
+@@ -1,14 +0,0 @@
+-#ifndef _SCHED_H_
+-#define _SCHED_H_
+-
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-#include <sys/sched.h>
+-
+-#ifdef __cplusplus
+-}
+-#endif
+-
+-#endif /* _SCHED_H_ */
+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 2009-03-24 04:29:55.000000000 +0100
+@@ -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   2009-03-24 04:29:55.000000000 +0100
+@@ -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     2009-03-24 04:29:55.000000000 +0100
+@@ -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     2009-03-24 04:29:55.000000000 +0100
+@@ -157,7 +157,7 @@
+ pid_t   _EXFUN(tcgetpgrp, (int __fildes ));
+ int     _EXFUN(tcsetpgrp, (int __fildes, pid_t __pgrp_id ));
+ char    _EXFUN(*ttyname, (int __fildes ));
+-#if defined(__CYGWIN__)
++#if defined(__CYGWIN__) || defined(__rtems__)
+ int     _EXFUN(ttyname_r, (int, char *, size_t)); 
+ #endif
+ int     _EXFUN(unlink, (const char *__path ));
+@@ -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       2009-03-24 04:29:55.000000000 +0100
+@@ -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   2009-03-24 04:29:55.000000000 +0100
+@@ -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/machine/powerpc/Makefile.am newlib-1.16.0/newlib/libc/machine/powerpc/Makefile.am
+--- newlib-1.16.0.orig/newlib/libc/machine/powerpc/Makefile.am 2007-05-24 19:33:35.000000000 +0200
++++ newlib-1.16.0/newlib/libc/machine/powerpc/Makefile.am      2009-03-24 04:29:55.000000000 +0100
+@@ -10,7 +10,7 @@
+ AM_CFLAGS = -I $(srcdir)/../../stdio -I $(srcdir)/../../stdlib
+-lib_a_SOURCES = setjmp.S times.c
++lib_a_SOURCES = setjmp.S
+ lib_a_CCASFLAGS=$(AM_CCASFLAGS)
+ lib_a_CFLAGS=$(AM_CFLAGS)
+ lib_a_LIBADD = @extra_objs@
+diff -Naur newlib-1.16.0.orig/newlib/libc/machine/powerpc/Makefile.in newlib-1.16.0/newlib/libc/machine/powerpc/Makefile.in
+--- newlib-1.16.0.orig/newlib/libc/machine/powerpc/Makefile.in 2007-12-19 23:36:34.000000000 +0100
++++ newlib-1.16.0/newlib/libc/machine/powerpc/Makefile.in      2009-03-24 04:29:55.000000000 +0100
+@@ -39,8 +39,7 @@
+ DIST_COMMON = $(srcdir)/../../../../config.guess \
+       $(srcdir)/../../../../config.sub $(srcdir)/Makefile.in \
+       $(srcdir)/Makefile.am $(top_srcdir)/configure \
+-      $(am__configure_deps) $(srcdir)/../../../../mkinstalldirs \
+-      $(srcdir)/../../../../compile
++      $(am__configure_deps) $(srcdir)/../../../../mkinstalldirs
+ subdir = .
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/../../../acinclude.m4 \
+@@ -54,7 +53,7 @@
+ LIBRARIES = $(noinst_LIBRARIES)
+ ARFLAGS = cru
+ lib_a_AR = $(AR) $(ARFLAGS)
+-am_lib_a_OBJECTS = lib_a-setjmp.$(OBJEXT) lib_a-times.$(OBJEXT)
++am_lib_a_OBJECTS = lib_a-setjmp.$(OBJEXT)
+ lib_a_OBJECTS = $(am_lib_a_OBJECTS)
+ DEFAULT_INCLUDES = -I. -I$(srcdir)
+ depcomp =
+@@ -184,7 +183,7 @@
+ AM_CCASFLAGS = $(INCLUDES)
+ noinst_LIBRARIES = lib.a
+ AM_CFLAGS = -I $(srcdir)/../../stdio -I $(srcdir)/../../stdlib
+-lib_a_SOURCES = setjmp.S times.c
++lib_a_SOURCES = setjmp.S
+ lib_a_CCASFLAGS = $(AM_CCASFLAGS)
+ lib_a_CFLAGS = $(AM_CFLAGS)
+ lib_a_LIBADD = @extra_objs@
+@@ -195,7 +194,7 @@
+ all: all-am
+ .SUFFIXES:
+-.SUFFIXES: .S .c .o .obj
++.SUFFIXES: .S .o .obj
+ am--refresh:
+       @:
+ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+@@ -254,18 +253,6 @@
+ lib_a-setjmp.obj: setjmp.S
+       $(CCAS) $(lib_a_CCASFLAGS) $(CCASFLAGS) -c -o lib_a-setjmp.obj `if test -f 'setjmp.S'; then $(CYGPATH_W) 'setjmp.S'; else $(CYGPATH_W) '$(srcdir)/setjmp.S'; fi`
+-
+-.c.o:
+-      $(COMPILE) -c $<
+-
+-.c.obj:
+-      $(COMPILE) -c `$(CYGPATH_W) '$<'`
+-
+-lib_a-times.o: times.c
+-      $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-times.o `test -f 'times.c' || echo '$(srcdir)/'`times.c
+-
+-lib_a-times.obj: times.c
+-      $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-times.obj `if test -f 'times.c'; then $(CYGPATH_W) 'times.c'; else $(CYGPATH_W) '$(srcdir)/times.c'; fi`
+ uninstall-info-am:
+ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+diff -Naur newlib-1.16.0.orig/newlib/libc/machine/powerpc/times.c newlib-1.16.0/newlib/libc/machine/powerpc/times.c
+--- newlib-1.16.0.orig/newlib/libc/machine/powerpc/times.c     2002-07-22 22:26:51.000000000 +0200
++++ newlib-1.16.0/newlib/libc/machine/powerpc/times.c  1970-01-01 01:00:00.000000000 +0100
+@@ -1,36 +0,0 @@
+-/* Time support routines for PowerPC.
+- *
+- * Written by Aldy Hernandez.
+- */
+-
+-#include <_ansi.h>
+-#include <reent.h>
+-#include <sys/time.h>
+-#include <sys/times.h>
+-#include <sys/resource.h>
+-
+-clock_t
+-times (struct tms *tp)
+-{
+-  struct rusage usage;
+-  union {
+-    struct rusage r;
+-    /* Newlib's rusage has only 2 fields.  We need to make room for
+-       when we call the system's rusage.  This should be enough.  */
+-    int filler[32];
+-  } host_ru;
+-
+-  getrusage (RUSAGE_SELF, (void *)&host_ru);
+-
+-  if (tp)
+-    {
+-      tp->tms_utime = host_ru.r.ru_utime.tv_sec * 1000
+-      + host_ru.r.ru_utime.tv_usec;
+-      tp->tms_stime = host_ru.r.ru_stime.tv_sec * 1000
+-      + host_ru.r.ru_stime.tv_usec;
+-      tp->tms_cutime = 0;     /* user time, children */
+-      tp->tms_cstime = 0;     /* system time, children */
+-    }
+-
+-  return tp->tms_utime;
+-}
+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  2009-03-24 04:29:55.000000000 +0100
+@@ -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       2009-03-24 04:29:55.000000000 +0100
+@@ -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    2009-03-24 04:29:55.000000000 +0100
+@@ -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   2009-03-24 04:29:55.000000000 +0100
+@@ -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   2009-03-24 04:29:55.000000000 +0100
+@@ -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/newlib-patches/newlib-1.16.0/series b/newlib-patches/newlib-1.16.0/series
new file mode 100644 (file)
index 0000000..00d990d
--- /dev/null
@@ -0,0 +1 @@
+newlib-1.16.0-rtems4.9-20090324.diff
index 9813dfbfd24b1b0669c436a354a79848a32834d3..5d70a9b722f3e14e619ce3b22923fdfe9bc87577 100755 (executable)
 # --target=h8300-hitachi-coff
 # --target=tic30-ti-coff
 # --host=i586-pc-linux-gnulibc1 
+
+#--host=i586-pc-linux-gnu  \
+#--enable-targets=arm-rtems,arm-linux,arm-coff
+
 CFLAGS=-O2 LDFLAGS=-s \
 ../../../binutils/configure \
---host=i586-pc-linux-gnu  \
---target=arm-rtems \
+--target=arm-rtems4.9 \
 --with-gnu-ld --exec-prefix=/usr --prefix=/usr \
---verbose \
+--verbose --disable-nls --disable-win32-registry --disable-werror \
 --with-mmap --enable-64-bit-bfd \
---enable-targets=arm-rtems,arm-linux,arm-coff
 #i586-go32,
 #--ieee,
 #srec,symbolsrec,tekhex,binary,ihex,trad-core
index 324ee8a54fdf0150aa570883f0055e7ea399520a..fb3be8d172cc4612d3b6150aa4c19c17b5e48c65 100644 (file)
@@ -1,11 +1,11 @@
-Package: binutils-arm-rtems
-Version: 2.17-1
+Package: binutils-arm-rtems4.9
+Version: 2.20-1
 Architecture: amd64
-Source: binutils-2.17
+Source: binutils-2.20
 Section: cross-dev
 Priority: extra
 Maintainer: Pavel Pisa <pisa@cmp.felk.cvut.cz>
 Priority: extra
-Description: Binutils for target arm-rtems
+Description: binutils for target arm-rtems4.9
  .
- GNU binutils targetting arm-rtems
+ binutils targetting arm-rtems4.9
index cc42a7beb6bc19142b2794da9f67286abcf5fe73..1683aac27837185c4ddb46b8c705fd0206e45219 100644 (file)
@@ -1,11 +1,11 @@
-Package: gcc-arm-rtems
-Version: 4.1.2-1
+Package: gcc-arm-rtems4.9
+Version: 4.3.4-1
 Architecture: amd64
-Source: gcc-4.1.2
+Source: gcc-4.3.4
 Section: cross-dev
 Priority: extra
 Maintainer: Pavel Pisa <pisa@cmp.felk.cvut.cz>
 Priority: extra
-Description: GCC for target arm-rtems
+Description: GCC for target arm-rtems4.9
  .
- GNU binutils targetting arm-rtems
+ GNU GCC targetting arm-rtems4.9
index af51b64fda376b6fd84a5e9cd1c11d36074de90a..feeaab965890c2e3197678c180baebc299e66fc5 100755 (executable)
 # make
 # make install
 
-../../../gcc/configure --target=arm-rtems --prefix=/usr \
+#             --host=i586-pc-linux-gnu \
+
+../../../gcc/configure --target=arm-rtems4.9 --prefix=/usr \
             --with-cpu=arm9 \
              --enable-languages=c,c++ \
+            --disable-libstdcxx-pch \
             --with-gnu-ld \
+            --with-gnu-as \
             --with-float=soft \
             --enable-threads=rtems \
             --enable-target-optspace \
              --verbose \
-            --disable-nls \
-             --host=i586-pc-linux-gnu \
+            --disable-nls --without-included-gettext \
+            --disable-win32-registry \
             --with-newlib \
+            --enable-newlib-io-c99-formats \
             --enable-version-specific-runtime-libs