summaryrefslogtreecommitdiff
path: root/misc/buildroot/toolchain
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2009-04-23 23:33:46 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2009-04-23 23:33:46 +0000
commit74bfc07aadffa5d14a592682eea7650bbe0dcd19 (patch)
treeec2a58290642ae712eb9f6bc6f84cfdc094338ee /misc/buildroot/toolchain
parentdc62bf6a58f4f37c6d6573b5fbfb5591d78bb1ff (diff)
downloadnuttx-74bfc07aadffa5d14a592682eea7650bbe0dcd19.tar.gz
nuttx-74bfc07aadffa5d14a592682eea7650bbe0dcd19.tar.bz2
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/buildroot/toolchain')
-rw-r--r--misc/buildroot/toolchain/gcc/4.3.3/300-libmudflap-susv3-legacy.patch49
-rw-r--r--misc/buildroot/toolchain/gcc/4.3.3/310-arm-softfloat-libgcc.patch29
-rw-r--r--misc/buildroot/toolchain/gcc/4.3.3/500-backport-fix-for-bug-39076.patch11
-rw-r--r--misc/buildroot/toolchain/gcc/4.3.3/510-backport-fix-for-bug-32044.patch188
-rw-r--r--misc/buildroot/toolchain/gcc/4.3.3/600-arm_insn-opinit-RTX_CODE-fixup.patch41
-rw-r--r--misc/buildroot/toolchain/gcc/4.3.3/610-gcc-4.3.0-fix-header.00.patch15
-rw-r--r--misc/buildroot/toolchain/gcc/4.3.3/620-gcc-4.3.2-armeabi-aapcs-linux.patch18
-rw-r--r--misc/buildroot/toolchain/gcc/4.3.3/630-gcc-4.3.0-cris-pragma-pack-warning-remove.patch13
-rwxr-xr-xmisc/buildroot/toolchain/gcc/4.3.3/900-nuttx-nolibc.patch30
-rw-r--r--misc/buildroot/toolchain/gcc/4.3.3/910-nuttx-nolibstdc.patch13
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