diff options
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.patch | 86 |
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 + |