aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99326.patch
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2010-09-24 13:49:18 -0700
committerKhem Raj <raj.khem@gmail.com>2010-09-30 13:15:05 -0700
commit91aeba1aed9efd7e58f18e079ab1e7d622fa8f65 (patch)
tree65cbb4836fac98347a99efed8e11cb482940e56f /recipes/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99326.patch
parenta820865e1189521dec861508df9cee9d37e82778 (diff)
downloadopenembedded-91aeba1aed9efd7e58f18e079ab1e7d622fa8f65.tar.gz
gcc-4.5: Import Linaro patches
* Tested gcc on efikamx. Signed-off-by: Khem Raj <raj.khem@gmail.com> Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
Diffstat (limited to 'recipes/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99326.patch')
-rw-r--r--recipes/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99326.patch86
1 files changed, 86 insertions, 0 deletions
diff --git a/recipes/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99326.patch b/recipes/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99326.patch
new file mode 100644
index 0000000000..59b598ba70
--- /dev/null
+++ b/recipes/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99326.patch
@@ -0,0 +1,86 @@
+
+ http://gcc.gnu.org/ml/gcc-patches/2006-03/msg00038.html
+
+ * g++.dg/other/armv7m-1.C: New.
+
+2010-07-26 Julian Brown <julian@codesourcery.com>
+
+ Merge from Sourcery G++ 4.4:
+
+ http://gcc.gnu.org/ml/gcc-patches/2006-04/msg00811.html
+
+
+=== added file 'gcc/testsuite/g++.dg/other/armv7m-1.C'
+--- old/gcc/testsuite/g++.dg/other/armv7m-1.C 1970-01-01 00:00:00 +0000
++++ new/gcc/testsuite/g++.dg/other/armv7m-1.C 2010-08-05 16:23:43 +0000
+@@ -0,0 +1,69 @@
++/* { dg-do run { target arm*-*-* } } */
++/* Test Armv7m interrupt routines. */
++#include <stdlib.h>
++
++#ifdef __ARM_ARCH_7M__
++void __attribute__((interrupt))
++foo(void)
++{
++ long long n;
++ long p;
++ asm volatile ("" : "=r" (p) : "0" (&n));
++ if (p & 4)
++ abort ();
++ return;
++}
++
++void __attribute__((interrupt))
++bar(void)
++{
++ throw 42;
++}
++
++int main()
++{
++ int a;
++ int before;
++ int after;
++ volatile register int sp asm("sp");
++
++ asm volatile ("mov %0, sp\n"
++ "blx %2\n"
++ "mov %1, sp\n"
++ : "=&r" (before), "=r" (after) : "r" (foo)
++ : "memory", "cc", "r0", "r1", "r2", "r3", "ip", "lr");
++ if (before != after)
++ abort();
++ asm volatile ("mov %0, sp\n"
++ "sub sp, sp, #4\n"
++ "blx %2\n"
++ "add sp, sp, #4\n"
++ "mov %1, sp\n"
++ : "=&r" (before), "=r" (after) : "r" (foo)
++ : "memory", "cc", "r0", "r1", "r2", "r3", "ip", "lr");
++ if (before != after)
++ abort();
++ before = sp;
++ try
++ {
++ bar();
++ }
++ catch (int i)
++ {
++ if (i != 42)
++ abort();
++ }
++ catch (...)
++ {
++ abort();
++ }
++ if (before != sp)
++ abort();
++ exit(0);
++}
++#else
++int main()
++{
++ exit (0);
++}
++#endif
+