aboutsummaryrefslogtreecommitdiffstats
path: root/toolchain-layer/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99375.patch
diff options
context:
space:
mode:
Diffstat (limited to 'toolchain-layer/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99375.patch')
-rw-r--r--toolchain-layer/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99375.patch146
1 files changed, 146 insertions, 0 deletions
diff --git a/toolchain-layer/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99375.patch b/toolchain-layer/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99375.patch
new file mode 100644
index 0000000000..fac64b9642
--- /dev/null
+++ b/toolchain-layer/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99375.patch
@@ -0,0 +1,146 @@
+2010-08-26 Maciej Rozycki <macro@codesourcery.com>
+
+ Merge from Sourcery G++ 4.4:
+
+ 2009-02-17 Andrew Jenner <andrew@codesourcery.com>
+ Maciej Rozycki <macro@codesourcery.com>
+
+ gcc/
+ * unwind.inc (_Unwind_RaiseException): Use return value of
+ uw_init_context.
+ * unwind-dw2.c (uw_init_context): Make macro an expression instead of
+ a statement.
+ (uw_init_context_1): Add return value.
+ * unwind-sjlj.c (uw_init_context): Add return value.
+
+ 2010-08-26 Andrew Stubbs <ams@codesourcery.com>
+
+ Merge from Ubuntu GCC:
+
+=== modified file 'gcc/unwind-dw2.c'
+--- old/gcc/unwind-dw2.c 2010-04-27 08:41:30 +0000
++++ new/gcc/unwind-dw2.c 2010-08-26 15:38:19 +0000
+@@ -1414,16 +1414,12 @@
+ /* Fill in CONTEXT for top-of-stack. The only valid registers at this
+ level will be the return address and the CFA. */
+
+-#define uw_init_context(CONTEXT) \
+- do \
+- { \
+- /* Do any necessary initialization to access arbitrary stack frames. \
+- On the SPARC, this means flushing the register windows. */ \
+- __builtin_unwind_init (); \
+- uw_init_context_1 (CONTEXT, __builtin_dwarf_cfa (), \
+- __builtin_return_address (0)); \
+- } \
+- while (0)
++#define uw_init_context(CONTEXT) \
++ /* Do any necessary initialization to access arbitrary stack frames. \
++ On the SPARC, this means flushing the register windows. */ \
++ (__builtin_unwind_init (), \
++ uw_init_context_1 ((CONTEXT), __builtin_dwarf_cfa (), \
++ __builtin_return_address (0)))
+
+ static inline void
+ init_dwarf_reg_size_table (void)
+@@ -1431,7 +1427,7 @@
+ __builtin_init_dwarf_reg_size_table (dwarf_reg_size_table);
+ }
+
+-static void __attribute__((noinline))
++static _Unwind_Reason_Code __attribute__((noinline))
+ uw_init_context_1 (struct _Unwind_Context *context,
+ void *outer_cfa, void *outer_ra)
+ {
+@@ -1445,7 +1441,8 @@
+ context->flags = EXTENDED_CONTEXT_BIT;
+
+ code = uw_frame_state_for (context, &fs);
+- gcc_assert (code == _URC_NO_REASON);
++ if (code != _URC_NO_REASON)
++ return code;
+
+ #if __GTHREADS
+ {
+@@ -1471,6 +1468,8 @@
+ initialization context, then we can't see it in the given
+ call frame data. So have the initialization context tell us. */
+ context->ra = __builtin_extract_return_addr (outer_ra);
++
++ return _URC_NO_REASON;
+ }
+
+ static void _Unwind_DebugHook (void *, void *)
+
+=== modified file 'gcc/unwind-sjlj.c'
+--- old/gcc/unwind-sjlj.c 2009-04-09 14:00:19 +0000
++++ new/gcc/unwind-sjlj.c 2010-08-26 15:38:19 +0000
+@@ -292,10 +292,11 @@
+ uw_update_context (context, fs);
+ }
+
+-static inline void
++static inline _Unwind_Reason_Code
+ uw_init_context (struct _Unwind_Context *context)
+ {
+ context->fc = _Unwind_SjLj_GetContext ();
++ return _URC_NO_REASON;
+ }
+
+ static void __attribute__((noreturn))
+
+=== modified file 'gcc/unwind.inc'
+--- old/gcc/unwind.inc 2009-04-09 14:00:19 +0000
++++ new/gcc/unwind.inc 2010-08-26 15:38:19 +0000
+@@ -85,7 +85,8 @@
+ _Unwind_Reason_Code code;
+
+ /* Set up this_context to describe the current stack frame. */
+- uw_init_context (&this_context);
++ code = uw_init_context (&this_context);
++ gcc_assert (code == _URC_NO_REASON);
+ cur_context = this_context;
+
+ /* Phase 1: Search. Unwind the stack, calling the personality routine
+@@ -198,7 +199,8 @@
+ struct _Unwind_Context this_context, cur_context;
+ _Unwind_Reason_Code code;
+
+- uw_init_context (&this_context);
++ code = uw_init_context (&this_context);
++ gcc_assert (code == _URC_NO_REASON);
+ cur_context = this_context;
+
+ exc->private_1 = (_Unwind_Ptr) stop;
+@@ -221,7 +223,8 @@
+ struct _Unwind_Context this_context, cur_context;
+ _Unwind_Reason_Code code;
+
+- uw_init_context (&this_context);
++ code = uw_init_context (&this_context);
++ gcc_assert (code == _URC_NO_REASON);
+ cur_context = this_context;
+
+ /* Choose between continuing to process _Unwind_RaiseException
+@@ -251,7 +254,8 @@
+ if (exc->private_1 == 0)
+ return _Unwind_RaiseException (exc);
+
+- uw_init_context (&this_context);
++ code = uw_init_context (&this_context);
++ gcc_assert (code == _URC_NO_REASON);
+ cur_context = this_context;
+
+ code = _Unwind_ForcedUnwind_Phase2 (exc, &cur_context);
+@@ -280,7 +284,9 @@
+ struct _Unwind_Context context;
+ _Unwind_Reason_Code code;
+
+- uw_init_context (&context);
++ code = uw_init_context (&context);
++ if (code != _URC_NO_REASON)
++ return _URC_FATAL_PHASE1_ERROR;
+
+ while (1)
+ {
+