From 561e6da86c72686682d8cc0c30123f6172472a7e Mon Sep 17 00:00:00 2001 From: Ralf Corsepius Date: Fri, 2 Apr 2010 04:29:07 +0000 Subject: [PATCH] New. --- ...-core-4.5-20100401-rtems4.10-20100402.diff | 355 +++++ ...-core-4.5-20100401-rtems4.11-20100402.diff | 355 +++++ .../newlib-1.18.0-rtems4.10-20100402.diff | 1214 +++++++++++++++++ 3 files changed, 1924 insertions(+) create mode 100644 contrib/crossrpms/patches/gcc-core-4.5-20100401-rtems4.10-20100402.diff create mode 100644 contrib/crossrpms/patches/gcc-core-4.5-20100401-rtems4.11-20100402.diff create mode 100644 contrib/crossrpms/patches/newlib-1.18.0-rtems4.10-20100402.diff diff --git a/contrib/crossrpms/patches/gcc-core-4.5-20100401-rtems4.10-20100402.diff b/contrib/crossrpms/patches/gcc-core-4.5-20100401-rtems4.10-20100402.diff new file mode 100644 index 0000000000..2c6bc421fc --- /dev/null +++ b/contrib/crossrpms/patches/gcc-core-4.5-20100401-rtems4.10-20100402.diff @@ -0,0 +1,355 @@ +diff -Naur gcc-4.5-20100401.orig/ChangeLog.rtems gcc-4.5-20100401/ChangeLog.rtems +--- gcc-4.5-20100401.orig/ChangeLog.rtems 1970-01-01 01:00:00.000000000 +0100 ++++ gcc-4.5-20100401/ChangeLog.rtems 2010-04-02 04:28:32.000000000 +0200 +@@ -0,0 +1,4 @@ ++ Ralf Corsépius ++ ++ * configure, configure.ac (skipdirs): Add target-libiberty. ++ +diff -Naur gcc-4.5-20100401.orig/configure gcc-4.5-20100401/configure +--- gcc-4.5-20100401.orig/configure 2010-04-01 18:32:38.000000000 +0200 ++++ gcc-4.5-20100401/configure 2010-04-02 04:28:19.000000000 +0200 +@@ -3291,6 +3291,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. +@@ -7892,7 +7893,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 +diff -Naur gcc-4.5-20100401.orig/configure.ac gcc-4.5-20100401/configure.ac +--- gcc-4.5-20100401.orig/configure.ac 2010-04-01 18:32:38.000000000 +0200 ++++ gcc-4.5-20100401/configure.ac 2010-04-02 04:28:19.000000000 +0200 +@@ -528,6 +528,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. +@@ -2996,7 +2997,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 +diff -Naur gcc-4.5-20100401.orig/gcc/ChangeLog.rtems gcc-4.5-20100401/gcc/ChangeLog.rtems +--- gcc-4.5-20100401.orig/gcc/ChangeLog.rtems 1970-01-01 01:00:00.000000000 +0100 ++++ gcc-4.5-20100401/gcc/ChangeLog.rtems 2010-04-02 05:16:01.000000000 +0200 +@@ -0,0 +1,41 @@ ++2010-03-30 Ralf Corsépius ++ ++ * config.gcc (lm32-*-rtems*): Add t-lm32. ++ ++2010-03-30 Joel Sherrill ++ ++ * config.gcc: Add lm32-*-rtems*. ++ * config/lm32/rtems.h: New file. ++ ++2010-03-15 Ralf Corsépius ++ ++ Patch from Thomas Doerfler : ++ * config/arm/rtems-elf.h, config/arm/t-rtems: Add optional support ++ for vfp FPU model ++ ++2009-12-01 Ralf Corsépius ++ ++ * config/avr/avr.h (LINK_SPEC): Pass -m avrN to ld for -mmcu=avrN. ++ ++2009-11-04 Ralf Corsépius ++ ++ * config/m32c/rtems.h, config/m68k/rtemself.h, ++ config/m68k/rtemself.h, config/sh/rtemself.h, ++ config/sparc/rtemself.h: Undef WCHAR_TYPE_SIZE, WCHAR_TYPE. ++ (Resets WCHAR_TYPE's to defaults. Prevents broken GCC tm_files ++ to interfere and cause wchar_t/wint_t incompatibilities). ++ ++2009-10-15 Ralf Corsépius ++ ++ * config/avr/t-rtems: Don't build _exit. ++ ++ Ralf Corsépius ++ ++ * config/rs6000/rtems.h: Support for custom RTEMS multilibs. ++ Support TARGET_E500. ++ * config/rs6000/t-rtems: Custom RTEMS multilibs. ++ ++ Ralf Corsépius ++ ++ * config/mips/elf.h: Remove NO_IMPLICIT_EXTERN_C. ++ +diff -Naur gcc-4.5-20100401.orig/gcc/config/arm/rtems-elf.h gcc-4.5-20100401/gcc/config/arm/rtems-elf.h +--- gcc-4.5-20100401.orig/gcc/config/arm/rtems-elf.h 2009-03-25 13:54:16.000000000 +0100 ++++ gcc-4.5-20100401/gcc/config/arm/rtems-elf.h 2010-04-02 04:27:52.000000000 +0200 +@@ -36,7 +36,7 @@ + */ + #undef SUBTARGET_EXTRA_ASM_SPEC + #define SUBTARGET_EXTRA_ASM_SPEC "\ +- %{!mhard-float: %{!msoft-float:-mfpu=softfpa}}" ++ %{!mhard-float: %{!mfpu=vfp: %{!msoft-float:-mfpu=softfpa}}}" + + /* + * The default includes --start-group and --end-group which conflicts +diff -Naur gcc-4.5-20100401.orig/gcc/config/arm/t-rtems gcc-4.5-20100401/gcc/config/arm/t-rtems +--- gcc-4.5-20100401.orig/gcc/config/arm/t-rtems 2004-11-23 06:30:32.000000000 +0100 ++++ gcc-4.5-20100401/gcc/config/arm/t-rtems 2010-04-02 04:27:52.000000000 +0200 +@@ -5,6 +5,41 @@ + MULTILIB_EXCEPTIONS = + MULTILIB_MATCHES = marm=mno-thumb + +-MULTILIB_OPTIONS += msoft-float/mhard-float +-MULTILIB_DIRNAMES += soft fpu +-MULTILIB_EXCEPTIONS += *mthumb/*mhard-float* ++MULTILIB_OPTIONS += mhard-float/mfloat-abi=softfp ++MULTILIB_DIRNAMES += fpu softfp ++MULTILIB_EXCEPTIONS += *mthumb*/*mhard-float* *mthumb*/*mfloat-abi=softfp* ++MULTILIB_MATCHES = ++ ++MULTILIB_OPTIONS += mfpu=vfp ++MULTILIB_DIRNAMES += vfp ++MULTILIB_EXCEPTIONS += *mhard-float*/*mfpu=vfp* *marm*/*mfloat-abi=softfp*/*mfpu=fpa* ++MULTILIB_EXCLUSIONS += !mthumb/mfloat-abi=softfp/!mfpu=vfp ++ ++# default float model is fpa, so don't create a explicit copy of it ++MULTILIB_EXCEPTIONS += *marm*/*mfpa* ++ ++# permutations of the options which are useful (+) or make no sense (-), ++# defaults are in brackets: ++# + (arm/soft/fpa) ++# + (arm/soft)/vfp ++# - (arm)/softfp(/fpa) ++# + (arm)/softfp/vfp ++# + (arm)/hard-float(/fpa) ++# - (arm)/hard-float/vfp ++# + thumb/(soft/fpa) ++# + thumb/(soft/)vfp ++# - thumb/softfp/fpa ++# - thumb/softfp/vfp ++# - thumb/hard-float/fpa ++# - thumb/hard-float/vfp ++ ++# subdirs to be used for multilibs and their respective options: ++#/thumb/vfp -> thumb/soft/vfp ++#/thumb/fpa -> thumb/soft/fpa ++#/thumb -> thumb/soft/fpa ++#/vfp -> arm/soft/vfp ++#/softfp/vfp -> arm/softfp/cfp ++#/fpu/fpa -> arm/hard/fpa ++#/fpu -> arm/hard/fpa ++#/fpa -> arm/soft/fpa ++#. -> arm/soft/fpa +diff -Naur gcc-4.5-20100401.orig/gcc/config/avr/t-rtems gcc-4.5-20100401/gcc/config/avr/t-rtems +--- gcc-4.5-20100401.orig/gcc/config/avr/t-rtems 2004-11-23 04:44:03.000000000 +0100 ++++ gcc-4.5-20100401/gcc/config/avr/t-rtems 2010-04-02 04:27:14.000000000 +0200 +@@ -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)) +diff -Naur gcc-4.5-20100401.orig/gcc/config/lm32/rtems.h gcc-4.5-20100401/gcc/config/lm32/rtems.h +--- gcc-4.5-20100401.orig/gcc/config/lm32/rtems.h 1970-01-01 01:00:00.000000000 +0100 ++++ gcc-4.5-20100401/gcc/config/lm32/rtems.h 2010-04-02 04:26:57.000000000 +0200 +@@ -0,0 +1,32 @@ ++/* Definitions for rtems targeting a lm32 using ELF. ++ Copyright (C) 2009, Free Software Foundation, Inc. ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 3, or (at your option) ++any later version. ++ ++GCC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++. */ ++ ++/* Target OS builtins. */ ++#undef TARGET_OS_CPP_BUILTINS ++#define TARGET_OS_CPP_BUILTINS() \ ++ do \ ++ { \ ++ builtin_define ("__rtems__"); \ ++ builtin_define ("__USE_INIT_FINI__"); \ ++ builtin_assert ("system=rtems"); \ ++ } \ ++ while (0) ++ ++/* Use the default */ ++#undef LINK_GCC_C_SEQUENCE_SPEC +diff -Naur gcc-4.5-20100401.orig/gcc/config/m32c/rtems.h gcc-4.5-20100401/gcc/config/m32c/rtems.h +--- gcc-4.5-20100401.orig/gcc/config/m32c/rtems.h 2008-12-01 17:34:42.000000000 +0100 ++++ gcc-4.5-20100401/gcc/config/m32c/rtems.h 2010-04-02 04:25:16.000000000 +0200 +@@ -29,5 +29,9 @@ + } \ + while (0) + +-/* Use the default */ ++/* Use the defaults */ + #undef LINK_GCC_C_SEQUENCE_SPEC ++ ++#undef WCHAR_TYPE ++ ++#undef WCHAR_TYPE_SIZE +diff -Naur gcc-4.5-20100401.orig/gcc/config/m68k/rtemself.h gcc-4.5-20100401/gcc/config/m68k/rtemself.h +--- gcc-4.5-20100401.orig/gcc/config/m68k/rtemself.h 2007-08-02 12:49:31.000000000 +0200 ++++ gcc-4.5-20100401/gcc/config/m68k/rtemself.h 2010-04-02 04:25:16.000000000 +0200 +@@ -31,3 +31,8 @@ + builtin_assert ("system=rtems"); \ + } \ + while (0) ++ ++/* Use the defaults */ ++#undef WCHAR_TYPE ++ ++#undef WCHAR_TYPE_SIZE +diff -Naur gcc-4.5-20100401.orig/gcc/config/mips/elf.h gcc-4.5-20100401/gcc/config/mips/elf.h +--- gcc-4.5-20100401.orig/gcc/config/mips/elf.h 2007-08-02 12:49:31.000000000 +0200 ++++ gcc-4.5-20100401/gcc/config/mips/elf.h 2010-04-02 04:25:16.000000000 +0200 +@@ -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 +diff -Naur gcc-4.5-20100401.orig/gcc/config/rs6000/rtems.h gcc-4.5-20100401/gcc/config/rs6000/rtems.h +--- gcc-4.5-20100401.orig/gcc/config/rs6000/rtems.h 2007-08-02 12:49:31.000000000 +0200 ++++ gcc-4.5-20100401/gcc/config/rs6000/rtems.h 2010-04-02 04:25:16.000000000 +0200 +@@ -49,8 +49,22 @@ + %{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) ++ ++#undef WCHAR_TYPE ++ ++#undef WCHAR_TYPE_SIZE +diff -Naur gcc-4.5-20100401.orig/gcc/config/rs6000/t-rtems gcc-4.5-20100401/gcc/config/rs6000/t-rtems +--- gcc-4.5-20100401.orig/gcc/config/rs6000/t-rtems 2009-04-21 21:03:23.000000000 +0200 ++++ gcc-4.5-20100401/gcc/config/rs6000/t-rtems 2010-04-02 04:25:16.000000000 +0200 +@@ -19,12 +19,12 @@ + # . + + 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 + +@@ -47,6 +47,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 = \ +@@ -80,3 +84,4 @@ + MULTILIB_EXCEPTIONS += *mcpu=750/Dmpc* + MULTILIB_EXCEPTIONS += *mcpu=860/Dmpc* + MULTILIB_EXCEPTIONS += *mcpu=7400/Dmpc* ++MULTILIB_EXCEPTIONS += *mcpu=8540/Dmpc* +diff -Naur gcc-4.5-20100401.orig/gcc/config/sh/rtemself.h gcc-4.5-20100401/gcc/config/sh/rtemself.h +--- gcc-4.5-20100401.orig/gcc/config/sh/rtemself.h 2007-08-02 12:49:31.000000000 +0200 ++++ gcc-4.5-20100401/gcc/config/sh/rtemself.h 2010-04-02 04:25:24.000000000 +0200 +@@ -24,3 +24,8 @@ + builtin_define( "__rtems__" ); \ + builtin_assert( "system=rtems" ); \ + } while (0) ++ ++/* Use the defaults */ ++#undef WCHAR_TYPE ++ ++#undef WCHAR_TYPE_SIZE +diff -Naur gcc-4.5-20100401.orig/gcc/config/sparc/rtemself.h gcc-4.5-20100401/gcc/config/sparc/rtemself.h +--- gcc-4.5-20100401.orig/gcc/config/sparc/rtemself.h 2007-08-02 12:49:31.000000000 +0200 ++++ gcc-4.5-20100401/gcc/config/sparc/rtemself.h 2010-04-02 04:25:24.000000000 +0200 +@@ -29,5 +29,9 @@ + } \ + while (0) + +-/* Use the default */ ++/* Use the defaults */ + #undef LINK_GCC_C_SEQUENCE_SPEC ++ ++#undef WCHAR_TYPE ++ ++#undef WCHAR_TYPE_SIZE +diff -Naur gcc-4.5-20100401.orig/gcc/config.gcc gcc-4.5-20100401/gcc/config.gcc +--- gcc-4.5-20100401.orig/gcc/config.gcc 2010-04-01 12:32:10.000000000 +0200 ++++ gcc-4.5-20100401/gcc/config.gcc 2010-04-02 04:36:53.000000000 +0200 +@@ -1504,6 +1504,11 @@ + tm_file="dbxelf.h elfos.h ${tm_file}" + tmake_file="${tmake_file} lm32/t-lm32 lm32/t-fprules-softfp soft-fp/t-softfp" + ;; ++lm32-*-rtems*) ++ tm_file="dbxelf.h elfos.h ${tm_file} lm32/rtems.h rtems.h" ++ tmake_file="${tmake_file} lm32/t-lm32 lm32/t-fprules-softfp soft-fp/t-softfp" ++ tmake_file="${tmake_file} t-rtems" ++ ;; + lm32-*-uclinux*) + tm_file="dbxelf.h elfos.h ${tm_file} linux.h lm32/uclinux-elf.h" + tmake_file="${tmake_file} lm32/t-lm32 lm32/t-fprules-softfp soft-fp/t-softfp" +diff -Naur gcc-4.5-20100401.orig/libgcc/ChangeLog.rtems gcc-4.5-20100401/libgcc/ChangeLog.rtems +--- gcc-4.5-20100401.orig/libgcc/ChangeLog.rtems 1970-01-01 01:00:00.000000000 +0100 ++++ gcc-4.5-20100401/libgcc/ChangeLog.rtems 2010-04-02 04:45:51.000000000 +0200 +@@ -0,0 +1,3 @@ ++2010-03-30 Ralf Corsépius ++ ++ * config.host: Add lm32-*-rtems*. +diff -Naur gcc-4.5-20100401.orig/libgcc/config.host gcc-4.5-20100401/libgcc/config.host +--- gcc-4.5-20100401.orig/libgcc/config.host 2010-03-31 11:03:29.000000000 +0200 ++++ gcc-4.5-20100401/libgcc/config.host 2010-04-02 04:26:01.000000000 +0200 +@@ -357,7 +357,7 @@ + ;; + iq2000*-*-elf*) + ;; +-lm32-*-elf*) ++lm32-*-elf*|lm32-*-rtems*) + extra_parts="crtbegin.o crtend.o crti.o crtn.o" + tmake_file="lm32/t-lm32 lm32/t-elf t-softfp" + ;; diff --git a/contrib/crossrpms/patches/gcc-core-4.5-20100401-rtems4.11-20100402.diff b/contrib/crossrpms/patches/gcc-core-4.5-20100401-rtems4.11-20100402.diff new file mode 100644 index 0000000000..2c6bc421fc --- /dev/null +++ b/contrib/crossrpms/patches/gcc-core-4.5-20100401-rtems4.11-20100402.diff @@ -0,0 +1,355 @@ +diff -Naur gcc-4.5-20100401.orig/ChangeLog.rtems gcc-4.5-20100401/ChangeLog.rtems +--- gcc-4.5-20100401.orig/ChangeLog.rtems 1970-01-01 01:00:00.000000000 +0100 ++++ gcc-4.5-20100401/ChangeLog.rtems 2010-04-02 04:28:32.000000000 +0200 +@@ -0,0 +1,4 @@ ++ Ralf Corsépius ++ ++ * configure, configure.ac (skipdirs): Add target-libiberty. ++ +diff -Naur gcc-4.5-20100401.orig/configure gcc-4.5-20100401/configure +--- gcc-4.5-20100401.orig/configure 2010-04-01 18:32:38.000000000 +0200 ++++ gcc-4.5-20100401/configure 2010-04-02 04:28:19.000000000 +0200 +@@ -3291,6 +3291,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. +@@ -7892,7 +7893,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 +diff -Naur gcc-4.5-20100401.orig/configure.ac gcc-4.5-20100401/configure.ac +--- gcc-4.5-20100401.orig/configure.ac 2010-04-01 18:32:38.000000000 +0200 ++++ gcc-4.5-20100401/configure.ac 2010-04-02 04:28:19.000000000 +0200 +@@ -528,6 +528,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. +@@ -2996,7 +2997,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 +diff -Naur gcc-4.5-20100401.orig/gcc/ChangeLog.rtems gcc-4.5-20100401/gcc/ChangeLog.rtems +--- gcc-4.5-20100401.orig/gcc/ChangeLog.rtems 1970-01-01 01:00:00.000000000 +0100 ++++ gcc-4.5-20100401/gcc/ChangeLog.rtems 2010-04-02 05:16:01.000000000 +0200 +@@ -0,0 +1,41 @@ ++2010-03-30 Ralf Corsépius ++ ++ * config.gcc (lm32-*-rtems*): Add t-lm32. ++ ++2010-03-30 Joel Sherrill ++ ++ * config.gcc: Add lm32-*-rtems*. ++ * config/lm32/rtems.h: New file. ++ ++2010-03-15 Ralf Corsépius ++ ++ Patch from Thomas Doerfler : ++ * config/arm/rtems-elf.h, config/arm/t-rtems: Add optional support ++ for vfp FPU model ++ ++2009-12-01 Ralf Corsépius ++ ++ * config/avr/avr.h (LINK_SPEC): Pass -m avrN to ld for -mmcu=avrN. ++ ++2009-11-04 Ralf Corsépius ++ ++ * config/m32c/rtems.h, config/m68k/rtemself.h, ++ config/m68k/rtemself.h, config/sh/rtemself.h, ++ config/sparc/rtemself.h: Undef WCHAR_TYPE_SIZE, WCHAR_TYPE. ++ (Resets WCHAR_TYPE's to defaults. Prevents broken GCC tm_files ++ to interfere and cause wchar_t/wint_t incompatibilities). ++ ++2009-10-15 Ralf Corsépius ++ ++ * config/avr/t-rtems: Don't build _exit. ++ ++ Ralf Corsépius ++ ++ * config/rs6000/rtems.h: Support for custom RTEMS multilibs. ++ Support TARGET_E500. ++ * config/rs6000/t-rtems: Custom RTEMS multilibs. ++ ++ Ralf Corsépius ++ ++ * config/mips/elf.h: Remove NO_IMPLICIT_EXTERN_C. ++ +diff -Naur gcc-4.5-20100401.orig/gcc/config/arm/rtems-elf.h gcc-4.5-20100401/gcc/config/arm/rtems-elf.h +--- gcc-4.5-20100401.orig/gcc/config/arm/rtems-elf.h 2009-03-25 13:54:16.000000000 +0100 ++++ gcc-4.5-20100401/gcc/config/arm/rtems-elf.h 2010-04-02 04:27:52.000000000 +0200 +@@ -36,7 +36,7 @@ + */ + #undef SUBTARGET_EXTRA_ASM_SPEC + #define SUBTARGET_EXTRA_ASM_SPEC "\ +- %{!mhard-float: %{!msoft-float:-mfpu=softfpa}}" ++ %{!mhard-float: %{!mfpu=vfp: %{!msoft-float:-mfpu=softfpa}}}" + + /* + * The default includes --start-group and --end-group which conflicts +diff -Naur gcc-4.5-20100401.orig/gcc/config/arm/t-rtems gcc-4.5-20100401/gcc/config/arm/t-rtems +--- gcc-4.5-20100401.orig/gcc/config/arm/t-rtems 2004-11-23 06:30:32.000000000 +0100 ++++ gcc-4.5-20100401/gcc/config/arm/t-rtems 2010-04-02 04:27:52.000000000 +0200 +@@ -5,6 +5,41 @@ + MULTILIB_EXCEPTIONS = + MULTILIB_MATCHES = marm=mno-thumb + +-MULTILIB_OPTIONS += msoft-float/mhard-float +-MULTILIB_DIRNAMES += soft fpu +-MULTILIB_EXCEPTIONS += *mthumb/*mhard-float* ++MULTILIB_OPTIONS += mhard-float/mfloat-abi=softfp ++MULTILIB_DIRNAMES += fpu softfp ++MULTILIB_EXCEPTIONS += *mthumb*/*mhard-float* *mthumb*/*mfloat-abi=softfp* ++MULTILIB_MATCHES = ++ ++MULTILIB_OPTIONS += mfpu=vfp ++MULTILIB_DIRNAMES += vfp ++MULTILIB_EXCEPTIONS += *mhard-float*/*mfpu=vfp* *marm*/*mfloat-abi=softfp*/*mfpu=fpa* ++MULTILIB_EXCLUSIONS += !mthumb/mfloat-abi=softfp/!mfpu=vfp ++ ++# default float model is fpa, so don't create a explicit copy of it ++MULTILIB_EXCEPTIONS += *marm*/*mfpa* ++ ++# permutations of the options which are useful (+) or make no sense (-), ++# defaults are in brackets: ++# + (arm/soft/fpa) ++# + (arm/soft)/vfp ++# - (arm)/softfp(/fpa) ++# + (arm)/softfp/vfp ++# + (arm)/hard-float(/fpa) ++# - (arm)/hard-float/vfp ++# + thumb/(soft/fpa) ++# + thumb/(soft/)vfp ++# - thumb/softfp/fpa ++# - thumb/softfp/vfp ++# - thumb/hard-float/fpa ++# - thumb/hard-float/vfp ++ ++# subdirs to be used for multilibs and their respective options: ++#/thumb/vfp -> thumb/soft/vfp ++#/thumb/fpa -> thumb/soft/fpa ++#/thumb -> thumb/soft/fpa ++#/vfp -> arm/soft/vfp ++#/softfp/vfp -> arm/softfp/cfp ++#/fpu/fpa -> arm/hard/fpa ++#/fpu -> arm/hard/fpa ++#/fpa -> arm/soft/fpa ++#. -> arm/soft/fpa +diff -Naur gcc-4.5-20100401.orig/gcc/config/avr/t-rtems gcc-4.5-20100401/gcc/config/avr/t-rtems +--- gcc-4.5-20100401.orig/gcc/config/avr/t-rtems 2004-11-23 04:44:03.000000000 +0100 ++++ gcc-4.5-20100401/gcc/config/avr/t-rtems 2010-04-02 04:27:14.000000000 +0200 +@@ -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)) +diff -Naur gcc-4.5-20100401.orig/gcc/config/lm32/rtems.h gcc-4.5-20100401/gcc/config/lm32/rtems.h +--- gcc-4.5-20100401.orig/gcc/config/lm32/rtems.h 1970-01-01 01:00:00.000000000 +0100 ++++ gcc-4.5-20100401/gcc/config/lm32/rtems.h 2010-04-02 04:26:57.000000000 +0200 +@@ -0,0 +1,32 @@ ++/* Definitions for rtems targeting a lm32 using ELF. ++ Copyright (C) 2009, Free Software Foundation, Inc. ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 3, or (at your option) ++any later version. ++ ++GCC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++. */ ++ ++/* Target OS builtins. */ ++#undef TARGET_OS_CPP_BUILTINS ++#define TARGET_OS_CPP_BUILTINS() \ ++ do \ ++ { \ ++ builtin_define ("__rtems__"); \ ++ builtin_define ("__USE_INIT_FINI__"); \ ++ builtin_assert ("system=rtems"); \ ++ } \ ++ while (0) ++ ++/* Use the default */ ++#undef LINK_GCC_C_SEQUENCE_SPEC +diff -Naur gcc-4.5-20100401.orig/gcc/config/m32c/rtems.h gcc-4.5-20100401/gcc/config/m32c/rtems.h +--- gcc-4.5-20100401.orig/gcc/config/m32c/rtems.h 2008-12-01 17:34:42.000000000 +0100 ++++ gcc-4.5-20100401/gcc/config/m32c/rtems.h 2010-04-02 04:25:16.000000000 +0200 +@@ -29,5 +29,9 @@ + } \ + while (0) + +-/* Use the default */ ++/* Use the defaults */ + #undef LINK_GCC_C_SEQUENCE_SPEC ++ ++#undef WCHAR_TYPE ++ ++#undef WCHAR_TYPE_SIZE +diff -Naur gcc-4.5-20100401.orig/gcc/config/m68k/rtemself.h gcc-4.5-20100401/gcc/config/m68k/rtemself.h +--- gcc-4.5-20100401.orig/gcc/config/m68k/rtemself.h 2007-08-02 12:49:31.000000000 +0200 ++++ gcc-4.5-20100401/gcc/config/m68k/rtemself.h 2010-04-02 04:25:16.000000000 +0200 +@@ -31,3 +31,8 @@ + builtin_assert ("system=rtems"); \ + } \ + while (0) ++ ++/* Use the defaults */ ++#undef WCHAR_TYPE ++ ++#undef WCHAR_TYPE_SIZE +diff -Naur gcc-4.5-20100401.orig/gcc/config/mips/elf.h gcc-4.5-20100401/gcc/config/mips/elf.h +--- gcc-4.5-20100401.orig/gcc/config/mips/elf.h 2007-08-02 12:49:31.000000000 +0200 ++++ gcc-4.5-20100401/gcc/config/mips/elf.h 2010-04-02 04:25:16.000000000 +0200 +@@ -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 +diff -Naur gcc-4.5-20100401.orig/gcc/config/rs6000/rtems.h gcc-4.5-20100401/gcc/config/rs6000/rtems.h +--- gcc-4.5-20100401.orig/gcc/config/rs6000/rtems.h 2007-08-02 12:49:31.000000000 +0200 ++++ gcc-4.5-20100401/gcc/config/rs6000/rtems.h 2010-04-02 04:25:16.000000000 +0200 +@@ -49,8 +49,22 @@ + %{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) ++ ++#undef WCHAR_TYPE ++ ++#undef WCHAR_TYPE_SIZE +diff -Naur gcc-4.5-20100401.orig/gcc/config/rs6000/t-rtems gcc-4.5-20100401/gcc/config/rs6000/t-rtems +--- gcc-4.5-20100401.orig/gcc/config/rs6000/t-rtems 2009-04-21 21:03:23.000000000 +0200 ++++ gcc-4.5-20100401/gcc/config/rs6000/t-rtems 2010-04-02 04:25:16.000000000 +0200 +@@ -19,12 +19,12 @@ + # . + + 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 + +@@ -47,6 +47,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 = \ +@@ -80,3 +84,4 @@ + MULTILIB_EXCEPTIONS += *mcpu=750/Dmpc* + MULTILIB_EXCEPTIONS += *mcpu=860/Dmpc* + MULTILIB_EXCEPTIONS += *mcpu=7400/Dmpc* ++MULTILIB_EXCEPTIONS += *mcpu=8540/Dmpc* +diff -Naur gcc-4.5-20100401.orig/gcc/config/sh/rtemself.h gcc-4.5-20100401/gcc/config/sh/rtemself.h +--- gcc-4.5-20100401.orig/gcc/config/sh/rtemself.h 2007-08-02 12:49:31.000000000 +0200 ++++ gcc-4.5-20100401/gcc/config/sh/rtemself.h 2010-04-02 04:25:24.000000000 +0200 +@@ -24,3 +24,8 @@ + builtin_define( "__rtems__" ); \ + builtin_assert( "system=rtems" ); \ + } while (0) ++ ++/* Use the defaults */ ++#undef WCHAR_TYPE ++ ++#undef WCHAR_TYPE_SIZE +diff -Naur gcc-4.5-20100401.orig/gcc/config/sparc/rtemself.h gcc-4.5-20100401/gcc/config/sparc/rtemself.h +--- gcc-4.5-20100401.orig/gcc/config/sparc/rtemself.h 2007-08-02 12:49:31.000000000 +0200 ++++ gcc-4.5-20100401/gcc/config/sparc/rtemself.h 2010-04-02 04:25:24.000000000 +0200 +@@ -29,5 +29,9 @@ + } \ + while (0) + +-/* Use the default */ ++/* Use the defaults */ + #undef LINK_GCC_C_SEQUENCE_SPEC ++ ++#undef WCHAR_TYPE ++ ++#undef WCHAR_TYPE_SIZE +diff -Naur gcc-4.5-20100401.orig/gcc/config.gcc gcc-4.5-20100401/gcc/config.gcc +--- gcc-4.5-20100401.orig/gcc/config.gcc 2010-04-01 12:32:10.000000000 +0200 ++++ gcc-4.5-20100401/gcc/config.gcc 2010-04-02 04:36:53.000000000 +0200 +@@ -1504,6 +1504,11 @@ + tm_file="dbxelf.h elfos.h ${tm_file}" + tmake_file="${tmake_file} lm32/t-lm32 lm32/t-fprules-softfp soft-fp/t-softfp" + ;; ++lm32-*-rtems*) ++ tm_file="dbxelf.h elfos.h ${tm_file} lm32/rtems.h rtems.h" ++ tmake_file="${tmake_file} lm32/t-lm32 lm32/t-fprules-softfp soft-fp/t-softfp" ++ tmake_file="${tmake_file} t-rtems" ++ ;; + lm32-*-uclinux*) + tm_file="dbxelf.h elfos.h ${tm_file} linux.h lm32/uclinux-elf.h" + tmake_file="${tmake_file} lm32/t-lm32 lm32/t-fprules-softfp soft-fp/t-softfp" +diff -Naur gcc-4.5-20100401.orig/libgcc/ChangeLog.rtems gcc-4.5-20100401/libgcc/ChangeLog.rtems +--- gcc-4.5-20100401.orig/libgcc/ChangeLog.rtems 1970-01-01 01:00:00.000000000 +0100 ++++ gcc-4.5-20100401/libgcc/ChangeLog.rtems 2010-04-02 04:45:51.000000000 +0200 +@@ -0,0 +1,3 @@ ++2010-03-30 Ralf Corsépius ++ ++ * config.host: Add lm32-*-rtems*. +diff -Naur gcc-4.5-20100401.orig/libgcc/config.host gcc-4.5-20100401/libgcc/config.host +--- gcc-4.5-20100401.orig/libgcc/config.host 2010-03-31 11:03:29.000000000 +0200 ++++ gcc-4.5-20100401/libgcc/config.host 2010-04-02 04:26:01.000000000 +0200 +@@ -357,7 +357,7 @@ + ;; + iq2000*-*-elf*) + ;; +-lm32-*-elf*) ++lm32-*-elf*|lm32-*-rtems*) + extra_parts="crtbegin.o crtend.o crti.o crtn.o" + tmake_file="lm32/t-lm32 lm32/t-elf t-softfp" + ;; diff --git a/contrib/crossrpms/patches/newlib-1.18.0-rtems4.10-20100402.diff b/contrib/crossrpms/patches/newlib-1.18.0-rtems4.10-20100402.diff new file mode 100644 index 0000000000..cbf04d965f --- /dev/null +++ b/contrib/crossrpms/patches/newlib-1.18.0-rtems4.10-20100402.diff @@ -0,0 +1,1214 @@ +diff -Naur newlib-1.18.0.orig/newlib/ChangeLog.rtems newlib-1.18.0-rtems4.10-20100402/newlib/ChangeLog.rtems +--- newlib-1.18.0.orig/newlib/ChangeLog.rtems 1970-01-01 01:00:00.000000000 +0100 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/ChangeLog.rtems 2010-04-02 06:19:30.000000000 +0200 +@@ -0,0 +1,197 @@ ++2010-04-02 Ralf Corsépius ++ ++ * libc/include/sched.h, libc/include/sys/sched.h: ++ Adopt newlib-cvs's versions. ++ ++2010-03-25 Ralf Corsépius ++ ++ * libc/include/strings.h: New (split-out from string.h). ++ * libc/include/string.h: Remove bcmp, bcopy, bzero, ffs, index, rindex, ++ strcasecmp, strncasecmp (Moved to strings.h). ++ Remove strcmpi, stricmp, strncmpi, strnicmp. ++ * libc/misc/ffs.c: Use instead of . ++ * libc/string/bcmp.c: Use instead of . ++ * libc/string/bzero.c: Use instead of . ++ * libc/string/rindex.c: Use instead of . ++ * libc/string/strcasecmp.c: Use instead of . ++ * libc/string/strcasecmp.c: Use instead of . ++ ++2010-03-23 Ralf Corsépius ++ ++ * libc/sys/rtems/machine/_types.h: Add i386 to 64bit off_t targets. ++ ++2010-03-10 Ralf Corsépius ++ ++ * libc/posix/telldir.c: Adopt newlib-cvs's telldir.c ++ ++2010-02-10 Ralf Corsépius ++ ++ * libc/sys/rtems/machine/_types.h: Use __int64_t for _off_t, fpos_t for ++ selected targets. ++ ++2010-02-05 Ralf Corsépius ++ ++ * libc/posix/telldir.c: Remove bogus nested prototype of lseek(). ++ ++2010-01-11 Sebastian Huber ++ ++ * libc/posix/telldir.c (_cleanupdir): Fixed usage of freed memory. ++ ++2009-12-18 Ralf Corsépius ++ ++ * libc/search/db_local.h: ++ Use __uint32_t instead of u_int (prototype mismatches). ++ * libc/search/extern.h (__buf_init): ++ Use __uint32_t instead of int (16 bit target portability). ++ * libc/search/hash_buf.c: Use ptrdiff_t instead of __uint32_t, ++ use __uint32_t instead of int (16 bit target portability). ++ * libc/search/hash.h: Use __uint32_it instead of int ++ (16 bit target portability). ++ * libm/common/modfl.c: Add cast to (double*) to avoid GCC warning. ++ * libm/common/sf_llrint.c, libm/common/sf_round.c: Add explicit ++ casts to __uint32_t to avoid overflows on implicit casts. ++ ++2009-12-18 Ralf Corsépius ++ ++ Merger with newlib-1.18.0. ++ ++2009-10-29 Ralf Corsépius ++ ++ * libc/sys/rtems/machine/_types.h: Rework. ++ * libc/sys/rtems/machine/stdint.h: Remove. ++ * libc/include/inttypes.h: ++ Rework logic to determine PRI*PTR. ++ Prefer long64 over longlong64. ++ * libc/include/machine/_default_types.h: ++ Sync logic for __int32 with stdint.h (Prefer long over int). ++ * libc/include/stdint.h: ++ Remove __SPU__ hack. ++ Prefer int for int16_t (sync with _default_types.h). ++ Rework intptr_t determination. ++ ++2009-10-28 Ralf Corsépius ++ ++ * libc/sys/rtems/machine/_types.h: New. ++ Add custom time for _ssize_t. ++ * libc/stdlib/assert.c: Sync with newlib-CVS. ++ * configure.host: Add -DHAVE_ASSERT_FUNC to newlib_cflags. ++ ++2009-10-27 Ralf Corsépius ++ ++ * libc/include/sys/pthread.h: ++ Add pthread_atfork (Mandated by IEEE Std 1003.1-2008). ++ Add pthread_rwlock_unlock (Formerly missing) ++ ++2009-10-26 Ralf Corsépius ++ ++ * libc/include/sys/signal.h: Sync with newlib-CVS. ++ ++2009-10-09 Ralf Corsépius ++ ++ * libc/include/sys/signal.h: Use pid_t as 1st arg to kill() ++ (mandated by POSIX). ++ ++2009-09-22 Ralf Corsépius ++ ++ * libc/sys/rtems/sys/queue.h: Update copyright (from FreeBSD). ++ Remove CIRCLEQ_*. ++ * libc/search/hcreate.c: Don't include sys/queue.h. ++ ++2009-09-18 Christopher Faylor ++ ++ * libc/include/sys/unistd.h: Declare getpagesize as returning ++ POSIX-mandated int. ++ ++2009-09-16 Ralf Corsépius ++ ++ * libc/sys/rtems/crt0.c: Use while(1) in _exit stub to silence GCC "noreturn" ++ warning. ++ ++2009-09-15 Ralf Corsépius ++ ++ * libc/include/stdlib.h: Add posix_memalign. ++ ++2009-09-11 Ralf Corsépius ++ ++ * configure.host (m32c): Remove -D_ABORT_PROVIDED. ++ ++2009-09-10 Ralf Corsépius ++ ++ * configure.host: Add -D_NO_POPEN. ++ * libc/sys/rtems/crt0.c: Don't provide waitpid unless used. ++ ++2009-09-09 Ralf Corsépius ++ ++ * configure.host: Add -D_NO_WORDEXP. ++ ++2009-09-06 Ralf Corsépius ++ ++ * libc/sys/rtems/crt0.c: Add issetugid. ++ ++2009-09-02 Ralf Corsépius ++ ++ * libc/sys/rtems/crt0.c: Rework. Introduce macro RTEMS_STUB. ++ ++2009-07-27 Ralf Corsépius ++ ++ * libc/sys/rtems/crt0.c: Add _isatty_r. ++ ++2009-07-06 Joel Sherrill ++ ++ * libc/include/sys/features.h: Define _UNIX98_THREAD_MUTEX_ATTRIBUTES. ++ ++2009-05-05 Ralf Corsépius ++ ++ * configure.host: Remove -DMISSING_SYSCALL_NAMES. ++ ++2009-03-11 Ralf Corsépius ++ ++ * libc/stdlib/assert.c: Don't build __assert_func. ++ * libc/sys/rtems/crt0.c: Add __assert_func. ++ ++2009-03-09 Ralf Corsépius ++ ++ * libc/machine/powerpc/times.c: Remove. ++ * libc/machine/powerpc/Makefile.am: Remove times.c. ++ * libc/machine/powerpc/Makefile.in: Regenerate. ++ ++2009-02-24 Ralf Corsépius ++ ++ * libc/unix/ttyname.c: Sync with newlib-cvs. ++ * configure.host: Add -DHAVE_BLKSIZE to newlib_cflags. ++ ++2009-02-22 Ralf Corsépius ++ ++ * libc/sys/rtems/machine/stdint.h: Add __lm32__. ++ * libc/machine/lm32/configure.in: Set AC_CONFIG_SRC to setjmp.S. ++ * libc/machine/lm32/configure: Regenerate. ++ ++2009-02-20 Ralf Corsépius ++ ++ * libc/unix/Makefile.in: Regenerate. ++ ++2009-02-20 Craig Howland on behalf of ++ Sebastian Huber ++ ++ * libc/unix/ttyname.c: Remove ttyname_r() (to a new file to avoid ++ coupling ttyname_r() and ttyname() due to the latter's large buffer). ++ * libc/unix/ttyname_r.c: New file to hold ttyname_r(), previously in ++ ttyname.c. ++ * libc/unix/ttyname.h: New file (common size definition for the 2 ++ ttyname*c files that are now split). ++ * libc/unix/Makefile.am (ELIX_2_SOURCES): Add ttyname_r.c. ++ ++2009-02-16 Ralf Corsépius ++ ++ * libc/sys/rtems/sys/param.h: ++ Update copyright notice from FreeBSD. ++ Remove HZ. ++ Add #include ++ Remove priority handling (moved to sys/priority.h). ++ Remove CLBYTES (Unused, abandoned in BSD). ++ ++2009-02-06 Ralf Corsépius ++ ++ * libc/include/sched.h: ++ Remove (collides with RTEMS's schedul.h). ++ +diff -Naur newlib-1.18.0.orig/newlib/libc/include/inttypes.h newlib-1.18.0-rtems4.10-20100402/newlib/libc/include/inttypes.h +--- newlib-1.18.0.orig/newlib/libc/include/inttypes.h 2009-01-19 23:02:06.000000000 +0100 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libc/include/inttypes.h 2010-04-02 05:27:01.000000000 +0200 +@@ -242,6 +242,20 @@ + #define SCNxMAX __SCNMAX(x) + + /* ptr types */ ++#if INTPTR_MAX == INT64_MAX ++#define __PRIPTR(x) __PRI64(x) ++#define __SCNPTR(x) __SCN64(x) ++#elif INTPTR_MAX == INT32_MAX ++#define __PRIPTR(x) __PRI32(x) ++#define __SCNPTR(x) __SCN32(x) ++#elif INTPTR_MAX == INT16_MAX ++#define __PRIPTR(x) __PRI16(x) ++#define __SCNPTR(x) __SCN16(x) ++#else ++#error cannot determine PRI*PTR ++#endif ++ ++#if 0 + #if __have_long64 + #define __PRIPTR(x) __STRINGIFY(l##x) + #define __SCNPTR(x) __STRINGIFY(l##x) +@@ -252,6 +266,7 @@ + #define __PRIPTR(x) __STRINGIFY(x) + #define __SCNPTR(x) __STRINGIFY(x) + #endif ++#endif + + #define PRIdPTR __PRIPTR(d) + #define PRIiPTR __PRIPTR(i) +diff -Naur newlib-1.18.0.orig/newlib/libc/include/machine/_default_types.h newlib-1.18.0-rtems4.10-20100402/newlib/libc/include/machine/_default_types.h +--- newlib-1.18.0.orig/newlib/libc/include/machine/_default_types.h 2008-06-12 00:14:54.000000000 +0200 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libc/include/machine/_default_types.h 2010-04-02 05:27:01.000000000 +0200 +@@ -54,14 +54,14 @@ + #endif + #endif + +-#if __EXP(INT_MAX) == 0x7fffffffL +-typedef signed int __int32_t; +-typedef unsigned int __uint32_t; +-#define ___int32_t_defined 1 +-#elif __EXP(LONG_MAX) == 0x7fffffffL ++#if __EXP(LONG_MAX) == 0x7fffffffL + typedef signed long __int32_t; + typedef unsigned long __uint32_t; + #define ___int32_t_defined 1 ++#elif __EXP(INT_MAX) == 0x7fffffffL ++typedef signed int __int32_t; ++typedef unsigned int __uint32_t; ++#define ___int32_t_defined 1 + #elif __EXP(SHRT_MAX) == 0x7fffffffL + typedef signed short __int32_t; + typedef unsigned short __uint32_t; +diff -Naur newlib-1.18.0.orig/newlib/libc/include/sched.h newlib-1.18.0-rtems4.10-20100402/newlib/libc/include/sched.h +--- newlib-1.18.0.orig/newlib/libc/include/sched.h 2007-09-21 23:02:15.000000000 +0200 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libc/include/sched.h 2010-04-02 06:17:16.000000000 +0200 +@@ -1,11 +1,94 @@ ++/* ++ * Written by Joel Sherrill . ++ * ++ * COPYRIGHT (c) 1989-2010. ++ * On-Line Applications Research Corporation (OAR). ++ * ++ * Permission to use, copy, modify, and distribute this software for any ++ * purpose without fee is hereby granted, provided that this entire notice ++ * is included in all copies of any software which is or includes a copy ++ * or modification of this software. ++ * ++ * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED ++ * WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION ++ * OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS ++ * SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. ++ * ++ * $Id$ ++ */ ++ + #ifndef _SCHED_H_ + #define _SCHED_H_ + ++#include ++#include ++ + #ifdef __cplusplus + extern "C" { + #endif + +-#include ++#if defined(_POSIX_PRIORITY_SCHEDULING) ++/* ++ * XBD 13 - Set Scheduling Parameters, P1003.1b-2008, p. 1803 ++ */ ++int sched_setparam( ++ pid_t __pid, ++ const struct sched_param *__param ++); ++ ++/* ++ * XBD 13 - Set Scheduling Parameters, P1003.1b-2008, p. 1800 ++ */ ++int sched_getparam( ++ pid_t __pid, ++ struct sched_param *__param ++); ++ ++/* ++ * XBD 13 - Set Scheduling Policy and Scheduling Parameters, ++ * P1003.1b-2008, p. 1805 ++ */ ++int sched_setscheduler( ++ pid_t __pid, ++ int __policy, ++ const struct sched_param *__param ++); ++ ++/* ++ * XBD 13 - Get Scheduling Policy, P1003.1b-2008, p. 1801 ++ */ ++int sched_getscheduler( ++ pid_t __pid ++); ++ ++/* ++ * XBD 13 - Get Scheduling Parameter Limits, P1003.1b-2008, p. 1799 ++ */ ++int sched_get_priority_max( ++ int __policy ++); ++ ++int sched_get_priority_min( ++ int __policy ++); ++ ++/* ++ * XBD 13 - Get Scheduling Parameter Limits, P1003.1b-2008, p. 1802 ++ */ ++int sched_rr_get_interval( ++ pid_t __pid, ++ struct timespec *__interval ++); ++#endif /* _POSIX_PRIORITY_SCHEDULING */ ++ ++#if defined(_POSIX_THREADS) || defined(_POSIX_PRIORITY_SCHEDULING) ++ ++/* ++ * XBD 13 - Yield Processor, P1003.1b-2008, p. 1807 ++ */ ++int sched_yield( void ); ++ ++#endif /* _POSIX_THREADS or _POSIX_PRIORITY_SCHEDULING */ + + #ifdef __cplusplus + } +diff -Naur newlib-1.18.0.orig/newlib/libc/include/stdint.h newlib-1.18.0-rtems4.10-20100402/newlib/libc/include/stdint.h +--- newlib-1.18.0.orig/newlib/libc/include/stdint.h 2009-04-24 23:55:07.000000000 +0200 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libc/include/stdint.h 2010-04-02 05:27:01.000000000 +0200 +@@ -33,7 +33,7 @@ + /* Check if "long" is 64bit or 32bit wide */ + #if __STDINT_EXP(LONG_MAX) > 0x7fffffff + #define __have_long64 1 +-#elif __STDINT_EXP(LONG_MAX) == 0x7fffffff && !defined(__SPU__) ++#elif __STDINT_EXP(LONG_MAX) == 0x7fffffff + #define __have_long32 1 + #endif + +@@ -49,14 +49,14 @@ + #define __int_least8_t_defined 1 + #endif + +-#if __STDINT_EXP(SHRT_MAX) == 0x7fff +-typedef signed short int16_t; +-typedef unsigned short uint16_t; +-#define __int16_t_defined 1 +-#elif __STDINT_EXP(INT_MAX) == 0x7fff ++#if __STDINT_EXP(INT_MAX) == 0x7fff + typedef signed int int16_t; + typedef unsigned int uint16_t; + #define __int16_t_defined 1 ++#elif __STDINT_EXP(SHRT_MAX) == 0x7fff ++typedef signed short int16_t; ++typedef unsigned short uint16_t; ++#define __int16_t_defined 1 + #elif __STDINT_EXP(SCHAR_MAX) == 0x7fff + typedef signed char int16_t; + typedef unsigned char uint16_t; +@@ -239,6 +239,29 @@ + * GCC doesn't provide an appropriate macro for [u]intptr_t + * For now, use __PTRDIFF_TYPE__ + */ ++#if defined(__SIZEOF_POINTER__) ++#if __SIZEOF_POINTER__ == 8 ++ typedef int64_t intptr_t; ++ typedef uint64_t uintptr_t; ++#define INTPTR_MAX INT64_MAX ++#define INTPTR_MIN INT64_MIN ++#define UINTPTR_MAX UINT64_MAX ++#elif __SIZEOF_POINTER__ == 4 ++ typedef int32_t intptr_t; ++ typedef uint32_t uintptr_t; ++#define INTPTR_MAX INT32_MAX ++#define INTPTR_MIN INT32_MIN ++#define UINTPTR_MAX UINT32_MAX ++#elif __SIZEOF_POINTER__ == 2 ++ typedef int16_t intptr_t; ++ typedef uint16_t uintptr_t; ++#define INTPTR_MAX INT16_MAX ++#define INTPTR_MIN INT16_MIN ++#define UINTPTR_MAX UINT16_MAX ++#else ++#error cannot determine intptr_t ++#endif ++#else + #if defined(__PTRDIFF_TYPE__) + typedef signed __PTRDIFF_TYPE__ intptr_t; + typedef unsigned __PTRDIFF_TYPE__ uintptr_t; +@@ -260,6 +283,7 @@ + #define INTPTR_MIN (-__STDINT_EXP(LONG_MAX) - 1) + #define UINTPTR_MAX (__STDINT_EXP(LONG_MAX) * 2UL + 1) + #endif ++#endif + + /* Limits of Specified-Width Integer Types */ + +diff -Naur newlib-1.18.0.orig/newlib/libc/include/string.h newlib-1.18.0-rtems4.10-20100402/newlib/libc/include/string.h +--- newlib-1.18.0.orig/newlib/libc/include/string.h 2008-06-18 17:27:27.000000000 +0200 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libc/include/string.h 2010-04-02 05:27:01.000000000 +0200 +@@ -49,18 +49,11 @@ + #ifndef __STRICT_ANSI__ + char *_EXFUN(strtok_r,(char *, const char *, char **)); + +-int _EXFUN(bcmp,(const void *, const void *, size_t)); +-void _EXFUN(bcopy,(const void *, void *, size_t)); +-void _EXFUN(bzero,(void *, size_t)); +-int _EXFUN(ffs,(int)); +-char *_EXFUN(index,(const char *, int)); + _PTR _EXFUN(memccpy,(_PTR, const _PTR, int, size_t)); + _PTR _EXFUN(mempcpy,(_PTR, const _PTR, size_t)); + _PTR _EXFUN(memmem, (const _PTR, size_t, const _PTR, size_t)); +-char *_EXFUN(rindex,(const char *, int)); + char *_EXFUN(stpcpy,(char *, const char *)); + char *_EXFUN(stpncpy,(char *, const char *, size_t)); +-int _EXFUN(strcasecmp,(const char *, const char *)); + char *_EXFUN(strcasestr,(const char *, const char *)); + char *_EXFUN(strdup,(const char *)); + char *_EXFUN(_strdup_r,(struct _reent *, const char *)); +@@ -69,7 +62,6 @@ + char *_EXFUN(strerror_r,(int, char *, size_t)); + size_t _EXFUN(strlcat,(char *, const char *, size_t)); + size_t _EXFUN(strlcpy,(char *, const char *, size_t)); +-int _EXFUN(strncasecmp,(const char *, const char *, size_t)); + size_t _EXFUN(strnlen,(const char *, size_t)); + char *_EXFUN(strsep,(char **, const char *)); + char *_EXFUN(strlwr,(char *)); +@@ -81,20 +73,6 @@ + int _EXFUN(strtosigno, (const char *__name)); + #endif + +-/* These function names are used on Windows and perhaps other systems. */ +-#ifndef strcmpi +-#define strcmpi strcasecmp +-#endif +-#ifndef stricmp +-#define stricmp strcasecmp +-#endif +-#ifndef strncmpi +-#define strncmpi strncasecmp +-#endif +-#ifndef strnicmp +-#define strnicmp strncasecmp +-#endif +- + #endif /* ! __STRICT_ANSI__ */ + + #include +diff -Naur newlib-1.18.0.orig/newlib/libc/include/strings.h newlib-1.18.0-rtems4.10-20100402/newlib/libc/include/strings.h +--- newlib-1.18.0.orig/newlib/libc/include/strings.h 1970-01-01 01:00:00.000000000 +0100 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libc/include/strings.h 2010-04-02 05:27:01.000000000 +0200 +@@ -0,0 +1,44 @@ ++/* ++ * strings.h ++ * ++ * Definitions for string operations. ++ */ ++ ++#ifndef _STRINGS_H_ ++#define _STRINGS_H_ ++ ++#include "_ansi.h" ++#include ++ ++#include /* for size_t */ ++#include /* for locale_t */ ++ ++_BEGIN_STD_C ++ ++#ifndef __STRICT_ANSI__ ++/* ++ * Marked LEGACY in Open Group Base Specifications Issue 6/IEEE Std 1003.1-2004 ++ * Removed from Open Group Base Specifications Issue 7/IEEE Std 1003.1-2008 ++ */ ++int _EXFUN(bcmp,(const void *, const void *, size_t)); ++void _EXFUN(bcopy,(const void *, void *, size_t)); ++void _EXFUN(bzero,(void *, size_t)); ++char *_EXFUN(index,(const char *, int)); ++char *_EXFUN(rindex,(const char *, int)); ++#endif /* ! __STRICT_ANSI__ */ ++ ++int _EXFUN(ffs,(int)); ++int _EXFUN(strcasecmp,(const char *, const char *)); ++#if 0 ++/* Not implemented */ ++int _EXFUN(strcasecmp_l,(const char *, const char *, locale_t)); ++#endif ++int _EXFUN(strncasecmp,(const char *, const char *, size_t)); ++#if 0 ++/* Not implemented */ ++int _EXFUN(strncasecmp_l,(const char *, const char *, size_t, locale_t)); ++#endif ++ ++_END_STD_C ++ ++#endif /* _STRINGS_H_ */ +diff -Naur newlib-1.18.0.orig/newlib/libc/include/sys/sched.h newlib-1.18.0-rtems4.10-20100402/newlib/libc/include/sys/sched.h +--- newlib-1.18.0.orig/newlib/libc/include/sys/sched.h 2002-06-20 21:51:24.000000000 +0200 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libc/include/sys/sched.h 2010-04-02 06:17:30.000000000 +0200 +@@ -1,7 +1,7 @@ + /* + * Written by Joel Sherrill . + * +- * COPYRIGHT (c) 1989-2000. ++ * COPYRIGHT (c) 1989-2010. + * On-Line Applications Research Corporation (OAR). + * + * Permission to use, copy, modify, and distribute this software for any +@@ -14,51 +14,53 @@ + * OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS + * SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + * +- * $Id$ ++ * $Id$ + */ + + +-#ifndef __POSIX_SYS_SCHEDULING_h +-#define __POSIX_SYS_SCHEDULING_h ++#ifndef _SYS_SCHED_H_ ++#define _SYS_SCHED_H_ + + #ifdef __cplusplus + extern "C" { + #endif + +-#include +- +-#include +-#include +- +-/* Scheduling Policies, P1003.1b-1993, p. 250 +- NOTE: SCHED_SPORADIC added by P1003.4b/D8, p. 34. */ +- ++/* Scheduling Policies */ ++/* Open Group Specifications Issue 6 */ ++#if defined(__CYGWIN__) ++#define SCHED_OTHER 3 ++#else + #define SCHED_OTHER 0 ++#endif ++ + #define SCHED_FIFO 1 + #define SCHED_RR 2 + + #if defined(_POSIX_SPORADIC_SERVER) +-#define SCHED_SPORADIC 3 ++#define SCHED_SPORADIC 4 + #endif + +-/* Scheduling Parameters, P1003.1b-1993, p. 249 +- NOTE: Fields whose name begins with "ss_" added by P1003.4b/D8, p. 33. */ ++/* Scheduling Parameters */ ++/* Open Group Specifications Issue 6 */ + + struct sched_param { + int sched_priority; /* Process execution scheduling priority */ + +-#if defined(_POSIX_SPORADIC_SERVER) +- int ss_low_priority; /* Low scheduling priority for sporadic */ ++#if defined(_POSIX_SPORADIC_SERVER) || defined(_POSIX_THREAD_SPORADIC_SERVER) ++ int sched_ss_low_priority; /* Low scheduling priority for sporadic */ + /* server */ +- struct timespec ss_replenish_period; ++ struct timespec sched_ss_repl_period; + /* Replenishment period for sporadic server */ +- struct timespec ss_initial_budget; /* Initial budget for sporadic server */ ++ struct timespec sched_ss_init_budget; ++ /* Initial budget for sporadic server */ ++ int sched_ss_max_repl; /* Maximum pending replenishments for */ ++ /* sporadic server */ + #endif + }; + + #ifdef __cplusplus + } +-#endif ++#endif + + #endif + /* end of include file */ +diff -Naur newlib-1.18.0.orig/newlib/libc/machine/powerpc/Makefile.am newlib-1.18.0-rtems4.10-20100402/newlib/libc/machine/powerpc/Makefile.am +--- newlib-1.18.0.orig/newlib/libc/machine/powerpc/Makefile.am 2007-05-24 19:33:35.000000000 +0200 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libc/machine/powerpc/Makefile.am 2010-04-02 05:27:01.000000000 +0200 +@@ -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.18.0.orig/newlib/libc/machine/powerpc/Makefile.in newlib-1.18.0-rtems4.10-20100402/newlib/libc/machine/powerpc/Makefile.in +--- newlib-1.18.0.orig/newlib/libc/machine/powerpc/Makefile.in 2009-10-21 00:44:03.000000000 +0200 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libc/machine/powerpc/Makefile.in 2010-04-02 05:27:01.000000000 +0200 +@@ -51,7 +51,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.@am__isrc@ + depcomp = +@@ -173,7 +173,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@ +@@ -184,7 +184,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) +@@ -245,18 +245,6 @@ + lib_a-setjmp.obj: setjmp.S + $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(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` +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +diff -Naur newlib-1.18.0.orig/newlib/libc/machine/powerpc/times.c newlib-1.18.0-rtems4.10-20100402/newlib/libc/machine/powerpc/times.c +--- newlib-1.18.0.orig/newlib/libc/machine/powerpc/times.c 2002-07-22 22:26:51.000000000 +0200 ++++ newlib-1.18.0-rtems4.10-20100402/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 +-#include +-#include +-#include +- +-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.18.0.orig/newlib/libc/misc/ffs.c newlib-1.18.0-rtems4.10-20100402/newlib/libc/misc/ffs.c +--- newlib-1.18.0.orig/newlib/libc/misc/ffs.c 2003-06-06 21:57:51.000000000 +0200 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libc/misc/ffs.c 2010-04-02 05:27:01.000000000 +0200 +@@ -24,7 +24,7 @@ + + No supporting OS subroutines are required. */ + +-#include <_ansi.h> ++#include + + int + _DEFUN(ffs, (word), +diff -Naur newlib-1.18.0.orig/newlib/libc/posix/telldir.c newlib-1.18.0-rtems4.10-20100402/newlib/libc/posix/telldir.c +--- newlib-1.18.0.orig/newlib/libc/posix/telldir.c 2008-11-27 22:01:40.000000000 +0100 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libc/posix/telldir.c 2010-04-02 06:18:25.000000000 +0200 +@@ -67,7 +67,7 @@ + #define NDIRHASH 32 /* Num of hash lists, must be a power of 2 */ + #define LOCHASH(i) ((i)&(NDIRHASH-1)) + +-static long dd_loccnt; /* Index of entry for sequential readdir's */ ++static long dd_loccnt = 1; /* Index of entry for sequential readdir's */ + static struct ddloc *dd_hash[NDIRHASH]; /* Hash list heads for ddlocs */ + __LOCK_INIT(static, dd_hash_lock); + +@@ -119,40 +119,46 @@ + register struct ddloc *lp; + register struct ddloc **prevlp; + struct dirent *dp; +- extern long lseek(); + + #ifdef HAVE_DD_LOCK + __lock_acquire(dd_hash_lock); + #endif +- prevlp = &dd_hash[LOCHASH(loc)]; +- lp = *prevlp; +- while (lp != NULL) { +- if (lp->loc_index == loc) +- break; +- prevlp = &lp->loc_next; +- lp = lp->loc_next; +- } +- if (lp == NULL) { ++ if (loc != 0) { ++ prevlp = &dd_hash[LOCHASH(loc)]; ++ lp = *prevlp; ++ while (lp != NULL) { ++ if (lp->loc_index == loc) ++ break; ++ prevlp = &lp->loc_next; ++ lp = lp->loc_next; ++ } ++ if (lp == NULL) { + #ifdef HAVE_DD_LOCK +- __lock_release(dd_hash_lock); ++ __lock_release(dd_hash_lock); + #endif +- return; +- } +- if (lp->loc_loc == dirp->dd_loc && lp->loc_seek == dirp->dd_seek) +- goto found; +- (void) lseek(dirp->dd_fd, lp->loc_seek, 0); +- dirp->dd_seek = lp->loc_seek; +- dirp->dd_loc = 0; +- while (dirp->dd_loc < lp->loc_loc) { +- dp = readdir(dirp); +- if (dp == NULL) +- break; +- } ++ return; ++ } ++ if (lp->loc_loc == dirp->dd_loc && lp->loc_seek == dirp->dd_seek) ++ goto found; ++ (void) lseek(dirp->dd_fd, lp->loc_seek, 0); ++ dirp->dd_seek = lp->loc_seek; ++ dirp->dd_loc = 0; ++ while (dirp->dd_loc < lp->loc_loc) { ++ dp = readdir(dirp); ++ if (dp == NULL) ++ break; ++ } + found: + #ifdef SINGLEUSE +- *prevlp = lp->loc_next; +- free((caddr_t)lp); ++ *prevlp = lp->loc_next; ++ free((caddr_t)lp); + #endif ++ } else { ++ // loc 0 means rewinding ++ (void) lseek(dirp->dd_fd, 0, 0); ++ dirp->dd_seek = 0; ++ dirp->dd_loc = 0; ++ } + #ifdef HAVE_DD_LOCK + __lock_release(dd_hash_lock); + #endif +@@ -169,26 +175,26 @@ + __lock_acquire(dd_hash_lock); + #endif + for (i = 0; i < NDIRHASH; ++i) { ++ struct ddloc head; + register struct ddloc *lp; + register struct ddloc *prevlp; ++ + lp = dd_hash[i]; +- while (lp != NULL && lp->loc_dirp == dirp) { +- dd_hash[i] = lp->loc_next; +- prevlp = lp; +- free((caddr_t)lp); +- lp = prevlp->loc_next; +- } +- prevlp = lp; ++ head.loc_next = lp; ++ prevlp = &head; + while (lp != NULL) { +- lp = lp->loc_next; +- if (lp != NULL && lp->loc_dirp == dirp) { +- prevlp->loc_next = lp->loc_next; ++ struct ddloc *nextlp; ++ ++ nextlp = lp->loc_next; ++ if (lp->loc_dirp == dirp) { ++ prevlp->loc_next = nextlp; + free((caddr_t)lp); +- lp = prevlp; + } + else + prevlp = lp; ++ lp = nextlp; + } ++ dd_hash[i] = head.loc_next; + } + #ifdef HAVE_DD_LOCK + __lock_release(dd_hash_lock); +diff -Naur newlib-1.18.0.orig/newlib/libc/search/db_local.h newlib-1.18.0-rtems4.10-20100402/newlib/libc/search/db_local.h +--- newlib-1.18.0.orig/newlib/libc/search/db_local.h 2002-06-25 01:05:08.000000000 +0200 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libc/search/db_local.h 2010-04-02 05:27:01.000000000 +0200 +@@ -102,11 +102,11 @@ + typedef struct __db { + DBTYPE type; /* Underlying db type. */ + int (*close)(struct __db *); +- int (*del)(const struct __db *, const DBT *, u_int); +- int (*get)(const struct __db *, const DBT *, DBT *, u_int); +- int (*put)(const struct __db *, DBT *, const DBT *, u_int); +- int (*seq)(const struct __db *, DBT *, DBT *, u_int); +- int (*sync)(const struct __db *, u_int); ++ int (*del)(const struct __db *, const DBT *, __uint32_t); ++ int (*get)(const struct __db *, const DBT *, DBT *, __uint32_t); ++ int (*put)(const struct __db *, DBT *, const DBT *, __uint32_t); ++ int (*seq)(const struct __db *, DBT *, DBT *, __uint32_t); ++ int (*sync)(const struct __db *, __uint32_t); + void *internal; /* Access method private. */ + int (*fd)(const struct __db *); + } DB; +diff -Naur newlib-1.18.0.orig/newlib/libc/search/extern.h newlib-1.18.0-rtems4.10-20100402/newlib/libc/search/extern.h +--- newlib-1.18.0.orig/newlib/libc/search/extern.h 2002-06-20 21:51:31.000000000 +0200 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libc/search/extern.h 2010-04-02 05:27:01.000000000 +0200 +@@ -43,7 +43,7 @@ + int __big_split(HTAB *, BUFHEAD *, BUFHEAD *, BUFHEAD *, + int, __uint32_t, SPLIT_RETURN *); + int __buf_free(HTAB *, int, int); +-void __buf_init(HTAB *, int); ++void __buf_init(HTAB *, __uint32_t); + __uint32_t __call_hash(HTAB *, char *, int); + int __delpair(HTAB *, BUFHEAD *, int); + int __expand_table(HTAB *); +diff -Naur newlib-1.18.0.orig/newlib/libc/search/hash_buf.c newlib-1.18.0-rtems4.10-20100402/newlib/libc/search/hash_buf.c +--- newlib-1.18.0.orig/newlib/libc/search/hash_buf.c 2004-05-26 19:57:10.000000000 +0200 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libc/search/hash_buf.c 2010-04-02 05:27:01.000000000 +0200 +@@ -118,7 +118,7 @@ + int newpage; /* If prev_bp set, indicates a new overflow page. */ + { + BUFHEAD *bp; +- __uint32_t is_disk_mask; ++ ptrdiff_t is_disk_mask; + int is_disk, segment_ndx; + SEGMENT segp; + +@@ -298,7 +298,7 @@ + extern void + __buf_init(hashp, nbytes) + HTAB *hashp; +- int nbytes; ++ __uint32_t nbytes; + { + BUFHEAD *bfp; + int npages; +diff -Naur newlib-1.18.0.orig/newlib/libc/search/hash.h newlib-1.18.0-rtems4.10-20100402/newlib/libc/search/hash.h +--- newlib-1.18.0.orig/newlib/libc/search/hash.h 2008-07-02 20:38:45.000000000 +0200 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libc/search/hash.h 2010-04-02 05:27:01.000000000 +0200 +@@ -82,7 +82,7 @@ + + /* Hash Table Information */ + typedef struct hashhdr { /* Disk resident portion */ +- int magic; /* Magic NO for hash tables */ ++ __uint32_t magic; /* Magic NO for hash tables */ + int version; /* Version ID */ + __uint32_t lorder; /* Byte Order */ + int bsize; /* Bucket/Page Size */ +@@ -97,7 +97,7 @@ + int high_mask; /* Mask to modulo into entire table */ + int low_mask; /* Mask to modulo into lower half of + * table */ +- int ffactor; /* Fill factor */ ++ __uint32_t ffactor; /* Fill factor */ + int nkeys; /* Number of keys in hash table */ + int hdrpages; /* Size of table header */ + int h_charkey; /* value of hash(CHARKEY) */ +diff -Naur newlib-1.18.0.orig/newlib/libc/string/bcmp.c newlib-1.18.0-rtems4.10-20100402/newlib/libc/string/bcmp.c +--- newlib-1.18.0.orig/newlib/libc/string/bcmp.c 2005-10-28 23:21:07.000000000 +0200 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libc/string/bcmp.c 2010-04-02 05:27:01.000000000 +0200 +@@ -6,11 +6,11 @@ + bcmp + + ANSI_SYNOPSIS +- #include ++ #include + int bcmp(const void *<[s1]>, const void *<[s2]>, size_t <[n]>); + + TRAD_SYNOPSIS +- #include ++ #include + int bcmp(<[s1]>, <[s2]>, <[n]>) + const void *<[s1]>; + const void *<[s2]>; +@@ -35,7 +35,7 @@ + bcmp ansi pure + */ + +-#include ++#include + + int + _DEFUN (bcmp, (m1, m2, n), +diff -Naur newlib-1.18.0.orig/newlib/libc/string/bcopy.c newlib-1.18.0-rtems4.10-20100402/newlib/libc/string/bcopy.c +--- newlib-1.18.0.orig/newlib/libc/string/bcopy.c 2002-05-23 20:46:04.000000000 +0200 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libc/string/bcopy.c 2010-04-02 05:27:01.000000000 +0200 +@@ -3,7 +3,7 @@ + <>---copy memory regions + + ANSI_SYNOPSIS +- #include ++ #include + void bcopy(const void *<[in]>, void *<[out]>, size_t <[n]>); + + TRAD_SYNOPSIS +@@ -26,7 +26,7 @@ + bcopy - pure + */ + +-#include ++#include + + void + _DEFUN (bcopy, (b1, b2, length), +diff -Naur newlib-1.18.0.orig/newlib/libc/string/bzero.c newlib-1.18.0-rtems4.10-20100402/newlib/libc/string/bzero.c +--- newlib-1.18.0.orig/newlib/libc/string/bzero.c 2002-05-23 20:46:04.000000000 +0200 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libc/string/bzero.c 2010-04-02 05:27:01.000000000 +0200 +@@ -6,11 +6,11 @@ + bzero + + ANSI_SYNOPSIS +- #include ++ #include + void bzero(void *<[b]>, size_t <[length]>); + + TRAD_SYNOPSIS +- #include ++ #include + void bzero(<[b]>, <[length]>) + void *<[b]>; + size_t <[length]>; +@@ -30,7 +30,7 @@ + <> requires no supporting OS subroutines. + */ + +-#include ++#include + + _VOID + _DEFUN (bzero, (b, length), +diff -Naur newlib-1.18.0.orig/newlib/libc/string/index.c newlib-1.18.0-rtems4.10-20100402/newlib/libc/string/index.c +--- newlib-1.18.0.orig/newlib/libc/string/index.c 2000-02-17 20:39:48.000000000 +0100 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libc/string/index.c 2010-04-02 05:27:01.000000000 +0200 +@@ -10,7 +10,7 @@ + char * index(const char *<[string]>, int <[c]>); + + TRAD_SYNOPSIS +- #include ++ #include + char * index(<[string]>, <[c]>); + char *<[string]>; + int *<[c]>; +@@ -33,7 +33,7 @@ + index - pure + */ + +-#include ++#include + + char * + _DEFUN (index, (s, c), +diff -Naur newlib-1.18.0.orig/newlib/libc/string/rindex.c newlib-1.18.0-rtems4.10-20100402/newlib/libc/string/rindex.c +--- newlib-1.18.0.orig/newlib/libc/string/rindex.c 2000-02-17 20:39:48.000000000 +0100 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libc/string/rindex.c 2010-04-02 05:27:01.000000000 +0200 +@@ -10,7 +10,7 @@ + char * rindex(const char *<[string]>, int <[c]>); + + TRAD_SYNOPSIS +- #include ++ #include + char * rindex(<[string]>, <[c]>); + char *<[string]>; + int *<[c]>; +@@ -33,7 +33,7 @@ + rindex - pure + */ + +-#include ++#include + + char * + _DEFUN (rindex, (s, c), +diff -Naur newlib-1.18.0.orig/newlib/libc/string/strcasecmp.c newlib-1.18.0-rtems4.10-20100402/newlib/libc/string/strcasecmp.c +--- newlib-1.18.0.orig/newlib/libc/string/strcasecmp.c 2009-04-23 20:11:22.000000000 +0200 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libc/string/strcasecmp.c 2010-04-02 05:27:01.000000000 +0200 +@@ -38,7 +38,7 @@ + strcasecmp + */ + +-#include ++#include + #include + + int +diff -Naur newlib-1.18.0.orig/newlib/libc/string/strncasecmp.c newlib-1.18.0-rtems4.10-20100402/newlib/libc/string/strncasecmp.c +--- newlib-1.18.0.orig/newlib/libc/string/strncasecmp.c 2009-04-23 20:11:22.000000000 +0200 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libc/string/strncasecmp.c 2010-04-02 05:27:01.000000000 +0200 +@@ -6,11 +6,11 @@ + strncasecmp + + ANSI_SYNOPSIS +- #include ++ #include + int strncasecmp(const char *<[a]>, const char * <[b]>, size_t <[length]>); + + TRAD_SYNOPSIS +- #include ++ #include + int strncasecmp(<[a]>, <[b]>, <[length]>) + char *<[a]>; + char *<[b]>; +@@ -40,7 +40,7 @@ + strncasecmp + */ + +-#include ++#include + #include + + int +diff -Naur newlib-1.18.0.orig/newlib/libc/sys/rtems/machine/_types.h newlib-1.18.0-rtems4.10-20100402/newlib/libc/sys/rtems/machine/_types.h +--- newlib-1.18.0.orig/newlib/libc/sys/rtems/machine/_types.h 2009-12-17 17:10:41.000000000 +0100 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libc/sys/rtems/machine/_types.h 2010-04-02 05:27:01.000000000 +0200 +@@ -31,4 +31,22 @@ + + typedef __int32_t blksize_t; + typedef __int32_t blkcnt_t; ++ ++/* EXPERIMENTAL: Use 64bit types */ ++#if defined(__arm__) || defined(__i386__) || defined(__m68k__) || defined(__mips__) || defined(__PPC__) || defined(__sparc__) ++/* Use 64bit types */ ++typedef __int64_t _off_t; ++#define __off_t_defined 1 ++ ++typedef __int64_t _fpos_t; ++#define __fpos_t_defined 1 ++#else ++/* Use 32bit types */ ++typedef __int32_t _off_t; ++#define __off_t_defined 1 ++ ++typedef __int32_t _fpos_t; ++#define __fpos_t_defined 1 ++#endif ++ + #endif +diff -Naur newlib-1.18.0.orig/newlib/libm/common/modfl.c newlib-1.18.0-rtems4.10-20100402/newlib/libm/common/modfl.c +--- newlib-1.18.0.orig/newlib/libm/common/modfl.c 2009-04-18 00:15:43.000000000 +0200 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libm/common/modfl.c 2010-04-02 05:27:01.000000000 +0200 +@@ -36,7 +36,7 @@ + long double + modfl (long double x, long double *iptr) + { +- return modf(x, iptr); ++ return modf(x, (double*) iptr); + } + #endif + +diff -Naur newlib-1.18.0.orig/newlib/libm/common/sf_llrint.c newlib-1.18.0-rtems4.10-20100402/newlib/libm/common/sf_llrint.c +--- newlib-1.18.0.orig/newlib/libm/common/sf_llrint.c 2009-04-03 19:39:24.000000000 +0200 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libm/common/sf_llrint.c 2010-04-02 05:27:01.000000000 +0200 +@@ -71,7 +71,7 @@ + GET_FLOAT_WORD (i0, t); + /* Detect the all-zeros representation of plus and + minus zero, which fails the calculation below. */ +- if ((i0 & ~(1 << 31)) == 0) ++ if ((i0 & ~((__uint32_t)1 << 31)) == 0) + return 0; + j0 = ((i0 >> 23) & 0xff) - 0x7f; + i0 &= 0x7fffff; +diff -Naur newlib-1.18.0.orig/newlib/libm/common/sf_round.c newlib-1.18.0-rtems4.10-20100402/newlib/libm/common/sf_round.c +--- newlib-1.18.0.orig/newlib/libm/common/sf_round.c 2005-02-24 20:02:35.000000000 +0100 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/libm/common/sf_round.c 2010-04-02 05:27:01.000000000 +0200 +@@ -38,7 +38,7 @@ + w &= 0x80000000; + if (exponent_less_127 == -1) + /* Result is +1.0 or -1.0. */ +- w |= (127 << 23); ++ w |= ((__uint32_t)127 << 23); + } + else + { +diff -Naur newlib-1.18.0.orig/newlib/Makefile.am newlib-1.18.0-rtems4.10-20100402/newlib/Makefile.am +--- newlib-1.18.0.orig/newlib/Makefile.am 2009-08-18 23:48:05.000000000 +0200 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/Makefile.am 2010-04-02 05:27:01.000000000 +0200 +@@ -81,7 +81,7 @@ + libc.a + endif + +-noinst_DATA = stmp-targ-include ++BUILT_SOURCES = stmp-targ-include + + toollib_DATA = $(CRT0) $(CRT1) + +diff -Naur newlib-1.18.0.orig/newlib/Makefile.in newlib-1.18.0-rtems4.10-20100402/newlib/Makefile.in +--- newlib-1.18.0.orig/newlib/Makefile.in 2009-10-21 00:43:45.000000000 +0200 ++++ newlib-1.18.0-rtems4.10-20100402/newlib/Makefile.in 2010-04-02 05:27:01.000000000 +0200 +@@ -122,7 +122,7 @@ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +-DATA = $(noinst_DATA) $(toollib_DATA) ++DATA = $(toollib_DATA) + RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive + AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ +@@ -351,7 +351,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 +@@ -411,7 +411,7 @@ + + # dejagnu support + RUNTESTFLAGS = +-all: newlib.h ++all: $(BUILT_SOURCES) newlib.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + + .SUFFIXES: +@@ -725,14 +725,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 +@@ -758,6 +760,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 \ +@@ -833,8 +836,9 @@ + uninstall-am: uninstall-toollibDATA uninstall-toollibLIBRARIES \ + uninstall-toollibLTLIBRARIES + +-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check-am \ +- ctags-recursive install-am install-strip tags-recursive ++.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \ ++ check-am ctags-recursive install install-am install-strip \ ++ tags-recursive + + .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am am--refresh check check-DEJAGNU check-am clean \