summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES7
-rw-r--r--package/e2fsprogs/Config.in6
-rw-r--r--package/e2fsprogs/e2fsprogs.mk36
-rw-r--r--package/gzip/gzip-1.3.12-rename-futimens.patch48
-rw-r--r--package/gzip/gzip.mk1
-rw-r--r--package/sed/sed.mk2
-rw-r--r--toolchain/gcc/4.3.1/901-backport-fix-for-bug-32044.patch188
-rw-r--r--toolchain/gcc/4.3.1/995-short-enums.diff42
-rw-r--r--toolchain/gcc/4.3.4/100-uclibc-conf.patch (renamed from toolchain/gcc/4.3.1/100-uclibc-conf.patch)0
-rw-r--r--toolchain/gcc/4.3.4/104-gnuhurd-uclibc-conf.patch (renamed from toolchain/gcc/4.3.1/104-gnuhurd-uclibc-conf.patch)0
-rw-r--r--toolchain/gcc/4.3.4/301-missing-execinfo_h.patch (renamed from toolchain/gcc/4.3.1/301-missing-execinfo_h.patch)0
-rw-r--r--toolchain/gcc/4.3.4/302-c99-snprintf.patch (renamed from toolchain/gcc/4.3.1/302-c99-snprintf.patch)0
-rw-r--r--toolchain/gcc/4.3.4/305-libmudflap-susv3-legacy.patch (renamed from toolchain/gcc/4.3.1/305-libmudflap-susv3-legacy.patch)0
-rw-r--r--toolchain/gcc/4.3.4/810-arm-softfloat-libgcc.patch (renamed from toolchain/gcc/4.3.1/810-arm-softfloat-libgcc.patch)0
-rw-r--r--toolchain/gcc/4.3.4/993-arm_insn-opinit-RTX_CODE-fixup.patch (renamed from toolchain/gcc/4.3.1/993-arm_insn-opinit-RTX_CODE-fixup.patch)0
-rw-r--r--toolchain/gcc/4.3.4/998-gcc-4.3.0-fix-header.00.patch (renamed from toolchain/gcc/4.3.1/998-gcc-4.3.0-fix-header.00.patch)0
-rw-r--r--toolchain/gcc/4.3.4/999-4.3.2-armeabi-aapcs-linux.patch18
-rw-r--r--toolchain/gcc/4.3.4/999-4.3.3-arm-fix-for-bug-37436.patch86
-rw-r--r--toolchain/gcc/4.3.4/999-gcc-4.3.0-cris-pragma-pack-warning-remove.patch (renamed from toolchain/gcc/4.3.1/999-gcc-4.3.0-cris-pragma-pack-warning-remove.patch)0
-rw-r--r--toolchain/gcc/4.3.4/powerpc-link-with-math-lib.patch.conditional125
-rw-r--r--toolchain/gcc/Config.in11
21 files changed, 331 insertions, 239 deletions
diff --git a/CHANGES b/CHANGES
index 0c1f667b1..c375c71a5 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,10 @@
+2009.08, Not yet released:
+
+ Issues resolved (http://bugs.uclibc.org):
+
+ #525: sed broken with external toolchain
+ #537: Fix gzip build with recent glibc
+
2009.08-rc1, Released August 2nd, 2009:
Fixes all over the tree and new features.
diff --git a/package/e2fsprogs/Config.in b/package/e2fsprogs/Config.in
index d353fd9c8..74da6bd74 100644
--- a/package/e2fsprogs/Config.in
+++ b/package/e2fsprogs/Config.in
@@ -1,6 +1,12 @@
+config BR2_PACKAGE_LIBUUID
+ bool "libuuid"
+ help
+ The uuid library from the e2fsprogs suite
+
config BR2_PACKAGE_E2FSPROGS
bool "e2fsprogs"
depends on BR2_LARGEFILE
+ select BR2_PACKAGE_LIBUUID
help
The EXT2 file system utilities and libraries
diff --git a/package/e2fsprogs/e2fsprogs.mk b/package/e2fsprogs/e2fsprogs.mk
index 6400bf595..3931548bf 100644
--- a/package/e2fsprogs/e2fsprogs.mk
+++ b/package/e2fsprogs/e2fsprogs.mk
@@ -10,6 +10,9 @@ E2FSPROGS_DIR=$(BUILD_DIR)/e2fsprogs-$(E2FSPROGS_VERSION)
E2FSPROGS_CAT:=$(ZCAT)
E2FSPROGS_BINARY:=misc/mke2fs
E2FSPROGS_TARGET_BINARY:=sbin/mke2fs
+LIBUUID_DIR=$(E2FSPROGS_DIR)/lib/uuid/
+LIBUUID_TARGET_DIR:=usr/lib/
+LIBUUID_TARGET_BINARY:=libuuid.so
E2FSPROGS_MISC_STRIP:= \
badblocks blkid chattr dumpe2fs filefrag fsck logsave \
@@ -69,11 +72,17 @@ $(E2FSPROGS_DIR)/$(E2FSPROGS_BINARY): $(E2FSPROGS_DIR)/.configured
#$(STRIPCMD) $(E2FSPROGS_DIR)/lib/lib*.so.*.*
touch -c $@
+$(E2FSPROGS_DIR)/lib/$(LIBUUID_TARGET_BINARY): $(E2FSPROGS_DIR)/.configured
+ $(MAKE1) -C $(E2FSPROGS_DIR)/lib/uuid
+ touch -c $@
+
$(STAGING_DIR)/$(E2FSPROGS_TARGET_BINARY): $(E2FSPROGS_DIR)/$(E2FSPROGS_BINARY)
$(MAKE1) PATH=$(TARGET_PATH) DESTDIR=$(STAGING_DIR) LDCONFIG=true \
-C $(E2FSPROGS_DIR) install
+
+$(STAGING_DIR)/lib/$(LIBUUID_TARGET_BINARY): $(E2FSPROGS_DIR)/lib/$(LIBUUID_TARGET_BINARY)
$(MAKE1) PATH=$(TARGET_PATH) DESTDIR=$(STAGING_DIR) LDCONFIG=true \
- -C $(E2FSPROGS_DIR)/lib/uuid install
+ -C $(LIBUUID_DIR) install
E2FSPROGS_RM$(BR2_PACKAGE_E2FSPROGS_BADBLOCKS) += ${TARGET_DIR}/sbin/badblocks
E2FSPROGS_RM$(BR2_PACKAGE_E2FSPROGS_BLKID) += ${TARGET_DIR}/sbin/blkid
@@ -125,7 +134,15 @@ endif
rm -rf $(TARGET_DIR)/usr/share/doc
touch -c $@
-e2fsprogs: uclibc $(TARGET_DIR)/$(E2FSPROGS_TARGET_BINARY)
+$(TARGET_DIR)/$(LIBUUID_TARGET_DIR)/$(LIBUUID_TARGET_BINARY): $(STAGING_DIR)/lib/$(LIBUUID_TARGET_BINARY)
+ $(MAKE1) PATH=$(TARGET_PATH) DESTDIR=$(STAGING_DIR) LDCONFIG=true \
+ -C $(LIBUUID_DIR) install
+ cp -a $(STAGING_DIR)/$(LIBUUID_TARGET_DIR)/$(LIBUUID_TARGET_BINARY)* \
+ $(TARGET_DIR)/$(LIBUUID_TARGET_DIR)/
+ touch -c $@
+
+libuuid: uclibc $(TARGET_DIR)/$(LIBUUID_TARGET_DIR)/$(LIBUUID_TARGET_BINARY)
+e2fsprogs: uclibc libuuid $(TARGET_DIR)/$(E2FSPROGS_TARGET_BINARY)
e2fsprogs-clean:
$(MAKE1) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(E2FSPROGS_DIR) uninstall
@@ -134,6 +151,17 @@ e2fsprogs-clean:
e2fsprogs-dirclean:
rm -rf $(E2FSPROGS_DIR)
+libuuid-clean:
+ -$(MAKE1) PATH=$(TARGET_PATH) DESTDIR=$(STAGING_DIR) LDCONFIG=true \
+ -C $(LIBUUID_DIR) uninstall
+ # make uninstall misses the includes
+ rm -rf $(STAGING_DIR)/usr/include/uuid
+ rm -f $(TARGET_DIR)/$(LIBUUID_TARGET_DIR)/$(LIBUUID_TARGET_BINARY)*
+ -$(MAKE1) -C $(LIBUUID_DIR) clean
+
+libuuid-source: e2fsprogs-source
+libuuid-dirclean: e2fsprogs-dirclean
+
#############################################################
#
# Toplevel Makefile options
@@ -142,3 +170,7 @@ e2fsprogs-dirclean:
ifeq ($(BR2_PACKAGE_E2FSPROGS),y)
TARGETS+=e2fsprogs
endif
+
+ifeq ($(BR2_PACKAGE_LIBUUID),y)
+TARGETS+=libuuid
+endif
diff --git a/package/gzip/gzip-1.3.12-rename-futimens.patch b/package/gzip/gzip-1.3.12-rename-futimens.patch
new file mode 100644
index 000000000..8315d7ca2
--- /dev/null
+++ b/package/gzip/gzip-1.3.12-rename-futimens.patch
@@ -0,0 +1,48 @@
+---
+ gzip.c | 2 +-
+ lib/utimens.c | 4 ++--
+ lib/utimens.h | 2 +-
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+Index: gzip-1.3.12/gzip.c
+===================================================================
+--- gzip-1.3.12.orig/gzip.c
++++ gzip-1.3.12/gzip.c
+@@ -1637,7 +1637,7 @@
+ }
+ }
+
+- if (futimens (ofd, ofname, timespec) != 0)
++ if (gz_futimens (ofd, ofname, timespec) != 0)
+ {
+ int e = errno;
+ WARN ((stderr, "%s: ", program_name));
+Index: gzip-1.3.12/lib/utimens.c
+===================================================================
+--- gzip-1.3.12.orig/lib/utimens.c
++++ gzip-1.3.12/lib/utimens.c
+@@ -75,7 +75,7 @@
+ Return 0 on success, -1 (setting errno) on failure. */
+
+ int
+-futimens (int fd ATTRIBUTE_UNUSED,
++gz_futimens (int fd ATTRIBUTE_UNUSED,
+ char const *file, struct timespec const timespec[2])
+ {
+ /* Some Linux-based NFS clients are buggy, and mishandle time stamps
+@@ -185,5 +185,5 @@
+ int
+ utimens (char const *file, struct timespec const timespec[2])
+ {
+- return futimens (-1, file, timespec);
++ return gz_futimens (-1, file, timespec);
+ }
+Index: gzip-1.3.12/lib/utimens.h
+===================================================================
+--- gzip-1.3.12.orig/lib/utimens.h
++++ gzip-1.3.12/lib/utimens.h
+@@ -1,3 +1,3 @@
+ #include <time.h>
+-int futimens (int, char const *, struct timespec const [2]);
++int gz_futimens (int, char const *, struct timespec const [2]);
+ int utimens (char const *, struct timespec const [2]);
diff --git a/package/gzip/gzip.mk b/package/gzip/gzip.mk
index beffe9d2e..84031613f 100644
--- a/package/gzip/gzip.mk
+++ b/package/gzip/gzip.mk
@@ -18,6 +18,7 @@ gzip-source: $(DL_DIR)/$(GZIP_SOURCE)
$(GZIP_DIR)/.unpacked: $(DL_DIR)/$(GZIP_SOURCE)
$(GZIP_CAT) $(DL_DIR)/$(GZIP_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+ toolchain/patch-kernel.sh $(GZIP_DIR) package/gzip gzip\*.patch
touch $(GZIP_DIR)/.unpacked
$(GZIP_DIR)/.configured: $(GZIP_DIR)/.unpacked
diff --git a/package/sed/sed.mk b/package/sed/sed.mk
index 9caefed49..07f4b32c6 100644
--- a/package/sed/sed.mk
+++ b/package/sed/sed.mk
@@ -135,7 +135,7 @@ $(SED_DIR2)/.configured: $(SED_DIR2)/.unpacked
touch $@
$(SED_DIR2)/$(SED_BINARY): $(SED_DIR2)/.configured
- $(MAKE) CC=$(TARGET_CC) -C $(SED_DIR2)
+ $(MAKE) -C $(SED_DIR2)
# This stuff is needed to work around GNU make deficiencies
sed-target_binary: $(SED_DIR2)/$(SED_BINARY)
diff --git a/toolchain/gcc/4.3.1/901-backport-fix-for-bug-32044.patch b/toolchain/gcc/4.3.1/901-backport-fix-for-bug-32044.patch
deleted file mode 100644
index 9337bf9ee..000000000
--- a/toolchain/gcc/4.3.1/901-backport-fix-for-bug-32044.patch
+++ /dev/null
@@ -1,188 +0,0 @@
-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/toolchain/gcc/4.3.1/995-short-enums.diff b/toolchain/gcc/4.3.1/995-short-enums.diff
deleted file mode 100644
index 03c470c9e..000000000
--- a/toolchain/gcc/4.3.1/995-short-enums.diff
+++ /dev/null
@@ -1,42 +0,0 @@
-see gcc PR34205
-Index: gcc-4.3.0/gcc/tree.h
-===================================================================
---- gcc-4.3.0/gcc/tree.h (revision 130511)
-+++ gcc-4.3.0/gcc/tree.h (working copy)
-@@ -38,6 +38,7 @@
-
- LAST_AND_UNUSED_TREE_CODE /* A convenient way to get a value for
- NUM_TREE_CODES. */
-+ ,__LAST_AND_UNUSED_TREE_CODE=32767 /* Force 16bit width. */
- };
-
- #undef DEFTREECODE
-Index: gcc-4.3.0/gcc/rtl.h
-===================================================================
---- gcc-4.3.0/gcc/rtl.h (revision 130511)
-+++ gcc-4.3.0/gcc/rtl.h (working copy)
-@@ -48,9 +48,11 @@
- #include "rtl.def" /* rtl expressions are documented here */
- #undef DEF_RTL_EXPR
-
-- LAST_AND_UNUSED_RTX_CODE}; /* A convenient way to get a value for
-+ LAST_AND_UNUSED_RTX_CODE /* A convenient way to get a value for
- NUM_RTX_CODE.
- Assumes default enum value assignment. */
-+ ,__LAST_AND_UNUSED_RTX_CODE=32767 /* Force 16bit width. */
-+};
-
- #define NUM_RTX_CODE ((int) LAST_AND_UNUSED_RTX_CODE)
- /* The cast here, saves many elsewhere. */
-Index: gcc-4.3.0/gcc/c-common.h
-===================================================================
---- gcc-4.3.0/gcc/c-common.h (revision 130511)
-+++ gcc-4.3.0/gcc/c-common.h (working copy)
-@@ -125,6 +125,7 @@
- RID_LAST_AT = RID_AT_IMPLEMENTATION,
- RID_FIRST_PQ = RID_IN,
- RID_LAST_PQ = RID_ONEWAY
-+ ,__LAST_AND_UNUSED_RID=32767 /* Force 16bit width. */
- };
-
- #define OBJC_IS_AT_KEYWORD(rid) \
diff --git a/toolchain/gcc/4.3.1/100-uclibc-conf.patch b/toolchain/gcc/4.3.4/100-uclibc-conf.patch
index cca8c8229..cca8c8229 100644
--- a/toolchain/gcc/4.3.1/100-uclibc-conf.patch
+++ b/toolchain/gcc/4.3.4/100-uclibc-conf.patch
diff --git a/toolchain/gcc/4.3.1/104-gnuhurd-uclibc-conf.patch b/toolchain/gcc/4.3.4/104-gnuhurd-uclibc-conf.patch
index c04dd9ff0..c04dd9ff0 100644
--- a/toolchain/gcc/4.3.1/104-gnuhurd-uclibc-conf.patch
+++ b/toolchain/gcc/4.3.4/104-gnuhurd-uclibc-conf.patch
diff --git a/toolchain/gcc/4.3.1/301-missing-execinfo_h.patch b/toolchain/gcc/4.3.4/301-missing-execinfo_h.patch
index 0e2092f3f..0e2092f3f 100644
--- a/toolchain/gcc/4.3.1/301-missing-execinfo_h.patch
+++ b/toolchain/gcc/4.3.4/301-missing-execinfo_h.patch
diff --git a/toolchain/gcc/4.3.1/302-c99-snprintf.patch b/toolchain/gcc/4.3.4/302-c99-snprintf.patch
index ba51a0e1d..ba51a0e1d 100644
--- a/toolchain/gcc/4.3.1/302-c99-snprintf.patch
+++ b/toolchain/gcc/4.3.4/302-c99-snprintf.patch
diff --git a/toolchain/gcc/4.3.1/305-libmudflap-susv3-legacy.patch b/toolchain/gcc/4.3.4/305-libmudflap-susv3-legacy.patch
index 374b1f865..374b1f865 100644
--- a/toolchain/gcc/4.3.1/305-libmudflap-susv3-legacy.patch
+++ b/toolchain/gcc/4.3.4/305-libmudflap-susv3-legacy.patch
diff --git a/toolchain/gcc/4.3.1/810-arm-softfloat-libgcc.patch b/toolchain/gcc/4.3.4/810-arm-softfloat-libgcc.patch
index 1639c39a8..1639c39a8 100644
--- a/toolchain/gcc/4.3.1/810-arm-softfloat-libgcc.patch
+++ b/toolchain/gcc/4.3.4/810-arm-softfloat-libgcc.patch
diff --git a/toolchain/gcc/4.3.1/993-arm_insn-opinit-RTX_CODE-fixup.patch b/toolchain/gcc/4.3.4/993-arm_insn-opinit-RTX_CODE-fixup.patch
index 69f0c372d..69f0c372d 100644
--- a/toolchain/gcc/4.3.1/993-arm_insn-opinit-RTX_CODE-fixup.patch
+++ b/toolchain/gcc/4.3.4/993-arm_insn-opinit-RTX_CODE-fixup.patch
diff --git a/toolchain/gcc/4.3.1/998-gcc-4.3.0-fix-header.00.patch b/toolchain/gcc/4.3.4/998-gcc-4.3.0-fix-header.00.patch
index 7fe59d2dd..7fe59d2dd 100644
--- a/toolchain/gcc/4.3.1/998-gcc-4.3.0-fix-header.00.patch
+++ b/toolchain/gcc/4.3.4/998-gcc-4.3.0-fix-header.00.patch
diff --git a/toolchain/gcc/4.3.4/999-4.3.2-armeabi-aapcs-linux.patch b/toolchain/gcc/4.3.4/999-4.3.2-armeabi-aapcs-linux.patch
new file mode 100644
index 000000000..f4b1c9c06
--- /dev/null
+++ b/toolchain/gcc/4.3.4/999-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/toolchain/gcc/4.3.4/999-4.3.3-arm-fix-for-bug-37436.patch b/toolchain/gcc/4.3.4/999-4.3.3-arm-fix-for-bug-37436.patch
new file mode 100644
index 000000000..99a016fbe
--- /dev/null
+++ b/toolchain/gcc/4.3.4/999-4.3.3-arm-fix-for-bug-37436.patch
@@ -0,0 +1,86 @@
+gcc svn 142778:
+
+PR target/37436
+* arm.c (arm_legitimate_index): Only accept addresses that are in
+canonical form.
+* predicates.md (arm_reg_or_extendqisi_mem_op): New predicate.
+* arm.md (extendqihi2): Use arm_reg_or_extendqisi_mem_op predicate
+for operand1.
+(extendqisi2): Likewise.
+(arm_extendqisi, arm_extendqisi_v6): Use arm_extendqisi_mem_op
+predicate for operand1.
+
+diff -Nura gcc-4.3.3.orig/gcc/config/arm/arm.c gcc-4.3.3/gcc/config/arm/arm.c
+--- gcc-4.3.3.orig/gcc/config/arm/arm.c 2008-06-11 07:52:55.000000000 -0300
++++ gcc-4.3.3/gcc/config/arm/arm.c 2009-05-21 16:06:45.000000000 -0300
+@@ -3769,6 +3769,7 @@
+ rtx xop1 = XEXP (x, 1);
+
+ return ((arm_address_register_rtx_p (xop0, strict_p)
++ && GET_CODE(xop1) == CONST_INT
+ && arm_legitimate_index_p (mode, xop1, outer, strict_p))
+ || (arm_address_register_rtx_p (xop1, strict_p)
+ && arm_legitimate_index_p (mode, xop0, outer, strict_p)));
+diff -Nura gcc-4.3.3.orig/gcc/config/arm/arm.md gcc-4.3.3/gcc/config/arm/arm.md
+--- gcc-4.3.3.orig/gcc/config/arm/arm.md 2007-09-04 01:44:47.000000000 -0300
++++ gcc-4.3.3/gcc/config/arm/arm.md 2009-05-21 16:06:45.000000000 -0300
+@@ -4199,7 +4199,7 @@
+
+ (define_expand "extendqihi2"
+ [(set (match_dup 2)
+- (ashift:SI (match_operand:QI 1 "general_operand" "")
++ (ashift:SI (match_operand:QI 1 "arm_reg_or_extendqisi_mem_op" "")
+ (const_int 24)))
+ (set (match_operand:HI 0 "s_register_operand" "")
+ (ashiftrt:SI (match_dup 2)
+@@ -4224,7 +4224,7 @@
+
+ (define_insn "*arm_extendqihi_insn"
+ [(set (match_operand:HI 0 "s_register_operand" "=r")
+- (sign_extend:HI (match_operand:QI 1 "memory_operand" "Uq")))]
++ (sign_extend:HI (match_operand:QI 1 "arm_extendqisi_mem_op" "Uq")))]
+ "TARGET_ARM && arm_arch4"
+ "ldr%(sb%)\\t%0, %1"
+ [(set_attr "type" "load_byte")
+@@ -4235,7 +4235,7 @@
+
+ (define_expand "extendqisi2"
+ [(set (match_dup 2)
+- (ashift:SI (match_operand:QI 1 "general_operand" "")
++ (ashift:SI (match_operand:QI 1 "arm_reg_or_extendqisi_mem_op" "")
+ (const_int 24)))
+ (set (match_operand:SI 0 "s_register_operand" "")
+ (ashiftrt:SI (match_dup 2)
+@@ -4267,7 +4267,7 @@
+
+ (define_insn "*arm_extendqisi"
+ [(set (match_operand:SI 0 "s_register_operand" "=r")
+- (sign_extend:SI (match_operand:QI 1 "memory_operand" "Uq")))]
++ (sign_extend:SI (match_operand:QI 1 "arm_extendqisi_mem_op" "Uq")))]
+ "TARGET_ARM && arm_arch4 && !arm_arch6"
+ "ldr%(sb%)\\t%0, %1"
+ [(set_attr "type" "load_byte")
+@@ -4278,7 +4278,8 @@
+
+ (define_insn "*arm_extendqisi_v6"
+ [(set (match_operand:SI 0 "s_register_operand" "=r,r")
+- (sign_extend:SI (match_operand:QI 1 "nonimmediate_operand" "r,Uq")))]
++ (sign_extend:SI
++ (match_operand:QI 1 "arm_reg_or_extendqisi_mem_op" "r,Uq")))]
+ "TARGET_ARM && arm_arch6"
+ "@
+ sxtb%?\\t%0, %1
+diff -Nura gcc-4.3.3.orig/gcc/config/arm/predicates.md gcc-4.3.3/gcc/config/arm/predicates.md
+--- gcc-4.3.3.orig/gcc/config/arm/predicates.md 2007-08-02 07:49:31.000000000 -0300
++++ gcc-4.3.3/gcc/config/arm/predicates.md 2009-05-21 16:06:45.000000000 -0300
+@@ -234,6 +234,10 @@
+ (match_test "arm_legitimate_address_p (mode, XEXP (op, 0), SIGN_EXTEND,
+ 0)")))
+
++(define_special_predicate "arm_reg_or_extendqisi_mem_op"
++ (ior (match_operand 0 "arm_extendqisi_mem_op")
++ (match_operand 0 "s_register_operand")))
++
+ (define_predicate "power_of_two_operand"
+ (match_code "const_int")
+ {
diff --git a/toolchain/gcc/4.3.1/999-gcc-4.3.0-cris-pragma-pack-warning-remove.patch b/toolchain/gcc/4.3.4/999-gcc-4.3.0-cris-pragma-pack-warning-remove.patch
index dcf01f24b..dcf01f24b 100644
--- a/toolchain/gcc/4.3.1/999-gcc-4.3.0-cris-pragma-pack-warning-remove.patch
+++ b/toolchain/gcc/4.3.4/999-gcc-4.3.0-cris-pragma-pack-warning-remove.patch
diff --git a/toolchain/gcc/4.3.4/powerpc-link-with-math-lib.patch.conditional b/toolchain/gcc/4.3.4/powerpc-link-with-math-lib.patch.conditional
new file mode 100644
index 000000000..9d01ebaf3
--- /dev/null
+++ b/toolchain/gcc/4.3.4/powerpc-link-with-math-lib.patch.conditional
@@ -0,0 +1,125 @@
+See: http://gcc.gnu.org/ml/gcc-patches/2008-10/msg00237.html
+Patch by: Bernhard Reutner-Fischer
+
+--- gcc-4.3.3/gcc/config/t-slibgcc-elf-ver 2005-02-20 00:44:10.000000000 +1300
++++ gcc-4.3.3-p/gcc/config/t-slibgcc-elf-ver 2009-05-06 07:05:50.000000000 +1200
+@@ -9,7 +9,7 @@
+ SHLIB_OBJS = @shlib_objs@
+ SHLIB_DIR = @multilib_dir@
+ SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
+-SHLIB_LC = -lc
++SHLIB_LC = @libgcc_libm@ -lc
+
+ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
+ -Wl,--soname=$(SHLIB_SONAME) \
+--- gcc-4.3.3/libgcc/configure 2008-11-21 06:09:53.000000000 +1300
++++ gcc-4.3.3-p/libgcc/configure 2009-05-06 07:05:50.000000000 +1200
+@@ -272,7 +272,7 @@
+ PACKAGE_BUGREPORT=''
+
+ ac_unique_file="static-object.mk"
+-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS libgcc_topdir enable_shared slibdir INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AWK build build_cpu build_vendor build_os host host_cpu host_vendor host_os host_noncanonical build_libsubdir build_subdir host_subdir target_subdir AR ac_ct_AR LIPO ac_ct_LIPO NM ac_ct_NM RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP decimal_float enable_decimal_float fixed_point vis_hide set_have_cc_tls tmake_file extra_parts asm_hidden_op LIBOBJS LTLIBOBJS'
++ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS libgcc_topdir enable_shared slibdir INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AWK build build_cpu build_vendor build_os host host_cpu host_vendor host_os host_noncanonical build_libsubdir build_subdir host_subdir target_subdir AR ac_ct_AR LIPO ac_ct_LIPO NM ac_ct_NM RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP decimal_float enable_decimal_float fixed_point vis_hide set_have_cc_tls LIBGCC_LIBM tmake_file extra_parts asm_hidden_op LIBOBJS LTLIBOBJS'
+ ac_subst_files=''
+
+ # Initialize some variables set by options.
+@@ -3505,6 +3505,39 @@
+ fi
+
+
++# On powerpc libgcc_s references copysignl which is a libm function but
++# glibc apparently also provides it via libc as opposed to uClibc where
++# it lives in libm.
++echo "$as_me:$LINENO: checking for library containing copysignl" >&5
++echo $ECHO_N "checking for library containing copysignl... $ECHO_C" >&6
++if test "${libgcc_cv_copysignl_lib+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++
++ echo '#include <features.h>' > conftest.c
++ echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
++ libgcc_cv_copysignl_lib="-lc"
++ if { ac_try='${CC-cc} -S conftest.c -o conftest.s 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }
++ then
++ libgcc_cv_copysignl_lib="-lm"
++ fi
++ rm -f conftest.*
++
++fi
++echo "$as_me:$LINENO: result: $libgcc_cv_copysignl_lib" >&5
++echo "${ECHO_T}$libgcc_cv_copysignl_lib" >&6
++
++case /${libgcc_cv_copysignl_lib}/ in
++ /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
++ *) LIBGCC_LIBM= ;;
++esac
++
++
+ # Conditionalize the makefile for this target machine.
+ tmake_file_=
+ for f in ${tmake_file}
+@@ -4225,6 +4258,7 @@
+ s,@fixed_point@,$fixed_point,;t t
+ s,@vis_hide@,$vis_hide,;t t
+ s,@set_have_cc_tls@,$set_have_cc_tls,;t t
++s,@LIBGCC_LIBM@,$LIBGCC_LIBM,;t t
+ s,@tmake_file@,$tmake_file,;t t
+ s,@extra_parts@,$extra_parts,;t t
+ s,@asm_hidden_op@,$asm_hidden_op,;t t
+--- gcc-4.3.3/libgcc/configure.ac 2008-11-21 06:09:53.000000000 +1300
++++ gcc-4.3.3-p/libgcc/configure.ac 2009-05-06 07:05:50.000000000 +1200
+@@ -207,6 +207,27 @@
+ fi
+ AC_SUBST(set_have_cc_tls)
+
++# On powerpc libgcc_s references copysignl which is a libm function but
++# glibc apparently also provides it via libc as opposed to uClibc where
++# it lives in libm.
++AC_CACHE_CHECK([for library containing copysignl],
++ libgcc_cv_copysignl_lib, [
++ echo '#include <features.h>' > conftest.c
++ echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
++ libgcc_cv_copysignl_lib="-lc"
++ if AC_TRY_COMMAND(${CC-cc} -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD)
++ then
++ libgcc_cv_copysignl_lib="-lm"
++ fi
++ rm -f conftest.*
++ ])
++
++case /${libgcc_cv_copysignl_lib}/ in
++ /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
++ *) LIBGCC_LIBM= ;;
++esac
++AC_SUBST(LIBGCC_LIBM)
++
+ # Conditionalize the makefile for this target machine.
+ tmake_file_=
+ for f in ${tmake_file}
+--- gcc-4.3.3/libgcc/Makefile.in 2008-06-17 21:32:34.000000000 +1200
++++ gcc-4.3.3-p/libgcc/Makefile.in 2009-05-06 07:05:50.000000000 +1200
+@@ -40,6 +40,7 @@
+ decimal_float = @decimal_float@
+ enable_decimal_float = @enable_decimal_float@
+ fixed_point = @fixed_point@
++LIBGCC_LIBM = @LIBGCC_LIBM@
+
+ host_noncanonical = @host_noncanonical@
+
+@@ -738,9 +739,10 @@
+ @multilib_dir@,$(MULTIDIR),$(subst \
+ @shlib_objs@,$(objects),$(subst \
+ @shlib_base_name@,libgcc_s,$(subst \
++ @libgcc_libm@,$(LIBGCC_LIBM),$(subst \
+ @shlib_map_file@,$(mapfile),$(subst \
+ @shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(subst \
+- @shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK))))))))
++ @shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK)))))))))
+
+ libunwind$(SHLIB_EXT): $(libunwind-s-objects) $(extra-parts)
+ # @multilib_flags@ is still needed because this may use
diff --git a/toolchain/gcc/Config.in b/toolchain/gcc/Config.in
index 76e7f78db..8246a9595 100644
--- a/toolchain/gcc/Config.in
+++ b/toolchain/gcc/Config.in
@@ -47,11 +47,6 @@ choice
depends on BR2_RECENT || BR2_DEPRECATED
bool "gcc 4.2.4"
- config BR2_GCC_VERSION_4_3_1
- depends on !BR2_avr32 && !BR2_nios2
- depends on BR2_DEPRECATED
- bool "gcc 4.3.1"
-
config BR2_GCC_VERSION_4_3_2
depends on !BR2_avr32 && !BR2_nios2
depends on BR2_RECENT || BR2_DEPRECATED
@@ -61,6 +56,10 @@ choice
depends on !BR2_avr32 && !BR2_nios2
bool "gcc 4.3.3"
+ config BR2_GCC_VERSION_4_3_4
+ depends on !BR2_avr32 && !BR2_nios2
+ bool "gcc 4.3.4"
+
config BR2_GCC_VERSION_4_4_X
depends on !BR2_avr32 && !BR2_nios2
bool "gcc 4.4.x"
@@ -102,9 +101,9 @@ config BR2_GCC_VERSION
default "4.2.2" if BR2_GCC_VERSION_4_2_2
default "4.2.3" if BR2_GCC_VERSION_4_2_3
default "4.2.4" if BR2_GCC_VERSION_4_2_4
- default "4.3.1" if BR2_GCC_VERSION_4_3_1
default "4.3.2" if BR2_GCC_VERSION_4_3_2
default "4.3.3" if BR2_GCC_VERSION_4_3_3
+ default "4.3.4" if BR2_GCC_VERSION_4_3_4
default "4.4.1" if BR2_GCC_VERSION_4_4_X
default "4.3" if BR2_GCC_VERSION_4_3