aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2010-06-07 19:56:19 -0700
committerKhem Raj <raj.khem@gmail.com>2010-06-07 19:59:20 -0700
commit48b5a0e69d868a069c1b6fc4605ed0e281ee07af (patch)
tree149e5f9e5846c8650fb13034bab85fc777ede457
parentf6b09dcb6000ca31219281bb6abc060edf9528ce (diff)
downloadopenembedded-48b5a0e69d868a069c1b6fc4605ed0e281ee07af.tar.gz
openembedded-48b5a0e69d868a069c1b6fc4605ed0e281ee07af.tar.bz2
openembedded-48b5a0e69d868a069c1b6fc4605ed0e281ee07af.zip
gcc-4.5: Fix libstdc++ build for ARM
* This patch makes sure that __cxa_end_cleanup is emitted in .text section. * Bump SRCREV to latest Signed-off-by: Khem Raj <raj.khem@gmail.com>
-rw-r--r--recipes/gcc/gcc-4.5.inc11
-rw-r--r--recipes/gcc/gcc-4.5/gcc-flags-for-build.patch58
-rw-r--r--recipes/gcc/gcc-4.5/libstdc++-emit-__cxa_end_cleanup-in-text.patch29
3 files changed, 67 insertions, 31 deletions
diff --git a/recipes/gcc/gcc-4.5.inc b/recipes/gcc/gcc-4.5.inc
index 50e21793ce..6c5b0441d4 100644
--- a/recipes/gcc/gcc-4.5.inc
+++ b/recipes/gcc/gcc-4.5.inc
@@ -8,10 +8,16 @@ DEPENDS = "mpfr gmp libmpc"
NATIVEDEPS = "mpfr-native gmp-native libmpc-native"
-INC_PR = "r1"
+INC_PR = "r2"
-SRCREV = "160043"
+SRCREV = "160413"
PV = "4.5"
+# BINV should be incremented after updating to a revision
+# after a minor gcc release (e.g. 4.5.1 or 4.5.2) has been made
+# the value will be minor-release+1 e.g. if minor release was
+# 4.5.1 then the value below will be 2 which will mean 4.5.2
+# which will be next minor release and so on.
+
BINV = "${PV}.1"
BRANCH = "gcc-4_5-branch"
PR_append = "+svnr${SRCPV}"
@@ -22,6 +28,7 @@ SRC_URI = "svn://gcc.gnu.org/svn/gcc/branches;module=${BRANCH} \
file://gcc-uclibc-locale-ctype_touplow_t.patch \
file://cache-amnesia.patch \
file://gcc-flags-for-build.patch \
+ file://libstdc++-emit-__cxa_end_cleanup-in-text.patch \
"
# Language Overrides
diff --git a/recipes/gcc/gcc-4.5/gcc-flags-for-build.patch b/recipes/gcc/gcc-4.5/gcc-flags-for-build.patch
index 905152d430..510c462e6b 100644
--- a/recipes/gcc/gcc-4.5/gcc-flags-for-build.patch
+++ b/recipes/gcc/gcc-4.5/gcc-flags-for-build.patch
@@ -1,7 +1,7 @@
Index: gcc-4.5/Makefile.def
===================================================================
---- gcc-4.5.orig/Makefile.def 2010-05-30 20:32:58.000000000 -0700
-+++ gcc-4.5/Makefile.def 2010-05-30 22:40:11.810599683 -0700
+--- gcc-4.5.orig/Makefile.def 2010-06-04 23:21:43.000000000 -0700
++++ gcc-4.5/Makefile.def 2010-06-07 18:29:45.867493975 -0700
@@ -240,6 +240,7 @@ flags_to_pass = { flag= AWK ; };
flags_to_pass = { flag= BISON ; };
flags_to_pass = { flag= CC_FOR_BUILD ; };
@@ -12,8 +12,8 @@ Index: gcc-4.5/Makefile.def
flags_to_pass = { flag= FLEX ; };
Index: gcc-4.5/gcc/Makefile.in
===================================================================
---- gcc-4.5.orig/gcc/Makefile.in 2010-05-30 20:30:34.000000000 -0700
-+++ gcc-4.5/gcc/Makefile.in 2010-05-30 22:40:11.820599836 -0700
+--- gcc-4.5.orig/gcc/Makefile.in 2010-06-04 23:20:06.000000000 -0700
++++ gcc-4.5/gcc/Makefile.in 2010-06-07 18:29:45.877491615 -0700
@@ -762,7 +762,7 @@ BUILD_LINKERFLAGS = $(BUILD_CFLAGS)
# Native linker and preprocessor flags. For x-fragment overrides.
@@ -25,9 +25,9 @@ Index: gcc-4.5/gcc/Makefile.in
GCC_INSTALL_NAME := $(shell echo gcc|sed '$(program_transform_name)')
Index: gcc-4.5/gcc/configure.ac
===================================================================
---- gcc-4.5.orig/gcc/configure.ac 2010-05-30 22:39:14.000000000 -0700
-+++ gcc-4.5/gcc/configure.ac 2010-05-30 22:40:11.820599836 -0700
-@@ -1782,16 +1782,18 @@ AC_SUBST(inhibit_libc)
+--- gcc-4.5.orig/gcc/configure.ac 2010-06-07 17:45:41.000000000 -0700
++++ gcc-4.5/gcc/configure.ac 2010-06-07 18:29:45.877491615 -0700
+@@ -1798,16 +1798,18 @@ AC_SUBST(inhibit_libc)
# Also, we cannot run fixincludes.
# These are the normal (build=host) settings:
@@ -52,8 +52,8 @@ Index: gcc-4.5/gcc/configure.ac
# Expand extra_headers to include complete path.
Index: gcc-4.5/Makefile.in
===================================================================
---- gcc-4.5.orig/Makefile.in 2010-05-30 20:32:58.000000000 -0700
-+++ gcc-4.5/Makefile.in 2010-05-30 22:40:11.830627507 -0700
+--- gcc-4.5.orig/Makefile.in 2010-06-04 23:21:43.000000000 -0700
++++ gcc-4.5/Makefile.in 2010-06-07 18:29:45.887501058 -0700
@@ -333,6 +333,7 @@ AR_FOR_BUILD = @AR_FOR_BUILD@
AS_FOR_BUILD = @AS_FOR_BUILD@
CC_FOR_BUILD = @CC_FOR_BUILD@
@@ -72,8 +72,8 @@ Index: gcc-4.5/Makefile.in
"FLEX=$(FLEX)" \
Index: gcc-4.5/gcc/configure
===================================================================
---- gcc-4.5.orig/gcc/configure 2010-05-30 22:39:14.000000000 -0700
-+++ gcc-4.5/gcc/configure 2010-05-30 22:42:23.488119238 -0700
+--- gcc-4.5.orig/gcc/configure 2010-06-07 17:45:41.000000000 -0700
++++ gcc-4.5/gcc/configure 2010-06-07 18:30:48.917502927 -0700
@@ -705,6 +705,7 @@ SED
LIBTOOL
collect2
@@ -82,7 +82,7 @@ Index: gcc-4.5/gcc/configure
BUILD_LDFLAGS
BUILD_CFLAGS
CC_FOR_BUILD
-@@ -10927,6 +10928,7 @@ fi
+@@ -10980,6 +10981,7 @@ fi
CC_FOR_BUILD='$(CC)'
BUILD_CFLAGS='$(ALL_CFLAGS)'
BUILD_LDFLAGS='$(LDFLAGS)'
@@ -90,7 +90,7 @@ Index: gcc-4.5/gcc/configure
STMP_FIXINC=stmp-fixinc
# And these apply if build != host, or we are generating coverage data
-@@ -10934,6 +10936,7 @@ if test x$build != x$host || test "x$cov
+@@ -10987,6 +10989,7 @@ if test x$build != x$host || test "x$cov
then
BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
@@ -98,28 +98,28 @@ Index: gcc-4.5/gcc/configure
fi
# Expand extra_headers to include complete path.
-@@ -17053,7 +17056,7 @@ else
+@@ -17106,7 +17109,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
--#line 17056 "configure"
-+#line 17059 "configure"
+-#line 17109 "configure"
++#line 17112 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
-@@ -17159,7 +17162,7 @@ else
+@@ -17212,7 +17215,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
--#line 17162 "configure"
-+#line 17165 "configure"
+-#line 17215 "configure"
++#line 17218 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
Index: gcc-4.5/Makefile.tpl
===================================================================
---- gcc-4.5.orig/Makefile.tpl 2010-05-30 20:32:58.000000000 -0700
-+++ gcc-4.5/Makefile.tpl 2010-05-30 22:40:11.840621166 -0700
+--- gcc-4.5.orig/Makefile.tpl 2010-06-04 23:21:43.000000000 -0700
++++ gcc-4.5/Makefile.tpl 2010-06-07 18:29:45.897539904 -0700
@@ -336,6 +336,7 @@ AR_FOR_BUILD = @AR_FOR_BUILD@
AS_FOR_BUILD = @AS_FOR_BUILD@
CC_FOR_BUILD = @CC_FOR_BUILD@
@@ -130,8 +130,8 @@ Index: gcc-4.5/Makefile.tpl
DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@
Index: gcc-4.5/configure
===================================================================
---- gcc-4.5.orig/configure 2010-05-30 22:39:13.018100422 -0700
-+++ gcc-4.5/configure 2010-05-30 22:40:11.840621166 -0700
+--- gcc-4.5.orig/configure 2010-06-07 17:45:40.329993062 -0700
++++ gcc-4.5/configure 2010-06-07 18:29:45.897539904 -0700
@@ -651,6 +651,7 @@ GCJ_FOR_BUILD
DLLTOOL_FOR_BUILD
CXX_FOR_BUILD
@@ -140,7 +140,7 @@ Index: gcc-4.5/configure
CFLAGS_FOR_BUILD
CC_FOR_BUILD
AS_FOR_BUILD
-@@ -7973,6 +7974,7 @@ esac
+@@ -8027,6 +8028,7 @@ esac
# our build compiler if desired.
if test x"${build}" = x"${host}" ; then
CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${CFLAGS}}
@@ -148,7 +148,7 @@ Index: gcc-4.5/configure
CXXFLAGS_FOR_BUILD=${CXXFLAGS_FOR_BUILD-${CXXFLAGS}}
LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-${LDFLAGS}}
fi
-@@ -8052,6 +8054,7 @@ done
+@@ -8106,6 +8108,7 @@ done
@@ -158,9 +158,9 @@ Index: gcc-4.5/configure
# programs in objdir.
Index: gcc-4.5/configure.ac
===================================================================
---- gcc-4.5.orig/configure.ac 2010-05-30 22:39:12.000000000 -0700
-+++ gcc-4.5/configure.ac 2010-05-30 22:40:11.840621166 -0700
-@@ -3061,6 +3061,7 @@ esac
+--- gcc-4.5.orig/configure.ac 2010-06-07 17:45:40.000000000 -0700
++++ gcc-4.5/configure.ac 2010-06-07 18:29:45.897539904 -0700
+@@ -3081,6 +3081,7 @@ esac
# our build compiler if desired.
if test x"${build}" = x"${host}" ; then
CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${CFLAGS}}
@@ -168,7 +168,7 @@ Index: gcc-4.5/configure.ac
CXXFLAGS_FOR_BUILD=${CXXFLAGS_FOR_BUILD-${CXXFLAGS}}
LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-${LDFLAGS}}
fi
-@@ -3127,6 +3128,7 @@ AC_SUBST(AR_FOR_BUILD)
+@@ -3147,6 +3148,7 @@ AC_SUBST(AR_FOR_BUILD)
AC_SUBST(AS_FOR_BUILD)
AC_SUBST(CC_FOR_BUILD)
AC_SUBST(CFLAGS_FOR_BUILD)
diff --git a/recipes/gcc/gcc-4.5/libstdc++-emit-__cxa_end_cleanup-in-text.patch b/recipes/gcc/gcc-4.5/libstdc++-emit-__cxa_end_cleanup-in-text.patch
new file mode 100644
index 0000000000..307327c314
--- /dev/null
+++ b/recipes/gcc/gcc-4.5/libstdc++-emit-__cxa_end_cleanup-in-text.patch
@@ -0,0 +1,29 @@
+2010-06-07 Khem Raj <raj.khem@gmail.com>
+
+ * libsupc++/eh_arm.cc (__cxa_end_cleanup): Switch to
+ .text section before emitting inline assembly.
+
+Index: gcc/libstdc++-v3/libsupc++/eh_arm.cc
+===================================================================
+--- gcc/libstdc++-v3/libsupc++/eh_arm.cc (revision 160410)
++++ gcc/libstdc++v3/libsupc++/eh_arm.cc (working copy)
+@@ -157,7 +157,8 @@
+ // Assembly wrapper to call __gnu_end_cleanup without clobbering r1-r3.
+ // Also push r4 to preserve stack alignment.
+ #ifdef __thumb__
+-asm (".global __cxa_end_cleanup\n"
++asm (" .section .text.__cxa_end_cleanup\n"
++" .global __cxa_end_cleanup\n"
+ " .type __cxa_end_cleanup, \"function\"\n"
+ " .thumb_func\n"
+ "__cxa_end_cleanup:\n"
+@@ -166,7 +167,8 @@
+ " pop\t{r1, r2, r3, r4}\n"
+ " bl\t_Unwind_Resume @ Never returns\n");
+ #else
+-asm (".global __cxa_end_cleanup\n"
++asm (" .section .text.__cxa_end_cleanup\n"
++" .global __cxa_end_cleanup\n"
+ " .type __cxa_end_cleanup, \"function\"\n"
+ "__cxa_end_cleanup:\n"
+ " stmfd\tsp!, {r1, r2, r3, r4}\n"