From e5b258a4c95ee45aae8fb7ec9f7ba81dc68addc2 Mon Sep 17 00:00:00 2001 From: Dmitry Gorbachev Date: Mon, 7 Sep 2009 15:41:52 +0000 Subject: [PATCH] re PR c++/41214 (Null pointer dereferenced in _Unwind_SetGR()) PR c++/41214 * unwind-dw2.c (uw_init_context_1): Mark noinline. * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise. * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise. From-SVN: r151482 --- gcc/ChangeLog | 7 +++++++ gcc/config/ia64/unwind-ia64.c | 2 +- gcc/config/xtensa/unwind-dw2-xtensa.c | 2 +- gcc/unwind-dw2.c | 2 +- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 20a5e68e59b..7ad76cca43b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2009-09-06 Dmitry Gorbachev + + PR c++/41214 + * unwind-dw2.c (uw_init_context_1): Mark noinline. + * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise. + * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise. + 2009-09-07 Bernd Schmidt * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic diff --git a/gcc/config/ia64/unwind-ia64.c b/gcc/config/ia64/unwind-ia64.c index 34258588292..f935a0ca3e4 100644 --- a/gcc/config/ia64/unwind-ia64.c +++ b/gcc/config/ia64/unwind-ia64.c @@ -2126,7 +2126,7 @@ uw_advance_context (struct _Unwind_Context *context, _Unwind_FrameState *fs) uw_init_context_1 (CONTEXT, __builtin_ia64_bsp ()); \ } while (0) -static void +static void __attribute__((noinline)) uw_init_context_1 (struct _Unwind_Context *context, void *bsp) { void *rp = __builtin_extract_return_addr (__builtin_return_address (0)); diff --git a/gcc/config/xtensa/unwind-dw2-xtensa.c b/gcc/config/xtensa/unwind-dw2-xtensa.c index e7ca86a10fb..9544f65ab78 100644 --- a/gcc/config/xtensa/unwind-dw2-xtensa.c +++ b/gcc/config/xtensa/unwind-dw2-xtensa.c @@ -459,7 +459,7 @@ uw_advance_context (struct _Unwind_Context *context, _Unwind_FrameState *fs) } \ while (0) -static void +static void __attribute__((noinline)) uw_init_context_1 (struct _Unwind_Context *context, void *outer_cfa, void *outer_ra) { diff --git a/gcc/unwind-dw2.c b/gcc/unwind-dw2.c index 68a1a282b34..a86c21b7129 100644 --- a/gcc/unwind-dw2.c +++ b/gcc/unwind-dw2.c @@ -1431,7 +1431,7 @@ init_dwarf_reg_size_table (void) __builtin_init_dwarf_reg_size_table (dwarf_reg_size_table); } -static void +static void __attribute__((noinline)) uw_init_context_1 (struct _Unwind_Context *context, void *outer_cfa, void *outer_ra) {