diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2009-04-23 23:33:46 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2009-04-23 23:33:46 +0000 |
commit | 74bfc07aadffa5d14a592682eea7650bbe0dcd19 (patch) | |
tree | ec2a58290642ae712eb9f6bc6f84cfdc094338ee /misc | |
parent | dc62bf6a58f4f37c6d6573b5fbfb5591d78bb1ff (diff) | |
download | px4-nuttx-74bfc07aadffa5d14a592682eea7650bbe0dcd19.tar.gz px4-nuttx-74bfc07aadffa5d14a592682eea7650bbe0dcd19.tar.bz2 px4-nuttx-74bfc07aadffa5d14a592682eea7650bbe0dcd19.zip |
Add GCC 4.3.3
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@1724 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'misc')
10 files changed, 407 insertions, 0 deletions
diff --git a/misc/buildroot/toolchain/gcc/4.3.3/300-libmudflap-susv3-legacy.patch b/misc/buildroot/toolchain/gcc/4.3.3/300-libmudflap-susv3-legacy.patch new file mode 100644 index 000000000..374b1f865 --- /dev/null +++ b/misc/buildroot/toolchain/gcc/4.3.3/300-libmudflap-susv3-legacy.patch @@ -0,0 +1,49 @@ +Index: gcc-4.2/libmudflap/mf-hooks2.c +=================================================================== +--- gcc-4.2/libmudflap/mf-hooks2.c (revision 119834) ++++ gcc-4.2/libmudflap/mf-hooks2.c (working copy) +@@ -427,7 +427,7 @@ + { + TRACE ("%s\n", __PRETTY_FUNCTION__); + MF_VALIDATE_EXTENT(s, n, __MF_CHECK_WRITE, "bzero region"); +- bzero (s, n); ++ memset (s, 0, n); + } + + +@@ -437,7 +437,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); + } + + +@@ -447,7 +447,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); + } + + +@@ -456,7 +456,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); + } + + +@@ -465,7 +465,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 --git a/misc/buildroot/toolchain/gcc/4.3.3/310-arm-softfloat-libgcc.patch b/misc/buildroot/toolchain/gcc/4.3.3/310-arm-softfloat-libgcc.patch new file mode 100644 index 000000000..1639c39a8 --- /dev/null +++ b/misc/buildroot/toolchain/gcc/4.3.3/310-arm-softfloat-libgcc.patch @@ -0,0 +1,29 @@ +Index: gcc-4.3.0/gcc/config/arm/t-linux +=================================================================== +--- gcc-4.3.0/gcc/config/arm/t-linux (revision 129896) ++++ gcc-4.3.0/gcc/config/arm/t-linux (working copy) +@@ -3,7 +3,10 @@ + TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fPIC + + LIB1ASMSRC = arm/lib1funcs.asm +-LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx ++LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \ ++ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \ ++ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \ ++ _fixsfsi _fixunssfsi _floatdidf _floatundidf _floatdisf _floatundisf + + # MULTILIB_OPTIONS = mhard-float/msoft-float + # MULTILIB_DIRNAMES = hard-float soft-float +Index: gcc-4.3.0/gcc/config/arm/linux-elf.h +=================================================================== +--- gcc-4.3.0/gcc/config/arm/linux-elf.h (revision 129896) ++++ gcc-4.3.0/gcc/config/arm/linux-elf.h (working copy) +@@ -48,7 +62,7 @@ + %{shared:-lc} \ + %{!shared:%{profile:-lc_p}%{!profile:-lc}}" + +-#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc" ++#define LIBGCC_SPEC "-lgcc" + + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" + diff --git a/misc/buildroot/toolchain/gcc/4.3.3/500-backport-fix-for-bug-39076.patch b/misc/buildroot/toolchain/gcc/4.3.3/500-backport-fix-for-bug-39076.patch new file mode 100644 index 000000000..f76e8ae0e --- /dev/null +++ b/misc/buildroot/toolchain/gcc/4.3.3/500-backport-fix-for-bug-39076.patch @@ -0,0 +1,11 @@ +--- gcc-4.3.2.orig/gcc/regrename.c 2007-09-09 04:23:47.000000000 +0200 ++++ gcc-4.3.2/gcc/regrename.c 2009-02-05 10:23:59.000000000 +0100 +@@ -813,7 +813,7 @@ + OP_IN, 0); + + for (i = 0; i < recog_data.n_dups; i++) +- *recog_data.dup_loc[i] = copy_rtx (old_dups[i]); ++ *recog_data.dup_loc[i] = old_dups[i]; + for (i = 0; i < n_ops; i++) + *recog_data.operand_loc[i] = old_operands[i]; + if (recog_data.n_dups) diff --git a/misc/buildroot/toolchain/gcc/4.3.3/510-backport-fix-for-bug-32044.patch b/misc/buildroot/toolchain/gcc/4.3.3/510-backport-fix-for-bug-32044.patch new file mode 100644 index 000000000..9337bf9ee --- /dev/null +++ b/misc/buildroot/toolchain/gcc/4.3.3/510-backport-fix-for-bug-32044.patch @@ -0,0 +1,188 @@ +Index: gcc-4.3.2/gcc/tree-scalar-evolution.c +=================================================================== +--- gcc-4.3.2.orig/gcc/tree-scalar-evolution.c 2009-01-28 10:14:37.000000000 +0100 ++++ gcc-4.3.2/gcc/tree-scalar-evolution.c 2009-01-28 10:17:50.000000000 +0100 +@@ -2716,6 +2716,50 @@ + scalar_evolution_info = NULL; + } + ++/* Returns true if the expression EXPR is considered to be too expensive ++ for scev_const_prop. */ ++ ++bool ++expression_expensive_p (tree expr) ++{ ++ enum tree_code code; ++ ++ if (is_gimple_val (expr)) ++ return false; ++ ++ code = TREE_CODE (expr); ++ if (code == TRUNC_DIV_EXPR ++ || code == CEIL_DIV_EXPR ++ || code == FLOOR_DIV_EXPR ++ || code == ROUND_DIV_EXPR ++ || code == TRUNC_MOD_EXPR ++ || code == CEIL_MOD_EXPR ++ || code == FLOOR_MOD_EXPR ++ || code == ROUND_MOD_EXPR ++ || code == EXACT_DIV_EXPR) ++ { ++ /* Division by power of two is usually cheap, so we allow it. ++ Forbid anything else. */ ++ if (!integer_pow2p (TREE_OPERAND (expr, 1))) ++ return true; ++ } ++ ++ switch (TREE_CODE_CLASS (code)) ++ { ++ case tcc_binary: ++ case tcc_comparison: ++ if (expression_expensive_p (TREE_OPERAND (expr, 1))) ++ return true; ++ ++ /* Fallthru. */ ++ case tcc_unary: ++ return expression_expensive_p (TREE_OPERAND (expr, 0)); ++ ++ default: ++ return true; ++ } ++} ++ + /* Replace ssa names for that scev can prove they are constant by the + appropriate constants. Also perform final value replacement in loops, + in case the replacement expressions are cheap. +@@ -2802,12 +2846,6 @@ + continue; + + niter = number_of_latch_executions (loop); +- /* We used to check here whether the computation of NITER is expensive, +- and avoided final value elimination if that is the case. The problem +- is that it is hard to evaluate whether the expression is too +- expensive, as we do not know what optimization opportunities the +- the elimination of the final value may reveal. Therefore, we now +- eliminate the final values of induction variables unconditionally. */ + if (niter == chrec_dont_know) + continue; + +@@ -2838,7 +2876,15 @@ + /* Moving the computation from the loop may prolong life range + of some ssa names, which may cause problems if they appear + on abnormal edges. */ +- || contains_abnormal_ssa_name_p (def)) ++ || contains_abnormal_ssa_name_p (def) ++ /* Do not emit expensive expressions. The rationale is that ++ when someone writes a code like ++ ++ while (n > 45) n -= 45; ++ ++ he probably knows that n is not large, and does not want it ++ to be turned into n %= 45. */ ++ || expression_expensive_p (def)) + continue; + + /* Eliminate the PHI node and replace it by a computation outside +Index: gcc-4.3.2/gcc/tree-scalar-evolution.h +=================================================================== +--- gcc-4.3.2.orig/gcc/tree-scalar-evolution.h 2009-01-28 10:22:47.000000000 +0100 ++++ gcc-4.3.2/gcc/tree-scalar-evolution.h 2009-01-28 10:23:10.000000000 +0100 +@@ -35,6 +35,7 @@ + extern void scev_analysis (void); + unsigned int scev_const_prop (void); + ++bool expression_expensive_p (tree); + extern bool simple_iv (struct loop *, tree, tree, affine_iv *, bool); + + /* Returns the loop of the polynomial chrec CHREC. */ +Index: gcc-4.3.2/gcc/testsuite/gcc.dg/pr34027-1.c +=================================================================== +--- gcc-4.3.2.orig/gcc/testsuite/gcc.dg/pr34027-1.c 2009-01-28 10:24:09.000000000 +0100 ++++ gcc-4.3.2/gcc/testsuite/gcc.dg/pr34027-1.c 2009-01-28 10:24:43.000000000 +0100 +@@ -8,5 +8,9 @@ + return ns; + } + +-/* { dg-final { scan-tree-dump "ns % 10000" "optimized" } } */ ++/* This test was originally introduced to test that we transform ++ to ns % 10000. See the discussion of PR 32044 why we do not do ++ that anymore. */ ++/* { dg-final { scan-tree-dump-times "%" 0 "optimized" } } */ ++/* { dg-final { scan-tree-dump-times "/" 0 "optimized" } } */ + /* { dg-final { cleanup-tree-dump "optimized" } } */ +Index: gcc-4.3.2/gcc/testsuite/gcc.dg/tree-ssa/pr32044.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gcc-4.3.2/gcc/testsuite/gcc.dg/tree-ssa/pr32044.c 2009-01-28 10:25:50.000000000 +0100 +@@ -0,0 +1,55 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fdump-tree-empty -fdump-tree-final_cleanup" } */ ++ ++int foo (int n) ++{ ++ while (n >= 45) ++ n -= 45; ++ ++ return n; ++} ++ ++int bar (int n) ++{ ++ while (n >= 64) ++ n -= 64; ++ ++ return n; ++} ++ ++int bla (int n) ++{ ++ int i = 0; ++ ++ while (n >= 45) ++ { ++ i++; ++ n -= 45; ++ } ++ ++ return i; ++} ++ ++int baz (int n) ++{ ++ int i = 0; ++ ++ while (n >= 64) ++ { ++ i++; ++ n -= 64; ++ } ++ ++ return i; ++} ++ ++/* The loops computing division/modulo by 64 should be eliminated. */ ++/* { dg-final { scan-tree-dump-times "Removing empty loop" 2 "empty" } } */ ++ ++/* There should be no division/modulo in the final dump (division and modulo ++ by 64 are done using bit operations). */ ++/* { dg-final { scan-tree-dump-times "/" 0 "final_cleanup" } } */ ++/* { dg-final { scan-tree-dump-times "%" 0 "final_cleanup" } } */ ++ ++/* { dg-final { cleanup-tree-dump "empty" } } */ ++/* { dg-final { cleanup-tree-dump "final_cleanup" } } */ +Index: gcc-4.3.2/gcc/tree-ssa-loop-ivopts.c +=================================================================== +--- gcc-4.3.2.orig/gcc/tree-ssa-loop-ivopts.c 2009-01-28 10:26:04.000000000 +0100 ++++ gcc-4.3.2/gcc/tree-ssa-loop-ivopts.c 2009-01-28 10:27:09.000000000 +0100 +@@ -3778,7 +3778,12 @@ + return false; + + cand_value_at (loop, cand, use->stmt, nit, &bnd); ++ + *bound = aff_combination_to_tree (&bnd); ++ /* It is unlikely that computing the number of iterations using division ++ would be more profitable than keeping the original induction variable. */ ++ if (expression_expensive_p (*bound)) ++ return false; + return true; + } diff --git a/misc/buildroot/toolchain/gcc/4.3.3/600-arm_insn-opinit-RTX_CODE-fixup.patch b/misc/buildroot/toolchain/gcc/4.3.3/600-arm_insn-opinit-RTX_CODE-fixup.patch new file mode 100644 index 000000000..69f0c372d --- /dev/null +++ b/misc/buildroot/toolchain/gcc/4.3.3/600-arm_insn-opinit-RTX_CODE-fixup.patch @@ -0,0 +1,41 @@ +gcc/ChangeLog +2007-11-27 Bernhard Fischer <> + + * config/arm/arm-protos.h (arm_vector_mode_supported_p, + arm_hard_regno_mode_ok, const_ok_for_arm): Do not hide non-rtx related + function prototypes in RTX_CODE. + * genopinit.c: Include tm_p.h. + +Index: gcc-4.3.0/gcc/config/arm/arm-protos.h +=================================================================== +--- gcc-4.3.0/gcc/config/arm/arm-protos.h (revision 130463) ++++ gcc-4.3.0/gcc/config/arm/arm-protos.h (working copy) +@@ -40,15 +40,14 @@ + unsigned int); + extern unsigned int arm_dbx_register_number (unsigned int); + extern void arm_output_fn_unwind (FILE *, bool); +- + + #ifdef TREE_CODE + extern int arm_return_in_memory (const_tree); + #endif +-#ifdef RTX_CODE + extern bool arm_vector_mode_supported_p (enum machine_mode); + extern int arm_hard_regno_mode_ok (unsigned int, enum machine_mode); + extern int const_ok_for_arm (HOST_WIDE_INT); ++#ifdef RTX_CODE + extern int arm_split_constant (RTX_CODE, enum machine_mode, rtx, + HOST_WIDE_INT, rtx, rtx, int); + extern RTX_CODE arm_canonicalize_comparison (RTX_CODE, enum machine_mode, +Index: gcc-4.3.0/gcc/genopinit.c +=================================================================== +--- gcc-4.3.0/gcc/genopinit.c (revision 130463) ++++ gcc-4.3.0/gcc/genopinit.c (working copy) +@@ -486,6 +486,7 @@ + printf ("#include \"expr.h\"\n"); + printf ("#include \"optabs.h\"\n"); + printf ("#include \"reload.h\"\n\n"); ++ printf ("#include \"tm_p.h\"\n\n"); + + printf ("void\ninit_all_optabs (void)\n{\n"); + diff --git a/misc/buildroot/toolchain/gcc/4.3.3/610-gcc-4.3.0-fix-header.00.patch b/misc/buildroot/toolchain/gcc/4.3.3/610-gcc-4.3.0-fix-header.00.patch new file mode 100644 index 000000000..7fe59d2dd --- /dev/null +++ b/misc/buildroot/toolchain/gcc/4.3.3/610-gcc-4.3.0-fix-header.00.patch @@ -0,0 +1,15 @@ +\\\\ +\\ gcc PR33200 +Index: gcc-4.3.0/gcc/config.gcc +=================================================================== +--- gcc-4.3.0/gcc/config.gcc (revision 131628) ++++ gcc-4.3.0/gcc/config.gcc (working copy) +@@ -2302,7 +2305,7 @@ sh-*-symbianelf* | sh[12346l]*-*-symbian + if test x${enable_incomplete_targets} = xyes ; then + tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1 SUPPORT_SH5_32MEDIA=1 SUPPORT_SH5_32MEDIA_NOFPU=1 SUPPORT_SH5_64MEDIA=1 SUPPORT_SH5_64MEDIA_NOFPU=1" + fi +- use_fixproto=yes ++ # XXX: why? use_fixproto=yes + ;; + sh-*-rtemscoff*) + tmake_file="sh/t-sh t-rtems sh/t-rtems" diff --git a/misc/buildroot/toolchain/gcc/4.3.3/620-gcc-4.3.2-armeabi-aapcs-linux.patch b/misc/buildroot/toolchain/gcc/4.3.3/620-gcc-4.3.2-armeabi-aapcs-linux.patch new file mode 100644 index 000000000..f4b1c9c06 --- /dev/null +++ b/misc/buildroot/toolchain/gcc/4.3.3/620-gcc-4.3.2-armeabi-aapcs-linux.patch @@ -0,0 +1,18 @@ +\\\\ followup of PR34205; trying to use aapcs-linux +\\ gcc/ChangeLog +\\ +\\ 2008-09-18 Bernhard Reutner-Fischer <aldot@> +\\ +\\ * config.gcc (arm*-*-*): Add aapcs-linux to supported ABIs. +\\ +--- gcc-4.3.2.orig/gcc/config.gcc 2008-09-18 20:33:55.000000000 +0200 ++++ gcc-4.3.2/gcc/config.gcc 2008-09-18 21:38:52.000000000 +0200 +@@ -2921,7 +2921,7 @@ + + case "$with_abi" in + "" \ +- | apcs-gnu | atpcs | aapcs | iwmmxt ) ++ | apcs-gnu | atpcs | aapcs | iwmmxt | aapcs-linux ) + #OK + ;; + *) diff --git a/misc/buildroot/toolchain/gcc/4.3.3/630-gcc-4.3.0-cris-pragma-pack-warning-remove.patch b/misc/buildroot/toolchain/gcc/4.3.3/630-gcc-4.3.0-cris-pragma-pack-warning-remove.patch new file mode 100644 index 000000000..dcf01f24b --- /dev/null +++ b/misc/buildroot/toolchain/gcc/4.3.3/630-gcc-4.3.0-cris-pragma-pack-warning-remove.patch @@ -0,0 +1,13 @@ +diff -urN gcc-4.3.1.orig/gcc/config/cris/cris.h gcc-4.3.1/gcc/config/cris/cris.h +--- gcc-4.3.1.orig/gcc/config/cris/cris.h 2008-02-22 12:11:01.000000000 +0100 ++++ gcc-4.3.1/gcc/config/cris/cris.h 2008-07-02 10:42:42.000000000 +0200 +@@ -1529,9 +1529,6 @@ + + #define NO_IMPLICIT_EXTERN_C + +-/* No specific purpose other than warningless compatibility. */ +-#define HANDLE_PRAGMA_PACK_PUSH_POP 1 +- + /* + * Local variables: + * eval: (c-set-style "gnu") diff --git a/misc/buildroot/toolchain/gcc/4.3.3/900-nuttx-nolibc.patch b/misc/buildroot/toolchain/gcc/4.3.3/900-nuttx-nolibc.patch new file mode 100755 index 000000000..4503ed619 --- /dev/null +++ b/misc/buildroot/toolchain/gcc/4.3.3/900-nuttx-nolibc.patch @@ -0,0 +1,30 @@ +At present, libstdc++ will not build. My understanding is that it needs to have +the NuttX libc characterized in crossconfig.m4. This is a first attempt to do that -- +unfortunately, it still does not work. + +diff -u gcc-4.2.4/libstdc++-v3/configure.orig gcc-4.2.4/libstdc++-v3/configure +--- gcc-4.2.4/libstdc++-v3/configure.orig 2009-01-05 17:52:11.000000000 -0600 ++++ gcc-4.2.4/libstdc++-v3/configure 2009-01-05 17:52:43.000000000 -0600 +@@ -108515,9 +108515,7 @@ + + ;; + *) +- { { echo "$as_me:$LINENO: error: No support for this host/target combination." >&5 +-echo "$as_me: error: No support for this host/target combination." >&2;} +- { (exit 1); exit 1; }; } ++ # Assume bare hardware + ;; + esac + +diff -u gcc-4.2.4/libstdc++-v3/crossconfig.m4.orig gcc-4.2.4/libstdc++-v3/crossconfig.m4 +--- gcc-4.2.4/libstdc++-v3/crossconfig.m4.orig 2009-01-05 17:51:07.000000000 -0600 ++++ gcc-4.2.4/libstdc++-v3/crossconfig.m4 2009-01-05 17:52:02.000000000 -0600 +@@ -412,7 +412,7 @@ + AC_DEFINE(HAVE_TANHL) + ;; + *) +- AC_MSG_ERROR([No support for this host/target combination.]) ++ # Assume bare hardware + ;; + esac + ]) diff --git a/misc/buildroot/toolchain/gcc/4.3.3/910-nuttx-nolibstdc.patch b/misc/buildroot/toolchain/gcc/4.3.3/910-nuttx-nolibstdc.patch new file mode 100644 index 000000000..1e25fd001 --- /dev/null +++ b/misc/buildroot/toolchain/gcc/4.3.3/910-nuttx-nolibstdc.patch @@ -0,0 +1,13 @@ +--- gcc-4.2.4/configure.orig 2009-04-18 18:07:18.250951700 -0400 ++++ gcc-4.2.4/configure 2009-04-18 18:20:20.369521100 -0400 +@@ -1649,6 +1649,10 @@ + ;; + esac + ++# If we are building against NuttX, then don't attempt to build libstdc++ ++# (should be conditioned on --with-nuttx) ++noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3" ++ + # If we aren't building newlib, then don't build libgloss, since libgloss + # depends upon some newlib header files. + case "${noconfigdirs}" in |