diff options
21 files changed, 331 insertions, 239 deletions
@@ -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 |