summaryrefslogtreecommitdiffstats
path: root/recipes/gcc/gcc-4.5/libstdc++-emit-__cxa_end_cleanup-in-text.patch
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 /recipes/gcc/gcc-4.5/libstdc++-emit-__cxa_end_cleanup-in-text.patch
parentf6b09dcb6000ca31219281bb6abc060edf9528ce (diff)
downloadopenembedded-48b5a0e69d868a069c1b6fc4605ed0e281ee07af.tar.gz
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>
Diffstat (limited to 'recipes/gcc/gcc-4.5/libstdc++-emit-__cxa_end_cleanup-in-text.patch')
-rw-r--r--recipes/gcc/gcc-4.5/libstdc++-emit-__cxa_end_cleanup-in-text.patch29
1 files changed, 29 insertions, 0 deletions
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"