# HG changeset patch # User "Yann E. MORIN" # Date 1245234721 -7200 # Node ID 8dbd9e0dc1d907dba6b250d434a3fb33a4c6462d # Parent 7264ce426be4be89690a81ecc9764e2e515ea483# Parent 23a8ffdf8574fb06f9b36f235e40074b8b470ab9 Merge the gcc-4.4 support. diff -r 7264ce426be4 -r 8dbd9e0dc1d9 TODO --- a/TODO Wed Jun 17 10:46:28 2009 +0200 +++ b/TODO Wed Jun 17 12:32:01 2009 +0200 @@ -5,14 +5,7 @@ - update versions for every tools... - -Non-recurring: - -- gcc-4.4 - - requires some companion libs: - - PPL - - CLoog - - check that the patchset from 4.3.3 still applies +Non-recurring tasks: - uClinux diff -r 7264ce426be4 -r 8dbd9e0dc1d9 config/cc/gcc.in --- a/config/cc/gcc.in Wed Jun 17 10:46:28 2009 +0200 +++ b/config/cc/gcc.in Wed Jun 17 12:32:01 2009 +0200 @@ -130,6 +130,7 @@ config CC_GCC_4_4_or_later bool default n + select PPL_CLOOG_MPC config CC_VERSION string diff -r 7264ce426be4 -r 8dbd9e0dc1d9 config/companion_libs.in --- a/config/companion_libs.in Wed Jun 17 10:46:28 2009 +0200 +++ b/config/companion_libs.in Wed Jun 17 12:32:01 2009 +0200 @@ -20,35 +20,68 @@ - gcc - gdb -config GMP_MPFR_TARGET - bool - prompt "Build libraries for the target" - depends on GMP_MPFR - depends on ! BARE_METAL - default n - help - Also build libraries for the target. This can be usefull if you want - to later build a compiler that will run on the target, or if you want - to run gdb natively on the target. - if GMP_MPFR source config/companion_libs/gmp.in source config/companion_libs/mpfr.in endif -config PPL_CLOOG +config PPL_CLOOG_MPC bool - prompt "PPL and GLooG/PPL" + prompt "PPL, GLooG/PPL and MPC" help - gcc-4.4.0 and above requires both PPL and CLooG/PPL to build some - parts of the optimiser (GRAPHITE loop optimisation, to be precise). + gcc-4.4.0 and above requires PPL and CLooG/PPL to build some parts + of the optimiser (GRAPHITE loop optimisation, to be precise). + + In addition to those, gcc-4.4 also optionally uses MPC to enable + additional optimisations on complex numbers. Although MPC is optional, + crosstool-NG requires it and uses it to build gcc >= 4.4.0. These will be automatically selected if you choose gcc>=4.4.0, but you can say 'Y' here, although it is unknown yet if any other component can use them. -if PPL_CLOOG +if PPL_CLOOG_MPC source config/companion_libs/ppl.in +source config/companion_libs/cloog.in +source config/companion_libs/mpc.in endif +config FOO + bool + +comment "Companion libraries common options" + depends on GMP_MPFR || PPL_CLOOG_MPC + +config COMP_LIBS_CHECK + bool + prompt "| Check the companion libraries builds (!!! READ HELP!!!)" + depends on GMP_MPFR || PPL_CLOOG_MPC + default n + help + It is highly recommended to check the newly built companion libraries. + Unfortunately, this is a very intensive task, and takes a loooong time. + + Checking the newly built companion libraries is thus disabled by default, + but it is suggested that you check them at least once on your machine, + and if they work, disable the check on subsequent builds. + + If you suspect that one (or more) of your companion libraries is the + cause for incorrectly generated code, you should answer 'Y' here. + Note however that this will take a really long time. For example, + building PPL on my machine takes roughly 1'40", while checking it takes + about 1h40'... + +config COMP_LIBS_TARGET + bool + prompt "| Build companion libraries for the target" + depends on GMP_MPFR || PPL_CLOOG_MPC + depends on ! BARE_METAL + default n + help + Also build companion libraries for the target. This can be usefull if + you want to later build a compiler that will run on the target, or if + you want to run gdb natively on the target. + + Please note that for now, crosstool-NG can only build GMP and MPFR so. + endmenu diff -r 7264ce426be4 -r 8dbd9e0dc1d9 config/companion_libs/cloog.in --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/config/companion_libs/cloog.in Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,19 @@ +# CLooG options + +choice + bool + prompt "CLooG/ppl version" + +config CLOOG_V_0_15_3 + bool + prompt "0.15.3" + +# CT_INSERT_VERSION_ABOVE +# Don't remove above line! +endchoice + +config CLOOG_VERSION + string + default "0.15.3" if CLOOG_V_0_15_3 +# CT_INSERT_VERSION_STRING_ABOVE +# Don't remove above line! diff -r 7264ce426be4 -r 8dbd9e0dc1d9 config/companion_libs/gmp.in --- a/config/companion_libs/gmp.in Wed Jun 17 10:46:28 2009 +0200 +++ b/config/companion_libs/gmp.in Wed Jun 17 12:32:01 2009 +0200 @@ -22,11 +22,3 @@ default "4.2.4" if GMP_V_4_2_4 # CT_INSERT_VERSION_STRING_ABOVE # Don't remove above line! - -config GMP_CHECK - bool - prompt "Check GMP" - default y - help - It is highly recommended that 'make check' is run against the newly built - GMP library. See http://gmplib.org/ diff -r 7264ce426be4 -r 8dbd9e0dc1d9 config/companion_libs/mpc.in --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/config/companion_libs/mpc.in Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,19 @@ +# MPC options + +choice + bool + prompt "MPC version" + +config MPC_V_0_6 + bool + prompt "0.6" + +# CT_INSERT_VERSION_ABOVE +# Don't remove above line! +endchoice + +config MPC_VERSION + string + default "0.6" if MPC_V_0_6 +# CT_INSERT_VERSION_STRING_ABOVE +# Don't remove above line! diff -r 7264ce426be4 -r 8dbd9e0dc1d9 config/companion_libs/mpfr.in --- a/config/companion_libs/mpfr.in Wed Jun 17 10:46:28 2009 +0200 +++ b/config/companion_libs/mpfr.in Wed Jun 17 12:32:01 2009 +0200 @@ -32,11 +32,3 @@ default "2.4.1" if MPFR_V_2_4_1 # CT_INSERT_VERSION_STRING_ABOVE # Don't remove above line! - -config MPFR_CHECK - bool - prompt "Check MPFR" - default y - help - It is highly recommended that 'make check' is run against the newly built - MPFR library. See http://gmplib.org/ diff -r 7264ce426be4 -r 8dbd9e0dc1d9 config/companion_libs/ppl.in --- a/config/companion_libs/ppl.in Wed Jun 17 10:46:28 2009 +0200 +++ b/config/companion_libs/ppl.in Wed Jun 17 12:32:01 2009 +0200 @@ -17,17 +17,3 @@ default "0.10.2" if PPL_V_0_10_2 # CT_INSERT_VERSION_STRING_ABOVE # Don't remove above line! - -config PPL_CHECK - bool - prompt "Check PPL (!!! README !!!)" - default n - help - Checking PPL is very intensive and takes a loooong time. - The PPL folks do not recommend checking the library, but they do - not recommend not checking it, either. - - Checking PPL is thus disabled by default. - - If you suspect that your PPL library is the cause for incorrectly - generated code, you should answer 'Y' here. diff -r 7264ce426be4 -r 8dbd9e0dc1d9 config/debug/gdb.in --- a/config/debug/gdb.in Wed Jun 17 10:46:28 2009 +0200 +++ b/config/debug/gdb.in Wed Jun 17 12:32:01 2009 +0200 @@ -20,7 +20,7 @@ help A static cross gdb can be usefull if you debug on a machine that is not the one that is used to compile the toolchain. - + That way, you can share the cross-gdb without installing a toolchain on every machine that will be used to debug target programs. @@ -59,14 +59,14 @@ default n depends on GDB_NATIVE select GMP_MPFR - select GMP_MPFR_TARGET + select COMP_LIBS_TARGET help gdb can make use of the GMP and MPFR libraries. - + While the cross-gdb (above) can use the libraries compiled for the host, the native gdb needs the libraries for the target (where it will eventually run). - + Setting this option will force building the GMP and MPFR libraries for the target, and configure the native gdb to use them. diff -r 7264ce426be4 -r 8dbd9e0dc1d9 configure --- a/configure Wed Jun 17 10:46:28 2009 +0200 +++ b/configure Wed Jun 17 12:32:01 2009 +0200 @@ -337,6 +337,7 @@ has_or_abort prog=libtool \ ver='\(GNU libtool.*\) (2[[:digit:]]*\.|1\.6[[:digit:]]*\.|1\.5\.[2-9][[:digit:]]+)' \ err="'libtool' 1.5.26 or above was not found" +has_or_abort prog=stat ver='GNU coreutils' has_or_abort prog="curl wget" has_or_abort prog=cvs has_or_abort prog=patch diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/100-alpha-mieee-default.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/100-alpha-mieee-default.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,24 @@ +diff -durN gcc-4.4.0.orig/gcc/config/alpha/alpha.h gcc-4.4.0/gcc/config/alpha/alpha.h +--- gcc-4.4.0.orig/gcc/config/alpha/alpha.h 2009-02-20 16:20:38.000000000 +0100 ++++ gcc-4.4.0/gcc/config/alpha/alpha.h 2009-05-27 21:37:58.000000000 +0200 +@@ -95,6 +95,8 @@ + while (0) + #endif + ++#define CPP_SPEC "%{!no-ieee:-mieee}" ++ + #define WORD_SWITCH_TAKES_ARG(STR) \ + (!strcmp (STR, "rpath") || DEFAULT_WORD_SWITCH_TAKES_ARG(STR)) + +diff -durN gcc-4.4.0.orig/gcc/config/alpha/alpha.opt gcc-4.4.0/gcc/config/alpha/alpha.opt +--- gcc-4.4.0.orig/gcc/config/alpha/alpha.opt 2007-08-02 12:49:31.000000000 +0200 ++++ gcc-4.4.0/gcc/config/alpha/alpha.opt 2009-05-27 21:37:58.000000000 +0200 +@@ -39,7 +39,7 @@ + Request IEEE-conformant math library routines (OSF/1) + + mieee +-Target Report RejectNegative Mask(IEEE) ++Target Report Mask(IEEE) + Emit IEEE-conformant code, without inexact exceptions + + mieee-with-inexact diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/110-trampolinewarn.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/110-trampolinewarn.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,27 @@ +diff -durN gcc-4.4.0.orig/gcc/builtins.c gcc-4.4.0/gcc/builtins.c +--- gcc-4.4.0.orig/gcc/builtins.c 2009-03-30 19:42:27.000000000 +0200 ++++ gcc-4.4.0/gcc/builtins.c 2009-05-27 21:38:01.000000000 +0200 +@@ -5768,6 +5768,9 @@ + trampolines_created = 1; + INITIALIZE_TRAMPOLINE (r_tramp, r_func, r_chain); + ++ if (warn_trampolines) ++ warning (OPT_Wtrampolines, "generating trampoline in object (requires executable stack)"); ++ + return const0_rtx; + } + +diff -durN gcc-4.4.0.orig/gcc/common.opt gcc-4.4.0/gcc/common.opt +--- gcc-4.4.0.orig/gcc/common.opt 2009-03-28 18:28:45.000000000 +0100 ++++ gcc-4.4.0/gcc/common.opt 2009-05-27 21:38:01.000000000 +0200 +@@ -197,6 +197,10 @@ + Common Var(warn_type_limits) Init(-1) Warning + Warn if a comparison is always true or always false due to the limited range of the data type + ++Wtrampolines ++Common Var(warn_trampolines) Init(1) ++Warn whenever a trampoline is generated ++ + Wuninitialized + Common Var(warn_uninitialized) Warning + Warn about uninitialized automatic variables diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/120-java-nomulti.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/120-java-nomulti.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,46 @@ +diff -durN gcc-4.4.0.orig/libjava/configure gcc-4.4.0/libjava/configure +--- gcc-4.4.0.orig/libjava/configure 2009-04-21 11:08:08.000000000 +0200 ++++ gcc-4.4.0/libjava/configure 2009-05-27 21:38:03.000000000 +0200 +@@ -1021,6 +1021,8 @@ + default=yes + --enable-java-maintainer-mode + allow rebuilding of .class and .h files ++ --enable-libjava-multilib ++ build libjava as multilib + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --enable-maintainer-mode enable make rules and dependencies not useful +@@ -1973,6 +1975,16 @@ + fi + + ++# Check whether --enable-libjava-multilib was given. ++if test "${enable_libjava_multilib+set}" = set; then ++ enableval=$enable_libjava_multilib; ++fi ++ ++if test "$enable_libjava_multilib" = no; then ++ multilib=no ++ ac_configure_args="$ac_configure_args --disable-multilib" ++fi ++ + # It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX. + + +diff -durN gcc-4.4.0.orig/libjava/configure.ac gcc-4.4.0/libjava/configure.ac +--- gcc-4.4.0.orig/libjava/configure.ac 2009-04-09 23:54:28.000000000 +0200 ++++ gcc-4.4.0/libjava/configure.ac 2009-05-27 21:38:03.000000000 +0200 +@@ -139,6 +139,13 @@ + [allow rebuilding of .class and .h files])) + AM_CONDITIONAL(JAVA_MAINTAINER_MODE, test "$enable_java_maintainer_mode" = yes) + ++AC_ARG_ENABLE(libjava-multilib, ++ AS_HELP_STRING([--enable-libjava-multilib], [build libjava as multilib])) ++if test "$enable_libjava_multilib" = no; then ++ multilib=no ++ ac_configure_args="$ac_configure_args --disable-multilib" ++fi ++ + # It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX. + GCC_NO_EXECUTABLES + diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/130-cross-compile.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/130-cross-compile.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,39 @@ +diff -durN gcc-4.4.0.orig/gcc/configure gcc-4.4.0/gcc/configure +--- gcc-4.4.0.orig/gcc/configure 2009-03-24 18:46:03.000000000 +0100 ++++ gcc-4.4.0/gcc/configure 2009-05-27 21:38:06.000000000 +0200 +@@ -13997,7 +13997,7 @@ + | powerpc*-*-*,powerpc64*-*-*) + CROSS="$CROSS -DNATIVE_CROSS" ;; + esac +-elif test "x$TARGET_SYSTEM_ROOT" != x; then ++elif test "x$TARGET_SYSTEM_ROOT" != x -o $build != $host; then + SYSTEM_HEADER_DIR=$build_system_header_dir + fi + +diff -durN gcc-4.4.0.orig/gcc/configure.ac gcc-4.4.0/gcc/configure.ac +--- gcc-4.4.0.orig/gcc/configure.ac 2009-03-24 18:46:03.000000000 +0100 ++++ gcc-4.4.0/gcc/configure.ac 2009-05-27 21:38:06.000000000 +0200 +@@ -1720,7 +1720,7 @@ + | powerpc*-*-*,powerpc64*-*-*) + CROSS="$CROSS -DNATIVE_CROSS" ;; + esac +-elif test "x$TARGET_SYSTEM_ROOT" != x; then ++elif test "x$TARGET_SYSTEM_ROOT" != x -o $build != $host; then + SYSTEM_HEADER_DIR=$build_system_header_dir + fi + +diff -durN gcc-4.4.0.orig/gcc/unwind-dw2.c gcc-4.4.0/gcc/unwind-dw2.c +--- gcc-4.4.0.orig/gcc/unwind-dw2.c 2009-04-10 01:23:07.000000000 +0200 ++++ gcc-4.4.0/gcc/unwind-dw2.c 2009-05-27 21:38:06.000000000 +0200 +@@ -329,9 +329,11 @@ + } + #endif + ++#ifndef inhibit_libc + #ifdef MD_UNWIND_SUPPORT + #include MD_UNWIND_SUPPORT + #endif ++#endif + + /* Extract any interesting information from the CIE for the translation + unit F belongs to. Return a pointer to the byte after the augmentation, diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/140-default-format-security.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/140-default-format-security.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,49 @@ +diff -durN gcc-4.4.0.orig/gcc/c-common.c gcc-4.4.0/gcc/c-common.c +--- gcc-4.4.0.orig/gcc/c-common.c 2009-03-30 19:42:27.000000000 +0200 ++++ gcc-4.4.0/gcc/c-common.c 2009-05-27 21:38:08.000000000 +0200 +@@ -301,7 +301,7 @@ + /* Warn about format/argument anomalies in calls to formatted I/O functions + (*printf, *scanf, strftime, strfmon, etc.). */ + +-int warn_format; ++int warn_format = 1; + + /* Warn about using __null (as NULL in C++) as sentinel. For code compiled + with GCC this doesn't matter as __null is guaranteed to have the right +diff -durN gcc-4.4.0.orig/gcc/c.opt gcc-4.4.0/gcc/c.opt +--- gcc-4.4.0.orig/gcc/c.opt 2009-03-18 22:14:53.000000000 +0100 ++++ gcc-4.4.0/gcc/c.opt 2009-05-27 21:38:08.000000000 +0200 +@@ -236,7 +236,7 @@ + Warn about format strings that contain NUL bytes + + Wformat-security +-C ObjC C++ ObjC++ Var(warn_format_security) Warning ++C ObjC C++ ObjC++ Var(warn_format_security) Init(1) Warning + Warn about possible security problems with format functions + + Wformat-y2k +diff -durN gcc-4.4.0.orig/gcc/doc/invoke.texi gcc-4.4.0/gcc/doc/invoke.texi +--- gcc-4.4.0.orig/gcc/doc/invoke.texi 2009-04-01 09:18:47.000000000 +0200 ++++ gcc-4.4.0/gcc/doc/invoke.texi 2009-05-27 21:38:08.000000000 +0200 +@@ -2867,6 +2867,9 @@ + @option{-Wformat-nonliteral}, @option{-Wformat-security}, and + @option{-Wformat=2} are available, but are not included in @option{-Wall}. + ++NOTE: In Gentoo, this option is enabled by default for C, C++, ObjC, ObjC++. ++To disable, use @option{-Wformat=0}. ++ + @item -Wformat-y2k + @opindex Wformat-y2k + @opindex Wno-format-y2k +@@ -2920,6 +2923,11 @@ + in future warnings may be added to @option{-Wformat-security} that are not + included in @option{-Wformat-nonliteral}.) + ++NOTE: In Gentoo, this option is enabled by default for C, C++, ObjC, ObjC++. ++To disable, use @option{-Wno-format-security}, or disable all format warnings ++with @option{-Wformat=0}. To make format security warnings fatal, specify ++@option{-Werror=format-security}. ++ + @item -Wformat=2 + @opindex Wformat=2 + @opindex Wno-format=2 diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/150-default-fortify-source.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/150-default-fortify-source.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,26 @@ +diff -durN gcc-4.4.0.orig/gcc/doc/invoke.texi gcc-4.4.0/gcc/doc/invoke.texi +--- gcc-4.4.0.orig/gcc/doc/invoke.texi 2009-05-27 21:38:11.000000000 +0200 ++++ gcc-4.4.0/gcc/doc/invoke.texi 2009-05-27 21:38:11.000000000 +0200 +@@ -5411,6 +5411,11 @@ + Please note the warning under @option{-fgcse} about + invoking @option{-O2} on programs that use computed gotos. + ++NOTE: In Gentoo, @option{-D_FORTIFY_SOURCE=2} is set by default, and is ++activated when @option{-O} is set to 2 or higher. This enables additional ++compile-time and run-time checks for several libc functions. To disable, ++specify either @option{-U_FORTIFY_SOURCE} or @option{-D_FORTIFY_SOURCE=0}. ++ + @item -O3 + @opindex O3 + Optimize yet more. @option{-O3} turns on all optimizations specified +diff -durN gcc-4.4.0.orig/gcc/gcc.c gcc-4.4.0/gcc/gcc.c +--- gcc-4.4.0.orig/gcc/gcc.c 2009-03-17 22:25:59.000000000 +0100 ++++ gcc-4.4.0/gcc/gcc.c 2009-05-27 21:38:11.000000000 +0200 +@@ -807,6 +807,7 @@ + %{H} %C %{D*&U*&A*} %{i*} %Z %i\ + %{fmudflap:-D_MUDFLAP -include mf-runtime.h}\ + %{fmudflapth:-D_MUDFLAP -D_MUDFLAPTH -include mf-runtime.h}\ ++ %{!D_FORTIFY_SOURCE:%{!D_FORTIFY_SOURCE=*:%{!U_FORTIFY_SOURCE:-D_FORTIFY_SOURCE=2}}}\ + %{E|M|MM:%W{o*}}"; + + /* This contains cpp options which are common with cc1_options and are passed diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/160-netbsd-symbolic.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/160-netbsd-symbolic.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,11 @@ +diff -durN gcc-4.4.0.orig/gcc/config/netbsd-elf.h gcc-4.4.0/gcc/config/netbsd-elf.h +--- gcc-4.4.0.orig/gcc/config/netbsd-elf.h 2007-09-03 18:14:04.000000000 +0200 ++++ gcc-4.4.0/gcc/config/netbsd-elf.h 2009-05-27 21:38:14.000000000 +0200 +@@ -82,6 +82,7 @@ + #define NETBSD_LINK_SPEC_ELF \ + "%{assert*} %{R*} %{rpath*} \ + %{shared:-shared} \ ++ %{symbolic:-Bsymbolic} \ + %{!shared: \ + -dc -dp \ + %{!nostdlib: \ diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/170-sparc64-bsd.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/170-sparc64-bsd.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,29 @@ +diff -durN gcc-4.4.0.orig/gcc/config/sparc/freebsd.h gcc-4.4.0/gcc/config/sparc/freebsd.h +--- gcc-4.4.0.orig/gcc/config/sparc/freebsd.h 2007-08-02 12:49:31.000000000 +0200 ++++ gcc-4.4.0/gcc/config/sparc/freebsd.h 2009-05-27 21:38:16.000000000 +0200 +@@ -25,9 +25,22 @@ + /* FreeBSD needs the platform name (sparc64) defined. + Emacs needs to know if the arch is 64 or 32-bits. */ + +-#undef CPP_CPU64_DEFAULT_SPEC +-#define CPP_CPU64_DEFAULT_SPEC \ +- "-D__sparc64__ -D__sparc_v9__ -D__sparcv9 -D__arch64__" ++#undef FBSD_TARGET_CPU_CPP_BUILTINS ++#define FBSD_TARGET_CPU_CPP_BUILTINS() \ ++ do \ ++ { \ ++ if (TARGET_ARCH64) \ ++ { \ ++ builtin_define ("__sparc64__"); \ ++ builtin_define ("__sparc_v9__"); \ ++ builtin_define ("__sparcv9"); \ ++ } \ ++ else \ ++ builtin_define ("__sparc"); \ ++ builtin_define ("__sparc__"); \ ++ } \ ++ while (0) ++ + + #define LINK_SPEC "%(link_arch) \ + %{!mno-relax:%{!r:-relax}} \ diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/180-libgomp-no-werror.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/180-libgomp-no-werror.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,12 @@ +diff -durN gcc-4.4.0.orig/libgomp/configure gcc-4.4.0/libgomp/configure +--- gcc-4.4.0.orig/libgomp/configure 2009-04-21 11:08:08.000000000 +0200 ++++ gcc-4.4.0/libgomp/configure 2009-05-27 21:38:19.000000000 +0200 +@@ -3334,7 +3334,7 @@ + + # Add -Wall -Werror if we are using GCC. + if test "x$GCC" = "xyes"; then +- XCFLAGS="$XCFLAGS -Wall -Werror" ++ XCFLAGS="$XCFLAGS -Wall" + fi + + # Find other programs we need. diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/190-flatten-switch-stmt-00.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/190-flatten-switch-stmt-00.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,24 @@ +diff -durN gcc-4.4.0.orig/gcc/stmt.c gcc-4.4.0/gcc/stmt.c +--- gcc-4.4.0.orig/gcc/stmt.c 2009-02-27 20:49:42.000000000 +0100 ++++ gcc-4.4.0/gcc/stmt.c 2009-05-27 21:38:21.000000000 +0200 +@@ -2376,7 +2376,11 @@ + use_cost_table + = (TREE_CODE (orig_type) != ENUMERAL_TYPE + && estimate_case_costs (case_list)); +- balance_case_nodes (&case_list, NULL); ++ /* When optimizing for size, we want a straight list to avoid ++ jumps as much as possible. This basically creates an if-else ++ chain. */ ++ if (!optimize_size) ++ balance_case_nodes (&case_list, NULL); + emit_case_nodes (index, case_list, default_label, index_type); + if (default_label) + emit_jump (default_label); +@@ -2942,6 +2946,7 @@ + { + if (!node_has_low_bound (node, index_type)) + { ++ if (!optimize_size) /* don't jl to the .default_label. */ + emit_cmp_and_jump_insns (index, + convert_modes + (mode, imode, diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/200-libiberty.h-asprintf.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/200-libiberty.h-asprintf.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,15 @@ +diff -durN gcc-4.4.0.orig/include/libiberty.h gcc-4.4.0/include/libiberty.h +--- gcc-4.4.0.orig/include/libiberty.h 2008-06-24 03:42:31.000000000 +0200 ++++ gcc-4.4.0/include/libiberty.h 2009-05-27 21:38:24.000000000 +0200 +@@ -595,8 +595,11 @@ + /* Like sprintf but provides a pointer to malloc'd storage, which must + be freed by the caller. */ + ++/* asprintf may be declared as a macro by glibc with __USE_FORTIFY_LEVEL. */ ++#ifndef asprintf + extern int asprintf (char **, const char *, ...) ATTRIBUTE_PRINTF_2; + #endif ++#endif + + #if !HAVE_DECL_VASPRINTF + /* Like vsprintf but provides a pointer to malloc'd storage, which diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/210-arm-unbreak-armv4t.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/210-arm-unbreak-armv4t.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,12 @@ +diff -durN gcc-4.4.0.orig/gcc/config/arm/linux-eabi.h gcc-4.4.0/gcc/config/arm/linux-eabi.h +--- gcc-4.4.0.orig/gcc/config/arm/linux-eabi.h 2007-11-08 14:44:09.000000000 +0100 ++++ gcc-4.4.0/gcc/config/arm/linux-eabi.h 2009-05-27 21:38:26.000000000 +0200 +@@ -44,7 +44,7 @@ + The ARM10TDMI core is the default for armv5t, so set + SUBTARGET_CPU_DEFAULT to achieve this. */ + #undef SUBTARGET_CPU_DEFAULT +-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi ++#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi + + /* TARGET_BIG_ENDIAN_DEFAULT is set in + config.gcc for big endian configurations. */ diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/220-libiberty-pic.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/220-libiberty-pic.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,11 @@ +diff -durN gcc-4.4.0.orig/libiberty/Makefile.in gcc-4.4.0/libiberty/Makefile.in +--- gcc-4.4.0.orig/libiberty/Makefile.in 2008-10-22 15:30:19.000000000 +0200 ++++ gcc-4.4.0/libiberty/Makefile.in 2009-05-27 21:38:29.000000000 +0200 +@@ -227,6 +227,7 @@ + $(AR) $(AR_FLAGS) $(TARGETLIB) \ + $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS); \ + $(RANLIB) $(TARGETLIB); \ ++ cp $(TARGETLIB) ../ ; \ + cd ..; \ + else true; fi + diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/230-superh-default-multilib.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/230-superh-default-multilib.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,12 @@ +diff -durN gcc-4.4.0.orig/gcc/config.gcc gcc-4.4.0/gcc/config.gcc +--- gcc-4.4.0.orig/gcc/config.gcc 2009-04-17 13:58:41.000000000 +0200 ++++ gcc-4.4.0/gcc/config.gcc 2009-05-27 21:38:31.000000000 +0200 +@@ -2121,7 +2121,7 @@ + if test x${sh_multilibs} = x ; then + case ${target} in + sh64-superh-linux* | \ +- sh[1234]*) sh_multilibs=${sh_cpu_target} ;; ++ sh[1234]*) sh_multilibs=`cd ${srcdir}/config/sh ; echo t-mlib-sh[1-4]* | sed 's:t-mlib-sh:,m:g;s: ::g'` ;; + sh64* | sh5*) sh_multilibs=m5-32media,m5-32media-nofpu,m5-compact,m5-compact-nofpu,m5-64media,m5-64media-nofpu ;; + sh-superh-*) sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;; + sh*-*-linux*) sh_multilibs=m1,m3e,m4 ;; diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/240-libstdc++-pic.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/240-libstdc++-pic.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,53 @@ +diff -durN gcc-4.4.0.orig/libstdc++-v3/src/Makefile.am gcc-4.4.0/libstdc++-v3/src/Makefile.am +--- gcc-4.4.0.orig/libstdc++-v3/src/Makefile.am 2009-04-10 01:23:07.000000000 +0200 ++++ gcc-4.4.0/libstdc++-v3/src/Makefile.am 2009-05-27 21:38:34.000000000 +0200 +@@ -351,6 +351,13 @@ + $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ + + ++install-exec-local: ++ pic_objs=`sed -n "s:'::g;s:^pic_object=::p" *.lo | grep -v '^none$$'`; \ ++ if [ x"$$pic_objs" != x ]; then \ ++ $(AR) cru libstdc++_pic.a $$pic_objs $(top_builddir)/libsupc++/*.o || exit 1; \ ++ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) || exit 1; \ ++ fi ++ + # Added bits to build debug library. + if GLIBCXX_BUILD_DEBUG + all-local: build_debug +diff -durN gcc-4.4.0.orig/libstdc++-v3/src/Makefile.in gcc-4.4.0/libstdc++-v3/src/Makefile.in +--- gcc-4.4.0.orig/libstdc++-v3/src/Makefile.in 2009-01-17 03:03:25.000000000 +0100 ++++ gcc-4.4.0/libstdc++-v3/src/Makefile.in 2009-05-27 21:38:34.000000000 +0200 +@@ -726,7 +726,7 @@ + + install-data-am: install-data-local + +-install-exec-am: install-toolexeclibLTLIBRARIES ++install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local + + install-info: install-info-am + +@@ -765,7 +765,7 @@ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-info-am \ +- uninstall-toolexeclibLTLIBRARIES ++ uninstall-toolexeclibLTLIBRARIES install-exec-local + + + # Symbol versioning for shared libraries. +@@ -942,6 +942,14 @@ + install_debug: + (cd ${debugdir} && $(MAKE) \ + toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) ++ ++install-exec-local: ++ pic_objs=`sed -n "s:'::g;s:^pic_object=::p" *.lo | grep -v '^none$$'`; \ ++ if [ x"$$pic_objs" != x ]; then \ ++ $(AR) cru libstdc++_pic.a $$pic_objs $(top_builddir)/libsupc++/*.o || exit 1; \ ++ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) || exit 1; \ ++ fi ++ + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. + .NOEXPORT: diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/250-ia64-noteGNUstack.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/250-ia64-noteGNUstack.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,79 @@ +diff -durN gcc-4.4.0.orig/gcc/config/ia64/crtbegin.asm gcc-4.4.0/gcc/config/ia64/crtbegin.asm +--- gcc-4.4.0.orig/gcc/config/ia64/crtbegin.asm 2009-04-10 01:23:07.000000000 +0200 ++++ gcc-4.4.0/gcc/config/ia64/crtbegin.asm 2009-05-27 21:38:37.000000000 +0200 +@@ -252,3 +252,7 @@ + .weak __cxa_finalize + #endif + .weak _Jv_RegisterClasses ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +diff -durN gcc-4.4.0.orig/gcc/config/ia64/crtend.asm gcc-4.4.0/gcc/config/ia64/crtend.asm +--- gcc-4.4.0.orig/gcc/config/ia64/crtend.asm 2009-04-10 01:23:07.000000000 +0200 ++++ gcc-4.4.0/gcc/config/ia64/crtend.asm 2009-05-27 21:38:37.000000000 +0200 +@@ -119,3 +119,7 @@ + + br.ret.sptk.many rp + .endp __do_global_ctors_aux ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +diff -durN gcc-4.4.0.orig/gcc/config/ia64/crti.asm gcc-4.4.0/gcc/config/ia64/crti.asm +--- gcc-4.4.0.orig/gcc/config/ia64/crti.asm 2009-04-10 01:23:07.000000000 +0200 ++++ gcc-4.4.0/gcc/config/ia64/crti.asm 2009-05-27 21:38:37.000000000 +0200 +@@ -51,3 +51,7 @@ + .body + + # end of crti.asm ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +diff -durN gcc-4.4.0.orig/gcc/config/ia64/crtn.asm gcc-4.4.0/gcc/config/ia64/crtn.asm +--- gcc-4.4.0.orig/gcc/config/ia64/crtn.asm 2009-04-10 01:23:07.000000000 +0200 ++++ gcc-4.4.0/gcc/config/ia64/crtn.asm 2009-05-27 21:38:37.000000000 +0200 +@@ -41,3 +41,7 @@ + br.ret.sptk.many b0 + + # end of crtn.asm ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +diff -durN gcc-4.4.0.orig/gcc/config/ia64/lib1funcs.asm gcc-4.4.0/gcc/config/ia64/lib1funcs.asm +--- gcc-4.4.0.orig/gcc/config/ia64/lib1funcs.asm 2009-04-10 01:23:07.000000000 +0200 ++++ gcc-4.4.0/gcc/config/ia64/lib1funcs.asm 2009-05-27 21:38:37.000000000 +0200 +@@ -793,3 +793,7 @@ + .endp __floattitf + #endif + #endif ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +diff -durN gcc-4.4.0.orig/gcc/config/ia64/linux.h gcc-4.4.0/gcc/config/ia64/linux.h +--- gcc-4.4.0.orig/gcc/config/ia64/linux.h 2009-02-12 17:30:53.000000000 +0100 ++++ gcc-4.4.0/gcc/config/ia64/linux.h 2009-05-27 21:38:37.000000000 +0200 +@@ -5,6 +5,8 @@ + + #define TARGET_VERSION fprintf (stderr, " (IA-64) Linux"); + ++#define TARGET_ASM_FILE_END file_end_indicate_exec_stack ++ + /* This is for -profile to use -lc_p instead of -lc. */ + #undef CC1_SPEC + #define CC1_SPEC "%{profile:-p} %{G*}" +diff -durN gcc-4.4.0.orig/gcc/config/rs6000/ppc-asm.h gcc-4.4.0/gcc/config/rs6000/ppc-asm.h +--- gcc-4.4.0.orig/gcc/config/rs6000/ppc-asm.h 2008-10-13 17:44:26.000000000 +0200 ++++ gcc-4.4.0/gcc/config/rs6000/ppc-asm.h 2009-05-27 21:38:37.000000000 +0200 +@@ -172,7 +172,7 @@ + .size FUNC_NAME(name),GLUE(.L,name)-FUNC_NAME(name) + #endif + +-#if defined __linux__ && !defined __powerpc64__ ++#if defined __linux__ + .section .note.GNU-stack + .previous + #endif diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/260-sh-libgcc-stacks.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/260-sh-libgcc-stacks.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,25 @@ +diff -durN gcc-4.4.0.orig/gcc/config/sh/lib1funcs.asm gcc-4.4.0/gcc/config/sh/lib1funcs.asm +--- gcc-4.4.0.orig/gcc/config/sh/lib1funcs.asm 2009-04-10 01:23:07.000000000 +0200 ++++ gcc-4.4.0/gcc/config/sh/lib1funcs.asm 2009-05-27 21:38:39.000000000 +0200 +@@ -30,6 +30,11 @@ + !! recoded in assembly by Toshiyasu Morita + !! tm@netcom.com + ++#if defined(__ELF__) && defined(__linux__) ++.section .note.GNU-stack,"",%progbits ++.previous ++#endif ++ + /* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and + ELF local label prefixes by J"orn Rennecke + amylaar@cygnus.com */ +diff -durN gcc-4.4.0.orig/gcc/config/sh/linux-atomic.asm gcc-4.4.0/gcc/config/sh/linux-atomic.asm +--- gcc-4.4.0.orig/gcc/config/sh/linux-atomic.asm 2009-04-10 01:23:07.000000000 +0200 ++++ gcc-4.4.0/gcc/config/sh/linux-atomic.asm 2009-05-27 21:38:39.000000000 +0200 +@@ -136,3 +136,6 @@ + ATOMIC_FETCH_AND_COMBOP(nand,and,not,4,l,mov) + + #endif /* ! __SH5__ */ ++ ++.section .note.GNU-stack,"",%progbits ++.previous diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/270-sh-pr24836.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/270-sh-pr24836.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,24 @@ +diff -durN gcc-4.4.0.orig/gcc/configure gcc-4.4.0/gcc/configure +--- gcc-4.4.0.orig/gcc/configure 2009-05-27 21:38:08.000000000 +0200 ++++ gcc-4.4.0/gcc/configure 2009-05-27 21:38:42.000000000 +0200 +@@ -22205,7 +22205,7 @@ + tls_first_minor=14 + tls_as_opt="-m64 -Aesame --fatal-warnings" + ;; +- sh-*-* | sh[34]-*-*) ++ sh-*-* | sh[34]*-*-*) + conftest_s=' + .section ".tdata","awT",@progbits + foo: .long 25 +diff -durN gcc-4.4.0.orig/gcc/configure.ac gcc-4.4.0/gcc/configure.ac +--- gcc-4.4.0.orig/gcc/configure.ac 2009-05-27 21:38:08.000000000 +0200 ++++ gcc-4.4.0/gcc/configure.ac 2009-05-27 21:38:42.000000000 +0200 +@@ -2673,7 +2673,7 @@ + tls_first_minor=14 + tls_as_opt="-m64 -Aesame --fatal-warnings" + ;; +- sh-*-* | sh[34]-*-*) ++ sh-*-* | sh[34]*-*-*) + conftest_s=' + .section ".tdata","awT",@progbits + foo: .long 25 diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/280-freebsd.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/280-freebsd.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,94 @@ +diff -durN gcc-4.4.0.orig/gcc/config/freebsd-spec.h gcc-4.4.0/gcc/config/freebsd-spec.h +--- gcc-4.4.0.orig/gcc/config/freebsd-spec.h 2009-04-10 01:23:07.000000000 +0200 ++++ gcc-4.4.0/gcc/config/freebsd-spec.h 2009-05-27 21:38:45.000000000 +0200 +@@ -61,6 +61,8 @@ + builtin_assert ("system=unix"); \ + builtin_assert ("system=bsd"); \ + builtin_assert ("system=FreeBSD"); \ ++ if(!(flag_iso && (c_dialect_cxx () ? cxx_dialect == cxx98 : !flag_isoc99))) \ ++ builtin_define("_LONGLONG"); \ + FBSD_TARGET_CPU_CPP_BUILTINS(); \ + } \ + while (0) +diff -durN gcc-4.4.0.orig/gcc/config/t-freebsd-eh gcc-4.4.0/gcc/config/t-freebsd-eh +--- gcc-4.4.0.orig/gcc/config/t-freebsd-eh 1970-01-01 01:00:00.000000000 +0100 ++++ gcc-4.4.0/gcc/config/t-freebsd-eh 2009-05-27 21:38:45.000000000 +0200 +@@ -0,0 +1,4 @@ ++# Use unwind-dw2-fde-glibc ++LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde-glibc.c \ ++ $(srcdir)/unwind-sjlj.c $(srcdir)/gthr-gnat.c $(srcdir)/unwind-c.c ++LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h unwind-dw2-fde.c +diff -durN gcc-4.4.0.orig/gcc/config.gcc gcc-4.4.0/gcc/config.gcc +--- gcc-4.4.0.orig/gcc/config.gcc 2009-05-27 21:38:34.000000000 +0200 ++++ gcc-4.4.0/gcc/config.gcc 2009-05-27 21:38:45.000000000 +0200 +@@ -456,7 +456,7 @@ + # pleases around the provided core setting. + gas=yes + gnu_ld=yes +- extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o" ++ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o" + fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'` + tm_defines="${tm_defines} FBSD_MAJOR=${fbsd_major}" + tmake_file="t-slibgcc-elf-ver t-freebsd" +@@ -1042,6 +1042,10 @@ + ;; + i[34567]86-*-freebsd*) + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/freebsd.h" ++ fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'` ++ if test ${fbsd_major} -ge 7; then ++ tmake_file="${tmake_file} t-freebsd-eh" ++ fi + ;; + x86_64-*-freebsd*) + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/x86-64.h i386/freebsd.h i386/freebsd64.h" +diff -durN gcc-4.4.0.orig/gcc/crtstuff.c gcc-4.4.0/gcc/crtstuff.c +--- gcc-4.4.0.orig/gcc/crtstuff.c 2009-04-10 01:23:07.000000000 +0200 ++++ gcc-4.4.0/gcc/crtstuff.c 2009-05-27 21:38:45.000000000 +0200 +@@ -85,13 +85,15 @@ + && !defined(OBJECT_FORMAT_FLAT) \ + && defined(HAVE_LD_EH_FRAME_HDR) \ + && !defined(inhibit_libc) && !defined(CRTSTUFFT_O) \ +- && defined(__GLIBC__) && __GLIBC__ >= 2 ++ && ((defined(__GLIBC__) && __GLIBC__ >= 2) \ ++ || (defined(__FreeBSD_version) && __FreeBSD_version >= 700022)) + #include + /* uClibc pretends to be glibc 2.2 and DT_CONFIG is defined in its link.h. + But it doesn't use PT_GNU_EH_FRAME ELF segment currently. */ + # if !defined(__UCLIBC__) \ +- && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \ +- || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG))) ++ || (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \ ++ || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG))) \ ++ || (__FreeBSD_version >= 700022) + # define USE_PT_GNU_EH_FRAME + # endif + #endif +diff -durN gcc-4.4.0.orig/gcc/unwind-dw2-fde-glibc.c gcc-4.4.0/gcc/unwind-dw2-fde-glibc.c +--- gcc-4.4.0.orig/gcc/unwind-dw2-fde-glibc.c 2009-04-10 01:23:07.000000000 +0200 ++++ gcc-4.4.0/gcc/unwind-dw2-fde-glibc.c 2009-05-27 21:38:45.000000000 +0200 +@@ -46,8 +46,9 @@ + #include "gthr.h" + + #if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ +- && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \ +- || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG))) ++ && ((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \ ++ || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG))) \ ++ || (__FreeBSD_version >= 700022 )) + + #ifndef __RELOC_POINTER + # define __RELOC_POINTER(ptr, base) ((ptr) + (base)) +@@ -63,6 +64,13 @@ + #define PT_GNU_EH_FRAME (PT_LOOS + 0x474e550) + #endif + ++/* Support FreeBSD */ ++#ifndef ElfW ++# ifdef __ElfN ++# define ElfW __ElfN ++# endif ++#endif ++ + struct unw_eh_callback_data + { + _Unwind_Ptr pc; diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/290-freebsd.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/290-freebsd.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,64 @@ +diff -durN gcc-4.4.0.orig/gcc/config/freebsd-spec.h gcc-4.4.0/gcc/config/freebsd-spec.h +--- gcc-4.4.0.orig/gcc/config/freebsd-spec.h 2009-05-27 21:38:47.000000000 +0200 ++++ gcc-4.4.0/gcc/config/freebsd-spec.h 2009-05-27 21:38:47.000000000 +0200 +@@ -86,9 +86,10 @@ + #define FBSD_STARTFILE_SPEC \ + "%{!shared: \ + %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \ +- %{!p:%{profile:gcrt1.o%s} \ +- %{!profile:crt1.o%s}}}} \ +- crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}" ++ %{!p:%{profile:gcrt1.o%s} \ ++ %{!profile:crt1.o%s}}}} \ ++ crti.o%s \ ++ %{static:crtbeginT.o%s;shared:crtbeginS.o%s;:crtbegin.o%s}" + + /* Provide a ENDFILE_SPEC appropriate for FreeBSD. Here we tack on + the magical crtend.o file (see crtstuff.c) which provides part of +@@ -126,7 +127,8 @@ + %{pg: -lc_p} \ + }" + #else +-#if FBSD_MAJOR < 5 ++#include ++#if __FreeBSD_version < 500016 + #define FBSD_LIB_SPEC " \ + %{!shared: \ + %{!pg: \ +@@ -136,17 +138,34 @@ + %{!pthread:-lc_p} \ + %{pthread:-lc_r_p}} \ + }" +-#else ++#elif __FreeBSD_version < 700022 + #define FBSD_LIB_SPEC " \ + %{!shared: \ + %{!pg: %{pthread:-lpthread} -lc} \ + %{pg: %{pthread:-lpthread_p} -lc_p} \ + }" ++#else ++#define FBSD_LIB_SPEC " \ ++ %{!shared: \ ++ %{!pg: %{pthread:-lpthread} -lc} \ ++ %{pg: %{pthread:-lpthread_p} -lc_p}} \ ++ %{shared: \ ++ %{pthread:-lpthread} -lc} \ ++ " + #endif + #endif + +-#if FBSD_MAJOR < 6 ++#if FBSD_MAJOR < 5 + #define FBSD_DYNAMIC_LINKER "/usr/libexec/ld-elf.so.1" + #else + #define FBSD_DYNAMIC_LINKER "/libexec/ld-elf.so.1" + #endif ++ ++#if defined(HAVE_LD_EH_FRAME_HDR) ++#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " ++#endif ++ ++/* Use --as-needed -lgcc_s for eh support. */ ++#ifdef HAVE_LD_AS_NEEDED ++#define USE_LD_AS_NEEDED 1 ++#endif diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/300-pr40105.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/300-pr40105.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,180 @@ +diff -durN gcc-4.4.0.orig/gcc/Makefile.in gcc-4.4.0/gcc/Makefile.in +--- gcc-4.4.0.orig/gcc/Makefile.in 2009-03-25 13:00:32.000000000 +0100 ++++ gcc-4.4.0/gcc/Makefile.in 2009-05-27 21:38:50.000000000 +0200 +@@ -2785,7 +2785,8 @@ + value-prof.h $(TREE_INLINE_H) $(TARGET_H) + cfgrtl.o : cfgrtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ + $(FLAGS_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h \ +- output.h $(TOPLEV_H) $(FUNCTION_H) except.h $(TM_P_H) insn-config.h $(EXPR_H) \ ++ output.h $(TOPLEV_H) $(FUNCTION_H) except.h $(TM_P_H) $(INSN_ATTR_H) \ ++ insn-config.h $(EXPR_H) \ + $(CFGLAYOUT_H) $(CFGLOOP_H) $(OBSTACK_H) $(TARGET_H) $(TREE_H) \ + tree-pass.h $(DF_H) $(GGC_H) + cfganal.o : cfganal.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ +diff -durN gcc-4.4.0.orig/gcc/cfgrtl.c gcc-4.4.0/gcc/cfgrtl.c +--- gcc-4.4.0.orig/gcc/cfgrtl.c 2008-12-12 22:16:09.000000000 +0100 ++++ gcc-4.4.0/gcc/cfgrtl.c 2009-05-27 21:38:50.000000000 +0200 +@@ -53,6 +53,7 @@ + #include "toplev.h" + #include "tm_p.h" + #include "obstack.h" ++#include "insn-attr.h" + #include "insn-config.h" + #include "cfglayout.h" + #include "expr.h" +@@ -427,13 +428,27 @@ + return 0; + } + ++static unsigned int ++rest_of_pass_free_cfg (void) ++{ ++#ifdef DELAY_SLOTS ++ /* The resource.c machinery uses DF but the CFG isn't guaranteed to be ++ valid at that point so it would be too late to call df_analyze. */ ++ if (optimize > 0 && flag_delayed_branch) ++ df_analyze (); ++#endif ++ ++ free_bb_for_insn (); ++ return 0; ++} ++ + struct rtl_opt_pass pass_free_cfg = + { + { + RTL_PASS, + NULL, /* name */ + NULL, /* gate */ +- free_bb_for_insn, /* execute */ ++ rest_of_pass_free_cfg, /* execute */ + NULL, /* sub */ + NULL, /* next */ + 0, /* static_pass_number */ +diff -durN gcc-4.4.0.orig/gcc/resource.c gcc-4.4.0/gcc/resource.c +--- gcc-4.4.0.orig/gcc/resource.c 2009-02-20 16:20:38.000000000 +0100 ++++ gcc-4.4.0/gcc/resource.c 2009-05-27 21:38:50.000000000 +0200 +@@ -135,8 +135,6 @@ + static int + find_basic_block (rtx insn, int search_limit) + { +- basic_block bb; +- + /* Scan backwards to the previous BARRIER. Then see if we can find a + label that starts a basic block. Return the basic block number. */ + for (insn = prev_nonnote_insn (insn); +@@ -157,11 +155,8 @@ + for (insn = next_nonnote_insn (insn); + insn && LABEL_P (insn); + insn = next_nonnote_insn (insn)) +- { +- FOR_EACH_BB (bb) +- if (insn == BB_HEAD (bb)) +- return bb->index; +- } ++ if (BLOCK_FOR_INSN (insn)) ++ return BLOCK_FOR_INSN (insn)->index; + + return -1; + } +@@ -848,13 +843,12 @@ + (with no intervening active insns) to see if any of them start a basic + block. If we hit the start of the function first, we use block 0. + +- Once we have found a basic block and a corresponding first insns, we can +- accurately compute the live status from basic_block_live_regs and +- reg_renumber. (By starting at a label following a BARRIER, we are immune +- to actions taken by reload and jump.) Then we scan all insns between +- that point and our target. For each CLOBBER (or for call-clobbered regs +- when we pass a CALL_INSN), mark the appropriate registers are dead. For +- a SET, mark them as live. ++ Once we have found a basic block and a corresponding first insn, we can ++ accurately compute the live status (by starting at a label following a ++ BARRIER, we are immune to actions taken by reload and jump.) Then we ++ scan all insns between that point and our target. For each CLOBBER (or ++ for call-clobbered regs when we pass a CALL_INSN), mark the appropriate ++ registers are dead. For a SET, mark them as live. + + We have to be careful when using REG_DEAD notes because they are not + updated by such things as find_equiv_reg. So keep track of registers +@@ -954,13 +948,10 @@ + TARGET. Otherwise, we must assume everything is live. */ + if (b != -1) + { +- regset regs_live = DF_LR_IN (BASIC_BLOCK (b)); ++ regset regs_live = df_get_live_in (BASIC_BLOCK (b)); + rtx start_insn, stop_insn; + +- /* Compute hard regs live at start of block -- this is the real hard regs +- marked live, plus live pseudo regs that have been renumbered to +- hard regs. */ +- ++ /* Compute hard regs live at start of block. */ + REG_SET_TO_HARD_REG_SET (current_live_regs, regs_live); + + /* Get starting and ending insn, handling the case where each might +@@ -1046,10 +1037,24 @@ + + else if (LABEL_P (real_insn)) + { ++ basic_block bb; ++ + /* A label clobbers the pending dead registers since neither + reload nor jump will propagate a value across a label. */ + AND_COMPL_HARD_REG_SET (current_live_regs, pending_dead_regs); + CLEAR_HARD_REG_SET (pending_dead_regs); ++ ++ /* We must conservatively assume that all registers that used ++ to be live here still are. The fallthrough edge may have ++ left a live register uninitialized. */ ++ bb = BLOCK_FOR_INSN (real_insn); ++ if (bb) ++ { ++ HARD_REG_SET extra_live; ++ ++ REG_SET_TO_HARD_REG_SET (extra_live, df_get_live_in (bb)); ++ IOR_HARD_REG_SET (current_live_regs, extra_live); ++ } + } + + /* The beginning of the epilogue corresponds to the end of the +@@ -1121,6 +1126,7 @@ + init_resource_info (rtx epilogue_insn) + { + int i; ++ basic_block bb; + + /* Indicate what resources are required to be valid at the end of the current + function. The condition code never is and memory always is. If the +@@ -1189,6 +1195,11 @@ + /* Allocate and initialize the tables used by mark_target_live_regs. */ + target_hash_table = XCNEWVEC (struct target_info *, TARGET_HASH_PRIME); + bb_ticks = XCNEWVEC (int, last_basic_block); ++ ++ /* Set the BLOCK_FOR_INSN of each label that starts a basic block. */ ++ FOR_EACH_BB (bb) ++ if (LABEL_P (BB_HEAD (bb))) ++ BLOCK_FOR_INSN (BB_HEAD (bb)) = bb; + } + + /* Free up the resources allocated to mark_target_live_regs (). This +@@ -1197,6 +1208,8 @@ + void + free_resource_info (void) + { ++ basic_block bb; ++ + if (target_hash_table != NULL) + { + int i; +@@ -1222,6 +1235,10 @@ + free (bb_ticks); + bb_ticks = NULL; + } ++ ++ FOR_EACH_BB (bb) ++ if (LABEL_P (BB_HEAD (bb))) ++ BLOCK_FOR_INSN (BB_HEAD (bb)) = NULL; + } + + /* Clear any hashed information that we have stored for INSN. */ diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/310-uclibc-conf.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/310-uclibc-conf.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,35 @@ +diff -durN gcc-4.4.0.orig/contrib/regression/objs-gcc.sh gcc-4.4.0/contrib/regression/objs-gcc.sh +--- gcc-4.4.0.orig/contrib/regression/objs-gcc.sh 2009-04-10 01:23:07.000000000 +0200 ++++ gcc-4.4.0/contrib/regression/objs-gcc.sh 2009-05-27 21:38:53.000000000 +0200 +@@ -106,6 +106,10 @@ + then + make all-gdb all-dejagnu all-ld || exit 1 + make install-gdb install-dejagnu install-ld || exit 1 ++elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ] ++ then ++ make all-gdb all-dejagnu all-ld || exit 1 ++ make install-gdb install-dejagnu install-ld || exit 1 + elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then + make bootstrap || exit 1 + make install || exit 1 +diff -durN gcc-4.4.0.orig/libjava/classpath/ltconfig gcc-4.4.0/libjava/classpath/ltconfig +--- gcc-4.4.0.orig/libjava/classpath/ltconfig 2007-06-04 01:18:43.000000000 +0200 ++++ gcc-4.4.0/libjava/classpath/ltconfig 2009-05-27 21:38:53.000000000 +0200 +@@ -603,7 +603,7 @@ + + # Transform linux* to *-*-linux-gnu*, to support old configure scripts. + case $host_os in +-linux-gnu*) ;; ++linux-gnu*|linux-uclibc*) ;; + linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` + esac + +@@ -1251,7 +1251,7 @@ + ;; + + # This must be Linux ELF. +-linux-gnu*) ++linux*) + version_type=linux + need_lib_prefix=no + need_version=no diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/320-missing-execinfo_h.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/320-missing-execinfo_h.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,12 @@ +diff -durN gcc-4.4.0.orig/boehm-gc/include/gc.h gcc-4.4.0/boehm-gc/include/gc.h +--- gcc-4.4.0.orig/boehm-gc/include/gc.h 2007-04-23 23:10:09.000000000 +0200 ++++ gcc-4.4.0/boehm-gc/include/gc.h 2009-05-27 21:38:55.000000000 +0200 +@@ -503,7 +503,7 @@ + #if defined(__linux__) || defined(__GLIBC__) + # include + # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \ +- && !defined(__ia64__) ++ && !defined(__ia64__) && !defined(__UCLIBC__) + # ifndef GC_HAVE_BUILTIN_BACKTRACE + # define GC_HAVE_BUILTIN_BACKTRACE + # endif diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/330-c99-snprintf.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/330-c99-snprintf.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,12 @@ +diff -durN gcc-4.4.0.orig/libstdc++-v3/include/c_global/cstdio gcc-4.4.0/libstdc++-v3/include/c_global/cstdio +--- gcc-4.4.0.orig/libstdc++-v3/include/c_global/cstdio 2009-04-10 01:23:07.000000000 +0200 ++++ gcc-4.4.0/libstdc++-v3/include/c_global/cstdio 2009-05-27 21:38:58.000000000 +0200 +@@ -139,7 +139,7 @@ + + _GLIBCXX_END_NAMESPACE + +-#if _GLIBCXX_USE_C99 ++#if _GLIBCXX_USE_C99 || defined __UCLIBC__ + + #undef snprintf + #undef vfscanf diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/gcc/4.4.0/340-libmudflap-susv3-legacy.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/gcc/4.4.0/340-libmudflap-susv3-legacy.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,48 @@ +diff -durN gcc-4.4.0.orig/libmudflap/mf-hooks2.c gcc-4.4.0/libmudflap/mf-hooks2.c +--- gcc-4.4.0.orig/libmudflap/mf-hooks2.c 2009-04-10 01:23:07.000000000 +0200 ++++ gcc-4.4.0/libmudflap/mf-hooks2.c 2009-05-27 21:39:00.000000000 +0200 +@@ -421,7 +421,7 @@ + { + TRACE ("%s\n", __PRETTY_FUNCTION__); + MF_VALIDATE_EXTENT(s, n, __MF_CHECK_WRITE, "bzero region"); +- bzero (s, n); ++ memset (s, 0, n); + } + + +@@ -431,7 +431,7 @@ + TRACE ("%s\n", __PRETTY_FUNCTION__); + MF_VALIDATE_EXTENT(src, n, __MF_CHECK_READ, "bcopy src"); + MF_VALIDATE_EXTENT(dest, n, __MF_CHECK_WRITE, "bcopy dest"); +- bcopy (src, dest, n); ++ memmove (dest, src, n); + } + + +@@ -441,7 +441,7 @@ + TRACE ("%s\n", __PRETTY_FUNCTION__); + MF_VALIDATE_EXTENT(s1, n, __MF_CHECK_READ, "bcmp 1st arg"); + MF_VALIDATE_EXTENT(s2, n, __MF_CHECK_READ, "bcmp 2nd arg"); +- return bcmp (s1, s2, n); ++ return n == 0 ? 0 : memcmp (s1, s2, n); + } + + +@@ -450,7 +450,7 @@ + size_t n = strlen (s); + TRACE ("%s\n", __PRETTY_FUNCTION__); + MF_VALIDATE_EXTENT(s, CLAMPADD(n, 1), __MF_CHECK_READ, "index region"); +- return index (s, c); ++ return strchr (s, c); + } + + +@@ -459,7 +459,7 @@ + size_t n = strlen (s); + TRACE ("%s\n", __PRETTY_FUNCTION__); + MF_VALIDATE_EXTENT(s, CLAMPADD(n, 1), __MF_CHECK_READ, "rindex region"); +- return rindex (s, c); ++ return strrchr (s, c); + } + + /* XXX: stpcpy, memccpy */ diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/glibc/2.9/560-syslog.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/glibc/2.9/560-syslog.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,12 @@ +diff -durN glibc-cvs-2.9.orig/misc/syslog.c glibc-cvs-2.9/misc/syslog.c +--- glibc-cvs-2.9.orig/misc/syslog.c 2009-06-01 10:16:50.000000000 +0200 ++++ glibc-cvs-2.9/misc/syslog.c 2009-06-01 10:17:20.000000000 +0200 +@@ -152,7 +152,7 @@ + #define INTERNALLOG LOG_ERR|LOG_CONS|LOG_PERROR|LOG_PID + /* Check for invalid bits. */ + if (pri & ~(LOG_PRIMASK|LOG_FACMASK)) { +- syslog(INTERNALLOG, ++ __syslog(INTERNALLOG, + "syslog: unknown facility/priority: %x", pri); + pri &= LOG_PRIMASK|LOG_FACMASK; + } diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/glibc/2.9/570-debug-readlink_chk-readklinkat_chk.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/glibc/2.9/570-debug-readlink_chk-readklinkat_chk.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,24 @@ +diff -dur glibc-cvs-2.9.orig/debug/readlink_chk.c glibc-cvs-2.9/debug/readlink_chk.c +--- glibc-cvs-2.9.orig/debug/readlink_chk.c 2005-03-01 01:41:15.000000000 +0100 ++++ glibc-cvs-2.9/debug/readlink_chk.c 2009-06-01 10:59:37.000000000 +0200 +@@ -25,7 +25,7 @@ + + + ssize_t +-__readlink_chk (const char *path, void *buf, size_t len, size_t buflen) ++__readlink_chk (const char *path, char *buf, size_t len, size_t buflen) + { + if (len > buflen) + __chk_fail (); +diff -dur glibc-cvs-2.9.orig/debug/readlinkat_chk.c glibc-cvs-2.9/debug/readlinkat_chk.c +--- glibc-cvs-2.9.orig/debug/readlinkat_chk.c 2006-04-24 18:56:12.000000000 +0200 ++++ glibc-cvs-2.9/debug/readlinkat_chk.c 2009-06-01 11:07:26.000000000 +0200 +@@ -21,7 +21,7 @@ + + + ssize_t +-__readlinkat_chk (int fd, const char *path, void *buf, size_t len, ++__readlinkat_chk (int fd, const char *path, char *buf, size_t len, + size_t buflen) + { + if (len > buflen) diff -r 7264ce426be4 -r 8dbd9e0dc1d9 patches/strace/4.5.18/180-arm-EABI-syscalls.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/strace/4.5.18/180-arm-EABI-syscalls.patch Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,23 @@ +Patch from upstream: +http://strace.cvs.sourceforge.net/viewvc/strace/strace/linux/arm/syscallent.h?r1=1.17&r2=1.18&sortby=file + +2008-11-13 Kirill A. Shutemov + + * linux/arm/syscallent.h: Fix build on ARM EABI which does not + provide syscalls socketcall and ipc. + +--- strace-4.5.18.orig/linux/arm/syscallent.h 2008/12/29 20:04:15 1.17 ++++ strace-4.5.18/linux/arm/syscallent.h 2009/01/01 23:20:38 1.18 +@@ -431,6 +431,7 @@ + { 5, 0, printargs, "SYS_398" }, /* 398 */ + { 5, 0, printargs, "SYS_399" }, /* 399 */ + ++#ifndef __ARM_EABI__ + #if SYS_socket_subcall != 400 + #error fix me + #endif +@@ -481,3 +482,4 @@ + { 4, TI, sys_shmdt, "shmdt" }, /* 440 */ + { 4, TI, sys_shmget, "shmget" }, /* 441 */ + { 4, TI, sys_shmctl, "shmctl" }, /* 442 */ ++#endif diff -r 7264ce426be4 -r 8dbd9e0dc1d9 samples/arm-cortex_a8-linux-gnueabi/crosstool.config --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/arm-cortex_a8-linux-gnueabi/crosstool.config Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,426 @@ +# +# Automatically generated make config: don't edit +# crosstool-NG version: svn_devel_gcc-4.4@1589 +# Tue Jun 2 23:13:19 2009 +# + +# +# Paths and misc options +# + +# +# crosstool-NG behavior +# +# CT_OBSOLETE is not set +CT_EXPERIMENTAL=y +# CT_DEBUG_CT is not set + +# +# Paths +# +CT_LOCAL_TARBALLS_DIR="${HOME}/src" +CT_SAVE_TARBALLS=y +CT_WORK_DIR="${CT_TOP_DIR}/targets" +CT_PREFIX_DIR="${HOME}/x-tools/${CT_TARGET}" +CT_INSTALL_DIR="${CT_PREFIX_DIR}" +# CT_CUSTOM_PATCH is not set +CT_REMOVE_DOCS=y +CT_INSTALL_DIR_RO=y + +# +# Downloading +# +# CT_FORBID_DOWNLOAD is not set +# CT_FORCE_DOWNLOAD is not set +# CT_USE_MIRROR is not set +CT_CONNECT_TIMEOUT=10 +# CT_ONLY_DOWNLOAD is not set + +# +# Extracting +# +# CT_FORCE_EXTRACT is not set +CT_OVERIDE_CONFIG_GUESS_SUB=y +# CT_ONLY_EXTRACT is not set + +# +# Build behavior +# +CT_PARALLEL_JOBS=1 +CT_LOAD=0 +CT_NICE=0 +CT_USE_PIPES=y +# CT_CONFIG_SHELL_ASH is not set + +# +# Logging +# +# CT_LOG_ERROR is not set +# CT_LOG_WARN is not set +# CT_LOG_INFO is not set +CT_LOG_EXTRA=y +# CT_LOG_DEBUG is not set +# CT_LOG_ALL is not set +CT_LOG_LEVEL_MAX="EXTRA" +# CT_LOG_SEE_TOOLS_WARN is not set +CT_LOG_PROGRESS_BAR=y +CT_LOG_TO_FILE=y +CT_LOG_FILE_COMPRESS=y + +# +# Target options +# +CT_ARCH="arm" +# CT_ARCH_64 is not set +# CT_ARCH_SUPPORTS_BOTH_MMU is not set +CT_ARCH_SUPPORTS_BOTH_ENDIAN=y +CT_ARCH_SUPPORT_ARCH=y +# CT_ARCH_SUPPORT_ABI is not set +CT_ARCH_SUPPORT_CPU=y +CT_ARCH_SUPPORT_TUNE=y +CT_ARCH_SUPPORT_FPU=y +# CT_ARCH_DEFAULT_HAS_MMU is not set +# CT_ARCH_DEFAULT_BE is not set +CT_ARCH_DEFAULT_LE=y +CT_ARCH_ARCH="armv7-a" +CT_ARCH_CPU="cortex-a8" +CT_ARCH_TUNE="cortex-a8" +CT_ARCH_FPU="" +# CT_ARCH_BE is not set +CT_ARCH_LE=y +# CT_ARCH_FLOAT_HW is not set +CT_ARCH_FLOAT_SW=y +CT_TARGET_CFLAGS="" +CT_TARGET_LDFLAGS="" + +# +# General target options +# +# CT_ARCH_alpha is not set +CT_ARCH_arm=y +# CT_ARCH_ia64 is not set +# CT_ARCH_mips is not set +# CT_ARCH_powerpc is not set +# CT_ARCH_powerpc64 is not set +# CT_ARCH_sh is not set +# CT_ARCH_x86 is not set +# CT_ARCH_x86_64 is not set +CT_ARCH_ARM_EABI=y +CT_ARCH_USE_MMU=y + +# +# Target optimisations +# + +# +# Toolchain options +# + +# +# General toolchain options +# +CT_USE_SYSROOT=y +CT_SYSROOT_DIR_PREFIX="" +CT_SHARED_LIBS=y + +# +# Tuple completion and aliasing +# +CT_TARGET_VENDOR="cortex_a8" +CT_TARGET_ALIAS_SED_EXPR="" +CT_TARGET_ALIAS="" + +# +# Toolchain type +# +# CT_NATIVE is not set +CT_CROSS=y +# CT_CROSS_NATIVE is not set +# CT_CANADIAN is not set +CT_TOOLCHAIN_TYPE="cross" + +# +# Build system +# +CT_BUILD="" +CT_BUILD_PREFIX="" +CT_BUILD_SUFFIX="" + +# +# Operating System +# +# CT_BARE_METAL is not set +CT_KERNEL="linux" +CT_KERNEL_VERSION="2.6.29.2" +# CT_KERNEL_bare_metal is not set +CT_KERNEL_linux=y +CT_KERNEL_LINUX_INSTALL=y +CT_KERNEL_LINUX_INSTALL_CHECK=y +# CT_KERNEL_V_2_6_18_8 is not set +# CT_KERNEL_V_2_6_19_7 is not set +# CT_KERNEL_V_2_6_20_21 is not set +# CT_KERNEL_V_2_6_21_7 is not set +# CT_KERNEL_V_2_6_22_19 is not set +# CT_KERNEL_V_2_6_23_17 is not set +# CT_KERNEL_V_2_6_24_7 is not set +# CT_KERNEL_V_2_6_25_20 is not set +# CT_KERNEL_V_2_6_26_8 is not set +# CT_KERNEL_V_2_6_27_22 is not set +# CT_KERNEL_V_2_6_28 is not set +# CT_KERNEL_V_2_6_28_1 is not set +# CT_KERNEL_V_2_6_28_2 is not set +# CT_KERNEL_V_2_6_28_3 is not set +# CT_KERNEL_V_2_6_28_4 is not set +# CT_KERNEL_V_2_6_28_5 is not set +# CT_KERNEL_V_2_6_28_6 is not set +# CT_KERNEL_V_2_6_28_7 is not set +# CT_KERNEL_V_2_6_28_8 is not set +# CT_KERNEL_V_2_6_28_9 is not set +# CT_KERNEL_V_2_6_28_10 is not set +# CT_KERNEL_V_2_6_29 is not set +# CT_KERNEL_V_2_6_29_1 is not set +CT_KERNEL_V_2_6_29_2=y +# CT_KERNEL_V_select is not set +CT_KERNEL_LINUX_VERBOSITY_0=y +# CT_KERNEL_LINUX_VERBOSITY_1 is not set +# CT_KERNEL_LINUX_VERBOSITY_2 is not set +CT_KERNEL_LINUX_VERBOSE_LEVEL=0 +# CT_KERNEL_LINUX_USE_CUSTOM_HEADERS is not set + +# +# Companion libraries +# +CT_GMP_MPFR=y +# CT_GMP_V_4_2_2 is not set +CT_GMP_V_4_2_4=y +CT_GMP_VERSION="4.2.4" +# CT_MPFR_V_2_3_1 is not set +# CT_MPFR_V_2_3_2 is not set +# CT_MPFR_V_2_4_0 is not set +CT_MPFR_V_2_4_1=y +CT_MPFR_VERSION="2.4.1" +CT_PPL_CLOOG_MPC=y +CT_PPL_V_0_10_2=y +CT_PPL_VERSION="0.10.2" +CT_CLOOG_V_0_15_3=y +CT_CLOOG_VERSION="0.15.3" +CT_MPC_V_0_6=y +CT_MPC_VERSION="0.6" + +# +# Companion libraries common options +# +# CT_COMP_LIBS_CHECK is not set +CT_COMP_LIBS_TARGET=y + +# +# Binary utilities +# +CT_ARCH_BINFMT_ELF=y +# CT_ARCH_BINFMT_FLAT is not set + +# +# GNU binutils +# +CT_BINUTILS_VERSION="2.19.1" +# CT_BINUTILS_V_2_14 is not set +# CT_BINUTILS_V_2_15 is not set +# CT_BINUTILS_V_2_16_1 is not set +# CT_BINUTILS_V_2_17 is not set +# CT_BINUTILS_V_2_18 is not set +# CT_BINUTILS_V_2_18_50_0_4 is not set +# CT_BINUTILS_V_2_18_50_0_6 is not set +# CT_BINUTILS_V_2_18_50_0_7 is not set +# CT_BINUTILS_V_2_18_50_0_8 is not set +# CT_BINUTILS_V_2_18_50_0_9 is not set +# CT_BINUTILS_V_2_18_90 is not set +# CT_BINUTILS_V_2_18_91 is not set +# CT_BINUTILS_V_2_18_92 is not set +# CT_BINUTILS_V_2_18_93 is not set +# CT_BINUTILS_V_2_19 is not set +CT_BINUTILS_V_2_19_1=y +# CT_BINUTILS_V_2_19_50_0_1 is not set +# CT_BINUTILS_V_2_19_51_0_1 is not set +# CT_BINUTILS_V_2_19_51_0_2 is not set +CT_BINUTILS_EXTRA_CONFIG="" +CT_BINUTILS_FOR_TARGET=y +CT_BINUTILS_FOR_TARGET_IBERTY=y +CT_BINUTILS_FOR_TARGET_BFD=y + +# +# C compiler +# +CT_CC="gcc" +CT_CC_VERSION="4.4.0" +CT_CC_gcc=y +# CT_CC_V_3_2_3 is not set +# CT_CC_V_3_3_6 is not set +# CT_CC_V_3_4_6 is not set +# CT_CC_V_4_0_0 is not set +# CT_CC_V_4_0_1 is not set +# CT_CC_V_4_0_2 is not set +# CT_CC_V_4_0_3 is not set +# CT_CC_V_4_0_4 is not set +# CT_CC_V_4_1_0 is not set +# CT_CC_V_4_1_1 is not set +# CT_CC_V_4_1_2 is not set +# CT_CC_V_4_2_0 is not set +# CT_CC_V_4_2_1 is not set +# CT_CC_V_4_2_2 is not set +# CT_CC_V_4_2_3 is not set +# CT_CC_V_4_2_4 is not set +# CT_CC_V_4_3_0 is not set +# CT_CC_V_4_3_1 is not set +# CT_CC_V_4_3_2 is not set +# CT_CC_V_4_3_3 is not set +CT_CC_V_4_4_0=y +CT_CC_GCC_4_3_or_later=y +CT_CC_GCC_4_4_or_later=y +CT_CC_CXA_ATEXIT=y +CT_CC_SJLJ_EXCEPTIONS_CONFIGURE=y +# CT_CC_SJLJ_EXCEPTIONS_USE is not set +# CT_CC_SJLJ_EXCEPTIONS_DONT_USE is not set +CT_CC_CORE_EXTRA_CONFIG="" +CT_CC_EXTRA_CONFIG="" +CT_CC_PKGVERSION="crosstool-NG-${CT_VERSION}" +CT_CC_BUGURL="" +CT_CC_SUPPORT_CXX=y +CT_CC_SUPPORT_FORTRAN=y +CT_CC_SUPPORT_JAVA=y +CT_CC_SUPPORT_ADA=y +CT_CC_SUPPORT_OBJC=y +CT_CC_SUPPORT_OBJCXX=y + +# +# Additional supported languages: +# +CT_CC_LANG_CXX=y +# CT_CC_LANG_FORTRAN is not set +# CT_CC_LANG_JAVA is not set +# CT_CC_LANG_ADA is not set +# CT_CC_LANG_OBJC is not set +# CT_CC_LANG_OBJCXX is not set +CT_CC_LANG_OTHERS="" +CT_LIBC="glibc" + +# +# C-library +# +CT_LIBC_VERSION="2.9" +# CT_LIBC_eglibc is not set +CT_LIBC_glibc=y +# CT_LIBC_uClibc is not set +# CT_LIBC_V_2_3_6 is not set +# CT_LIBC_V_2_5 is not set +# CT_LIBC_V_2_5_1 is not set +# CT_LIBC_V_2_6 is not set +# CT_LIBC_V_2_6_1 is not set +# CT_LIBC_V_2_7 is not set +# CT_LIBC_V_2_8 is not set +CT_LIBC_V_2_9=y +# CT_LIBC_V_LATEST is not set +# CT_LIBC_V_date is not set +CT_LIBC_GLIBC_2_8_or_later=y +# CT_LIBC_GLIBC_TARBALL is not set +CT_LIBC_GLIBC_CVS=y +CT_LIBC_GLIBC_CVS_date="2009-05-27" + +# +# glibc/eglibc common options +# +CT_LIBC_GLIBC_EXTRA_CONFIG="" +CT_LIBC_GLIBC_CONFIGPARMS="" +CT_LIBC_GLIBC_EXTRA_CFLAGS="" +CT_LIBC_EXTRA_CC_ARGS="" +CT_LIBC_GLIBC_USE_PORTS=y +CT_LIBC_ADDONS_LIST="" + +# +# WARNING!!! +# + +# +# For glibc >= 2.8, addons are only available via a CVS checkout. +# + +# +# Be sure to review the associated options, above. +# +# CT_LIBC_GLIBC_KERNEL_VERSION_NONE is not set +CT_LIBC_GLIBC_KERNEL_VERSION_AS_HEADERS=y +# CT_LIBC_GLIBC_KERNEL_VERSION_CHOSEN is not set +CT_LIBC_GLIBC_MIN_KERNEL="2.6.29.2" + +# +# Common C library options +# +CT_LIBC_SUPPORT_NPTL=y +CT_LIBC_SUPPORT_LINUXTHREADS=y +CT_THREADS="nptl" +CT_THREADS_NPTL=y +# CT_THREADS_LINUXTHREADS is not set +# CT_THREADS_NONE is not set + +# +# Tools facilities +# +CT_TOOL_libelf=y +CT_LIBELF_V_0_8_10=y +CT_LIBELF_VERSION="0.8.10" +CT_TOOL_sstrip=y +CT_SSTRIP_BUILDROOT=y +# CT_SSTRIP_ELFKICKERS is not set +CT_SSTRIP_FROM="buildroot" + +# +# Debug facilities +# +CT_DEBUG_dmalloc=y +# CT_DMALLOC_V_5_4_3 is not set +CT_DMALLOC_V_5_5_2=y +CT_DMALLOC_VERSION="5.5.2" +CT_DEBUG_duma=y +CT_DUMA_A=y +CT_DUMA_SO=y +# CT_DUMA_V_2_5_1 is not set +# CT_DUMA_V_2_5_8 is not set +# CT_DUMA_V_2_5_12 is not set +CT_DUMA_V_2_5_14=y +CT_DUMA_VERSION="2_5_14" +CT_DEBUG_gdb=y +CT_GDB_CROSS=y +# CT_GDB_CROSS_STATIC is not set +# CT_GDB_CROSS_INSIGHT is not set +CT_GDB_NATIVE=y +# CT_GDB_NATIVE_STATIC is not set +CT_GDB_NATIVE_USE_GMP_MPFR=y +CT_GDB_GDBSERVER=y +CT_GDB_GDBSERVER_STATIC=y +# CT_GDB_V_6_4 is not set +# CT_GDB_V_6_5 is not set +# CT_GDB_V_6_6 is not set +# CT_GDB_V_6_7 is not set +# CT_GDB_V_6_7_1 is not set +CT_GDB_V_6_8=y +# CT_GDB_V_snapshot is not set +CT_GDB_VERSION="6.8" + +# +# Native gdb needs a native ncurses library +# +# CT_NCURSES_V_5_6 is not set +CT_NCURSES_V_5_7=y +CT_NCURSES_VERSION="5.7" +CT_DEBUG_ltrace=y +# CT_LTRACE_V_0_4 is not set +# CT_LTRACE_V_0_5 is not set +CT_LTRACE_V_0_5_1=y +CT_LTRACE_VERSION="0.5.1" +CT_DEBUG_strace=y +# CT_STRACE_V_4_5 is not set +# CT_STRACE_V_4_5_14 is not set +# CT_STRACE_V_4_5_15 is not set +# CT_STRACE_V_4_5_16 is not set +# CT_STRACE_V_4_5_17 is not set +CT_STRACE_V_4_5_18=y +CT_STRACE_VERSION="4.5.18" diff -r 7264ce426be4 -r 8dbd9e0dc1d9 samples/arm-cortex_a8-linux-gnueabi/reported.by --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/arm-cortex_a8-linux-gnueabi/reported.by Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,3 @@ +reporter_name="Yann E. MORIN" +reporter_url="http://ymorin.is-a-geek.org/" +reporter_comment="" diff -r 7264ce426be4 -r 8dbd9e0dc1d9 scripts/addToolVersion.sh --- a/scripts/addToolVersion.sh Wed Jun 17 10:46:28 2009 +0200 +++ b/scripts/addToolVersion.sh Wed Jun 17 12:32:01 2009 +0200 @@ -13,7 +13,7 @@ 'tool' in one of: --gcc, --binutils, --glibc, --eglibc, --uClibc, --linux, --gdb, --dmalloc, --duma, --strace, --ltrace, --libelf - --gmp, --mpfr, --ppl + --gmp, --mpfr, --ppl, --cloog Valid options for all tools: --stable, -s, +x (default) @@ -134,6 +134,7 @@ --gmp) EXP=; OBS=; cat=GMP; tool=gmp; tool_prefix=companion_libs;; --mpfr) EXP=; OBS=; cat=MPFR; tool=mpfr; tool_prefix=companion_libs;; --ppl) EXP=; OBS=; cat=PPL; tool=ppl; tool_prefix=companion_libs;; + --cloog) EXP=; OBS=; cat=CLOOG; tool=cloog; tool_prefix=companion_libs;; # Tools options: -x|--experimental|+s) EXP=1;; diff -r 7264ce426be4 -r 8dbd9e0dc1d9 scripts/build/cc/gcc.sh --- a/scripts/build/cc/gcc.sh Wed Jun 17 10:46:28 2009 +0200 +++ b/scripts/build/cc/gcc.sh Wed Jun 17 12:32:01 2009 +0200 @@ -4,18 +4,16 @@ # Download gcc do_cc_get() { - local version="${CT_CC_VERSION}${CT_CC_GCC_4_4_snapshot_date}" - # Ah! gcc folks are kind of 'different': they store the tarballs in # subdirectories of the same name! That's because gcc is such /crap/ that # it is such /big/ that it needs being splitted for distribution! Sad. :-( # Arrgghh! Some of those versions does not follow this convention: # gcc-3.3.3 lives in releases/gcc-3.3.3, while gcc-2.95.* isn't in a # subdirectory! You bastard! - CT_GetFile "gcc-${version}" \ - {ftp,http}://ftp.gnu.org/gnu/gcc{,{,/releases}/gcc-${version}} \ - ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-${version} \ - ftp://ftp.uvsq.fr/pub/gcc/snapshots/${version} + CT_GetFile "gcc-${CT_CC_VERSION}" \ + {ftp,http}://ftp.gnu.org/gnu/gcc{,{,/releases}/gcc-${CT_CC_VERSION}} \ + ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-${CT_CC_VERSION} \ + ftp://ftp.uvsq.fr/pub/gcc/snapshots/${CT_CC_VERSION} # Starting with GCC 4.3, ecj is used for Java, and will only be # built if the configure script finds ecj.jar at the top of the @@ -29,16 +27,14 @@ # Extract gcc do_cc_extract() { - local version="${CT_CC_VERSION}${CT_CC_GCC_4_4_snapshot_date}" - - CT_Extract "gcc-${version}" - CT_Patch "gcc-${version}" + CT_Extract "gcc-${CT_CC_VERSION}" + CT_Patch "gcc-${CT_CC_VERSION}" # Copy ecj-latest.jar to ecj.jar at the top of the GCC source tree - if [ "${CT_CC_LANG_JAVA_USE_ECJ}" = "y" \ - -a ! -f "${CT_SRC_DIR}/gcc-${version}/ecj.jar" \ + if [ "${CT_CC_LANG_JAVA_USE_ECJ}" = "y" \ + -a ! -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/ecj.jar" \ ]; then - CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/ecj-latest.jar" "${CT_SRC_DIR}/gcc-${version}/ecj.jar" + CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/ecj-latest.jar" "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/ecj.jar" fi } @@ -90,7 +86,6 @@ local core_prefix_dir local extra_config local lang_opt - local version="${CT_CC_VERSION}${CT_CC_GCC_4_4_snapshot_date}" eval $1 eval $2 @@ -137,12 +132,20 @@ extra_config="${extra_config} ${CT_ARCH_WITH_TUNE}" extra_config="${extra_config} ${CT_ARCH_WITH_FPU}" extra_config="${extra_config} ${CT_ARCH_WITH_FLOAT}" - [ "${CT_GMP_MPFR}" = "y" ] && extra_config="${extra_config} --with-gmp=${CT_PREFIX_DIR} --with-mpfr=${CT_PREFIX_DIR}" if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then extra_config="${extra_config} --enable-__cxa_atexit" else extra_config="${extra_config} --disable-__cxa_atexit" fi + if [ "${CT_GMP_MPFR}" = "y" ]; then + extra_config="${extra_config} --with-gmp=${CT_PREFIX_DIR}" + extra_config="${extra_config} --with-mpfr=${CT_PREFIX_DIR}" + fi + if [ "${CT_PPL_CLOOG_MPC}" = "y" ]; then + extra_config="${extra_config} --with-ppl=${CT_PREFIX_DIR}" + extra_config="${extra_config} --with-cloog=${CT_PREFIX_DIR}" + extra_config="${extra_config} --with-mpc=${CT_PREFIX_DIR}" + fi CT_DoLog DEBUG "Extra config passed: '${extra_config}'" @@ -150,7 +153,7 @@ CC_FOR_BUILD="${CT_BUILD}-gcc" \ CFLAGS="${CT_CFLAGS_FOR_HOST}" \ CT_DoExecLog ALL \ - "${CT_SRC_DIR}/gcc-${version}/configure" \ + "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/configure" \ --build=${CT_BUILD} \ --host=${CT_HOST} \ --target=${CT_TARGET} \ @@ -182,7 +185,7 @@ # so we configure then build it. # Next we have to configure gcc, create libgcc.mk then edit it... # So much easier if we just edit the source tree, but hey... - if [ ! -f "${CT_SRC_DIR}/gcc-${version}/gcc/BASE-VER" ]; then + if [ ! -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then CT_DoExecLog ALL make configure-libiberty CT_DoExecLog ALL make ${PARALLELMFLAGS} -C libiberty libiberty.a CT_DoExecLog ALL make configure-gcc configure-libcpp @@ -192,7 +195,7 @@ CT_DoExecLog ALL make ${PARALLELMFLAGS} all-libcpp all-build-libiberty fi # HACK: gcc-4.2 uses libdecnumber to build libgcc.mk, so build it here. - if [ -d "${CT_SRC_DIR}/gcc-${version}/libdecnumber" ]; then + if [ -d "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/libdecnumber" ]; then CT_DoExecLog ALL make configure-libdecnumber CT_DoExecLog ALL make ${PARALLELMFLAGS} -C libdecnumber libdecnumber.a fi @@ -238,8 +241,6 @@ #------------------------------------------------------------------------------ # Build final gcc do_cc() { - local version="${CT_CC_VERSION}${CT_CC_GCC_4_4_snapshot_date}" - # If building for bare metal, nothing to be done here, the static core conpiler is enough! [ "${CT_BARE_METAL}" = "y" ] && return 0 @@ -273,7 +274,6 @@ extra_config="${extra_config} ${CT_ARCH_WITH_FPU}" extra_config="${extra_config} ${CT_ARCH_WITH_FLOAT}" [ "${CT_SHARED_LIBS}" = "y" ] || extra_config="${extra_config} --disable-shared" - [ "${CT_GMP_MPFR}" = "y" ] && extra_config="${extra_config} --with-gmp=${CT_PREFIX_DIR} --with-mpfr=${CT_PREFIX_DIR}" [ -n "${CT_CC_PKGVERSION}" ] && extra_config="${extra_config} --with-pkgversion=${CT_CC_PKGVERSION}" [ -n "${CT_CC_BUGURL}" ] && extra_config="${extra_config} --with-bugurl=${CT_CC_BUGURL}" [ "${CT_CC_SJLJ_EXCEPTIONS_USE}" = "y" ] && extra_config="${extra_config} --enable-sjlj-exceptions" @@ -283,6 +283,15 @@ else extra_config="${extra_config} --disable-__cxa_atexit" fi + if [ "${CT_GMP_MPFR}" = "y" ]; then + extra_config="${extra_config} --with-gmp=${CT_PREFIX_DIR}" + extra_config="${extra_config} --with-mpfr=${CT_PREFIX_DIR}" + fi + if [ "${CT_PPL_CLOOG_MPC}" = "y" ]; then + extra_config="${extra_config} --with-ppl=${CT_PREFIX_DIR}" + extra_config="${extra_config} --with-cloog=${CT_PREFIX_DIR}" + extra_config="${extra_config} --with-mpc=${CT_PREFIX_DIR}" + fi CT_DoLog DEBUG "Extra config passed: '${extra_config}'" @@ -296,7 +305,7 @@ CXXFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \ LDFLAGS_FOR_TARGET="${CT_TARGET_LDFLAGS}" \ CT_DoExecLog ALL \ - "${CT_SRC_DIR}/gcc-${version}/configure" \ + "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/configure" \ --build=${CT_BUILD} \ --host=${CT_HOST} \ --target=${CT_TARGET} \ diff -r 7264ce426be4 -r 8dbd9e0dc1d9 scripts/build/companion_libs/cloog.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/build/companion_libs/cloog.sh Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,63 @@ +# This file adds the functions to build the CLooG library +# Copyright 2009 Yann E. MORIN +# Licensed under the GPL v2. See COPYING in the root of this package + +do_cloog_get() { :; } +do_cloog_extract() { :; } +do_cloog() { :; } +do_cloog_target() { :; } + +# Overide functions depending on configuration +if [ "${CT_PPL_CLOOG_MPC}" = "y" ]; then + +# Download CLooG +do_cloog_get() { + CT_GetFile "cloog-ppl-${CT_CLOOG_VERSION}" \ + ftp://gcc.gnu.org/pub/gcc/infrastructure +} + +# Extract CLooG +do_cloog_extract() { + CT_Extract "cloog-ppl-${CT_CLOOG_VERSION}" + CT_Pushd "${CT_SRC_DIR}/cloog-ppl" + CT_Patch "cloog-ppl-${CT_CLOOG_VERSION}" nochdir + CT_Popd +} + +do_cloog() { + mkdir -p "${CT_BUILD_DIR}/build-cloog-ppl" + cd "${CT_BUILD_DIR}/build-cloog-ppl" + + CT_DoStep INFO "Installing CLooG/ppl" + + CT_DoLog EXTRA "Configuring CLooG/ppl" + CFLAGS="${CT_CFLAGS_FOR_HOST}" \ + CT_DoExecLog ALL \ + "${CT_SRC_DIR}/cloog-ppl/configure" \ + --build=${CT_BUILD} \ + --host=${CT_HOST} \ + --prefix="${CT_PREFIX_DIR}" \ + --with-gmp="${CT_PREFIX_DIR}" \ + --with-ppl="${CT_PREFIX_DIR}" \ + --enable-shared \ + --disable-static \ + --with-bits=gmp + + CT_DoLog EXTRA "Building CLooG/ppl" + CT_DoExecLog ALL make ${PARALLELMFLAGS} + + if [ "${CT_COMP_LIBS_CHECK}" = "y" ]; then + CT_DoLog EXTRA "Checking CLooG/ppl" + CT_DoExecLog ALL make ${PARALLELMFLAGS} -s check + fi + + CT_DoLog EXTRA "Installing CLooG/ppl" + CT_DoExecLog ALL make install + + # Remove spuriously installed file + CT_DoExecLog ALL rm -f "${CT_PREFIX_DIR}/bin/cloog" + + CT_EndStep +} + +fi # CT_PPL_CLOOG_MPC diff -r 7264ce426be4 -r 8dbd9e0dc1d9 scripts/build/companion_libs/gmp.sh --- a/scripts/build/companion_libs/gmp.sh Wed Jun 17 10:46:28 2009 +0200 +++ b/scripts/build/companion_libs/gmp.sh Wed Jun 17 12:32:01 2009 +0200 @@ -22,8 +22,6 @@ } do_gmp() { - local opts - local cflags mkdir -p "${CT_BUILD_DIR}/build-gmp" cd "${CT_BUILD_DIR}/build-gmp" @@ -32,27 +30,22 @@ CT_DoLog EXTRA "Configuring GMP" - if [ "${CT_PPL_CLOOG}" = "y" ]; then - opts="--enable-cxx" - cflags="-fexceptions" - fi - - CFLAGS="${CT_CFLAGS_FOR_HOST} ${cflags}" \ + CFLAGS="${CT_CFLAGS_FOR_HOST} -fexceptions" \ CT_DoExecLog ALL \ "${CT_SRC_DIR}/gmp-${CT_GMP_VERSION}/configure" \ --build=${CT_BUILD} \ --host=${CT_HOST} \ --prefix="${CT_PREFIX_DIR}" \ - --disable-shared \ - --enable-static \ + --enable-shared \ + --disable-static \ --enable-fft \ --enable-mpbsd \ - ${opts} + --enable-cxx CT_DoLog EXTRA "Building GMP" CT_DoExecLog ALL make ${PARALLELMFLAGS} - if [ "${CT_GMP_CHECK}" = "y" ]; then + if [ "${CT_COMP_LIBS_CHECK}" = "y" ]; then CT_DoLog EXTRA "Checking GMP" CT_DoExecLog ALL make ${PARALLELMFLAGS} -s check fi @@ -63,7 +56,7 @@ CT_EndStep } -if [ "${CT_GMP_MPFR_TARGET}" = "y" ]; then +if [ "${CT_COMP_LIBS_TARGET}" = "y" ]; then do_gmp_target() { mkdir -p "${CT_BUILD_DIR}/build-gmp-target" diff -r 7264ce426be4 -r 8dbd9e0dc1d9 scripts/build/companion_libs/mpc.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/build/companion_libs/mpc.sh Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,57 @@ +# This file adds the functions to build the MPC library +# Copyright 2009 Yann E. MORIN +# Licensed under the GPL v2. See COPYING in the root of this package + +do_mpc_get() { :; } +do_mpc_extract() { :; } +do_mpc() { :; } +do_mpc_target() { :; } + +# Overide functions depending on configuration +if [ "${CT_PPL_CLOOG_MPC}" = "y" ]; then + +# Download MPC +do_mpc_get() { + CT_GetFile "mpc-${CT_MPC_VERSION}" .tar.gz \ + http://www.multiprecision.org/mpc/download +} + +# Extract MPC +do_mpc_extract() { + CT_Extract "mpc-${CT_MPC_VERSION}" + CT_Patch "mpc-${CT_MPC_VERSION}" +} + +do_mpc() { + mkdir -p "${CT_BUILD_DIR}/build-mpc" + cd "${CT_BUILD_DIR}/build-mpc" + + CT_DoStep INFO "Installing MPC" + + CT_DoLog EXTRA "Configuring MPC" + CFLAGS="${CT_CFLAGS_FOR_HOST}" \ + CT_DoExecLog ALL \ + "${CT_SRC_DIR}/mpc-${CT_MPC_VERSION}/configure" \ + --build=${CT_BUILD} \ + --host=${CT_HOST} \ + --prefix="${CT_PREFIX_DIR}" \ + --with-gmp="${CT_PREFIX_DIR}" \ + --with-mpfr="${CT_PREFIX_DIR}" \ + --enable-shared \ + --disable-static \ + + CT_DoLog EXTRA "Building MPC" + CT_DoExecLog ALL make ${PARALLELMFLAGS} + + if [ "${CT_COMP_LIBS_CHECK}" = "y" ]; then + CT_DoLog EXTRA "Checking MPC" + CT_DoExecLog ALL make ${PARALLELMFLAGS} -s check + fi + + CT_DoLog EXTRA "Installing MPC" + CT_DoExecLog ALL make install + + CT_EndStep +} + +fi # CT_PPL_CLOOG_MPC diff -r 7264ce426be4 -r 8dbd9e0dc1d9 scripts/build/companion_libs/mpfr.sh --- a/scripts/build/companion_libs/mpfr.sh Wed Jun 17 10:46:28 2009 +0200 +++ b/scripts/build/companion_libs/mpfr.sh Wed Jun 17 12:32:01 2009 +0200 @@ -77,14 +77,14 @@ --host=${CT_HOST} \ --prefix="${CT_PREFIX_DIR}" \ ${mpfr_opt} \ - --disable-shared \ - --enable-static \ + --enable-shared \ + --disable-static \ --with-gmp="${CT_PREFIX_DIR}" CT_DoLog EXTRA "Building MPFR" CT_DoExecLog ALL make ${PARALLELMFLAGS} - if [ "${CT_MPFR_CHECK}" = "y" ]; then + if [ "${CT_COMP_LIBS_CHECK}" = "y" ]; then CT_DoLog EXTRA "Checking MPFR" CT_DoExecLog ALL make ${PARALLELMFLAGS} -s check fi @@ -95,7 +95,7 @@ CT_EndStep } -if [ "${CT_GMP_MPFR_TARGET}" = "y" ]; then +if [ "${CT_COMP_LIBS_TARGET}" = "y" ]; then do_mpfr_target() { mkdir -p "${CT_BUILD_DIR}/build-mpfr-target" diff -r 7264ce426be4 -r 8dbd9e0dc1d9 scripts/build/companion_libs/ppl.sh --- a/scripts/build/companion_libs/ppl.sh Wed Jun 17 10:46:28 2009 +0200 +++ b/scripts/build/companion_libs/ppl.sh Wed Jun 17 12:32:01 2009 +0200 @@ -8,13 +8,14 @@ do_ppl_target() { :; } # Overide functions depending on configuration -if [ "${CT_PPL_CLOOG}" = "y" ]; then +if [ "${CT_PPL_CLOOG_MPC}" = "y" ]; then # Download PPL do_ppl_get() { CT_GetFile "ppl-${CT_PPL_VERSION}" \ http://www.cs.unipr.it/ppl/Download/ftp/releases/${CT_PPL_VERSION} \ - ftp://ftp.cs.unipr.it/pub/ppl/releases/${CT_PPL_VERSION} + ftp://ftp.cs.unipr.it/pub/ppl/releases/${CT_PPL_VERSION} \ + ftp://gcc.gnu.org/pub/gcc/infrastructure } # Extract PPL @@ -31,6 +32,7 @@ CT_DoLog EXTRA "Configuring PPL" CFLAGS="${CT_CFLAGS_FOR_HOST}" \ + CXXFLAGS="${CT_CFLAGS_FOR_HOST}" \ CT_DoExecLog ALL \ "${CT_SRC_DIR}/ppl-${CT_PPL_VERSION}/configure" \ --build=${CT_BUILD} \ @@ -38,8 +40,8 @@ --prefix="${CT_PREFIX_DIR}" \ --with-libgmp-prefix="${CT_PREFIX_DIR}" \ --with-libgmpxx-prefix="${CT_PREFIX_DIR}" \ - --disable-shared \ - --enable-static \ + --enable-shared \ + --disable-static \ --disable-debugging \ --disable-assertions \ --disable-ppl_lcdd \ @@ -52,7 +54,7 @@ CT_DoLog EXTRA "Building PPL" CT_DoExecLog ALL make ${PARALLELMFLAGS} - if [ "${CT_PPL_CHECK}" = "y" ]; then + if [ "${CT_COMP_LIBS_CHECK}" = "y" ]; then CT_DoLog EXTRA "Checking PPL" CT_DoExecLog ALL make ${PARALLELMFLAGS} -s check fi @@ -60,7 +62,10 @@ CT_DoLog EXTRA "Installing PPL" CT_DoExecLog ALL make install + # Remove spuriously installed file + CT_DoExecLog ALL rm -f "${CT_PREFIX_DIR}/bin/ppl-config" + CT_EndStep } -fi # CT_PPL_CLOOG +fi # CT_PPL_CLOOG_MPC diff -r 7264ce426be4 -r 8dbd9e0dc1d9 scripts/build/internals.sh --- a/scripts/build/internals.sh Wed Jun 17 10:46:28 2009 +0200 +++ b/scripts/build/internals.sh Wed Jun 17 12:32:01 2009 +0200 @@ -4,6 +4,8 @@ # un-wanted files, to add tuple aliases, and to add the final # crosstool-NG-provided files. do_finish() { + local _t + CT_DoStep INFO "Cleaning-up the toolchain's directory" CT_DoLog EXTRA "Removing access to the build system tools" @@ -39,6 +41,33 @@ done CT_Popd + # If using the companion libraries, we need a wrapper + # that will set LD_LIBRARY_PATH approriately + if [ "${CT_GMP_MPFR}" = "y" \ + -o "${CT_PPL_CLOOG_MPC}" = "y" ]; then + CT_DoLog EXTRA "Installing toolchain wrappers" + CT_Pushd "${CT_PREFIX_DIR}/bin" + + # Copy the wrapper + CT_DoExecLog DEBUG install -m 0755 "${CT_LIB_DIR}/scripts/wrapper.in" \ + ".${CT_TARGET}-wrapper" + + # Replace every tools with the wrapper + # Do it unconditionally, even for those tools that happen to be shell + # scripts, we don't know if they would in the end spawn a binary... + # Just skip symlinks + for _t in "${CT_TARGET}-"*; do + if [ "$( LANG=C stat -c '%F' "${_t}" )" != "symbolic link" ]; then + CT_DoExecLog ALL mv "${t}" ".${_t}" + CT_DoExecLog ALL ln ".${CT_TARGET}-wrapper" "${_t}" + fi + done + + # Get rid of the wrapper, we're using hardlinks + CT_DoExecLog DEBUG rm -f ".${CT_TARGET}-wrapper" + CT_Popd + fi + # Remove the generated documentation files if [ "${CT_REMOVE_DOCS}" = "y" ]; then CT_DoLog EXTRA "Removing installed documentation" diff -r 7264ce426be4 -r 8dbd9e0dc1d9 scripts/build/libc/glibc.sh --- a/scripts/build/libc/glibc.sh Wed Jun 17 10:46:28 2009 +0200 +++ b/scripts/build/libc/glibc.sh Wed Jun 17 12:32:01 2009 +0200 @@ -172,6 +172,7 @@ CT_DoExecLog ALL \ make CFLAGS="-O -DBOOTSTRAP_GCC" \ OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \ + PARALLELMFLAGS="${PARALLELMFLAGS}" \ sysdeps/gnu/errlist.c mkdir -p stdio-common @@ -189,6 +190,7 @@ CFLAGS="-O -DBOOTSTRAP_GCC" \ ${LIBC_SYSROOT_ARG} \ OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \ + PARALLELMFLAGS="${PARALLELMFLAGS}" \ install-headers # Two headers -- stubs.h and features.h -- aren't installed by install-headers, @@ -331,11 +333,12 @@ ${extra_config} \ ${CT_LIBC_GLIBC_EXTRA_CONFIG} - #TODO: should check whether slibdir has been set in configparms to */lib64 # and copy the startfiles into the appropriate libdir. CT_DoLog EXTRA "Building C library start files" - CT_DoExecLog ALL make OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" csu/subdir_lib + CT_DoExecLog ALL make OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \ + PARALLELMFLAGS="${PARALLELMFLAGS}" \ + csu/subdir_lib CT_DoLog EXTRA "Installing C library start files" if [ "${CT_USE_SYSROOT}" = "y" ]; then @@ -499,18 +502,19 @@ # then you need to set the KERNELCONFIG variable to point to a .config file for this arch. # The following architectures are known to need kernel .config: alpha, arm, ia64, s390, sh, sparc # Note: LD and RANLIB needed by glibc-2.1.3's c_stub directory, at least on macosx - # No need for PARALLELMFLAGS here, Makefile already reads this environment variable CT_DoLog EXTRA "Building C library" CT_DoExecLog ALL make LD=${CT_TARGET}-ld \ - RANLIB=${CT_TARGET}-ranlib \ - OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \ - ASFLAGS="${GLIBC_INITIAL_BUILD_ASFLAGS}" \ - ${GLIBC_INITIAL_BUILD_RULE} + RANLIB=${CT_TARGET}-ranlib \ + OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \ + ASFLAGS="${GLIBC_INITIAL_BUILD_ASFLAGS}" \ + PARALLELMFLAGS="${PARALLELMFLAGS}" \ + ${GLIBC_INITIAL_BUILD_RULE} CT_DoLog EXTRA "Installing C library" CT_DoExecLog ALL make install_root="${CT_SYSROOT_DIR}" \ ${LIBC_SYSROOT_ARG} \ OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \ + PARALLELMFLAGS="${PARALLELMFLAGS}" \ ${GLIBC_INITIAL_INSTALL_RULE} # This doesn't seem to work when building a crosscompiler, @@ -553,7 +557,11 @@ cd "${CT_BUILD_DIR}/build-libc" CT_DoLog EXTRA "Re-building C library" - CT_DoExecLog ALL make LD=${CT_TARGET}-ld RANLIB=${CT_TARGET}-ranlib + CT_DoExecLog ALL make LD=${CT_TARGET}-ld \ + RANLIB=${CT_TARGET}-ranlib \ + OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \ + ASFLAGS="${GLIBC_INITIAL_BUILD_ASFLAGS}" \ + PARALLELMFLAGS="${PARALLELMFLAGS}" CT_DoLog EXTRA "Installing missing C library components" # note: should do full install and then fix linker scripts, but this is faster @@ -561,6 +569,7 @@ CT_DoExecLog ALL make install_root="${CT_SYSROOT_DIR}" \ ${LIBC_SYSROOT_ARG} \ OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \ + PARALLELMFLAGS="${PARALLELMFLAGS}" \ install-${t} done diff -r 7264ce426be4 -r 8dbd9e0dc1d9 scripts/crosstool-NG.sh.in --- a/scripts/crosstool-NG.sh.in Wed Jun 17 10:46:28 2009 +0200 +++ b/scripts/crosstool-NG.sh.in Wed Jun 17 12:32:01 2009 +0200 @@ -91,6 +91,8 @@ . "${CT_LIB_DIR}/scripts/build/companion_libs/gmp.sh" . "${CT_LIB_DIR}/scripts/build/companion_libs/mpfr.sh" . "${CT_LIB_DIR}/scripts/build/companion_libs/ppl.sh" +. "${CT_LIB_DIR}/scripts/build/companion_libs/cloog.sh" +. "${CT_LIB_DIR}/scripts/build/companion_libs/mpc.sh" . "${CT_LIB_DIR}/scripts/build/binutils/binutils.sh" . "${CT_LIB_DIR}/scripts/build/binutils/elf2flt.sh" . "${CT_LIB_DIR}/scripts/build/libc/${CT_LIBC}.sh" @@ -125,6 +127,10 @@ CT_CC_CORE_STATIC_PREFIX_DIR="${CT_BUILD_DIR}/${CT_CC}-core-static" CT_CC_CORE_SHARED_PREFIX_DIR="${CT_BUILD_DIR}/${CT_CC}-core-shared" +# Set LD_LIBRARY_PATH to point to prefix/lib so we can find our own +# libraries; add as first path, so we get hit first by the dynamic linker +CT_SetLibPath "${CT_PREFIX_DIR}/lib" first + # We must ensure that we can restart if asked for! if [ -n "${CT_RESTART}" -a ! -d "${CT_STATE_DIR}" ]; then CT_DoLog ERROR "You asked to restart a non-restartable build" @@ -447,6 +453,8 @@ do_gmp_get do_mpfr_get do_ppl_get + do_cloog_get + do_mpc_get do_binutils_get do_cc_get do_libc_get @@ -464,6 +472,8 @@ do_gmp_extract do_mpfr_extract do_ppl_extract + do_cloog_extract + do_mpc_extract do_binutils_extract do_cc_extract do_libc_extract diff -r 7264ce426be4 -r 8dbd9e0dc1d9 scripts/functions --- a/scripts/functions Wed Jun 17 10:46:28 2009 +0200 +++ b/scripts/functions Wed Jun 17 12:32:01 2009 +0200 @@ -265,6 +265,36 @@ yes "$1" || true } +# Add the specified directory to LD_LIBRARY_PATH, and export it +# If the specified patch is already present, just export +# $1: path to add +# $2: add as 'first' or 'last' path, 'first' is assumed if $2 is empty +# Usage CT_SetLibPath /some/where/lib [first|last] +CT_SetLibPath() { + local path="$1" + local pos="$2" + + case ":${LD_LIBRARY_PATH}:" in + *:"${path}":*) ;; + *) case "${pos}" in + last) + CT_DoLog DEBUG "Adding '${path}' at end of LD_LIBRARY_PATH" + LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}${path}" + ;; + first|"") + CT_DoLog DEBUG "Adding '${path}' at start of LD_LIBRARY_PATH" + LD_LIBRARY_PATH="${path}${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}" + ;; + *) + CT_Abort "Incorrect position '${pos}' to add '${path}' to LD_LIBRARY_PATH" + ;; + esac + ;; + esac + CT_DoLog DEBUG "==> LD_LIBRARY_PATH='${LD_LIBRARY_PATH}'" + export LD_LIBRARY_PATH +} + # Get the file name extension of a component # Usage: CT_GetFileExtension [extension] # If found, echoes the extension to stdout diff -r 7264ce426be4 -r 8dbd9e0dc1d9 scripts/wrapper.in --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/wrapper.in Wed Jun 17 12:32:01 2009 +0200 @@ -0,0 +1,14 @@ +#!/bin/sh + +dirname="$(dirname "${0}")" +basename="$(basename "${0}")" + +ld_lib_path="$(dirname "${dirname}")/lib" + +case ":${LD_LIBRARY_PATH}:" in + *":${ld_lib_path}:"*) ;; + *) LD_LIBRARY_PATH="${ld_lib_path}${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}";; +esac + +export LD_LIBRARY_PATH +exec "${dirname}/.${basename}" "$@" diff -r 7264ce426be4 -r 8dbd9e0dc1d9 steps.mk --- a/steps.mk Wed Jun 17 10:46:28 2009 +0200 +++ b/steps.mk Wed Jun 17 12:32:01 2009 +0200 @@ -21,6 +21,8 @@ gmp \ mpfr \ ppl \ + cloog \ + mpc \ binutils \ elf2flt \ cc_core_pass_1 \