This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix ppc64 unwinding problem
- From: Richard Henderson <rth at redhat dot com>
- To: Jakub Jelinek <jakub at redhat dot com>
- Cc: David Edelsohn <dje at watson dot ibm dot com>, gcc-patches at gcc dot gnu dot org
- Date: Tue, 15 Jul 2003 14:11:45 -0700
- Subject: Re: [PATCH] Fix ppc64 unwinding problem
- References: <20030711205737.GL20507@sunsite.ms.mff.cuni.cz> <20030711215815.GC1986@redhat.com> <20030712000334.GN20507@sunsite.ms.mff.cuni.cz> <20030712065425.GB2184@redhat.com> <20030714214654.GP20507@sunsite.ms.mff.cuni.cz>
On Mon, Jul 14, 2003 at 11:46:54PM +0200, Jakub Jelinek wrote:
> > Actually, it won't. DW_CFA_expression is defined to yield an address
> > (not a value), and thus DW_OP_reg2 doesn't give us what we want.
>
> Isn't it something that should be fixed in the standard?
It does seem that there ought to be some way to describe this, yes.
I don't think it's terribly urgent though.
> * unwind-dw2.c (MD_FROB_UPDATE_CONTEXT): Define.
> (uw_update_context_1): Use it.
> * config/rs6000/rs6000.c (insn_after_throw): Remove.
> (rs6000_aix_emit_builtin_unwind_init): Save $r2 to its location
> in parent frame if _Unwind_* called directly instead of through
> .plt.
> (rs6000_emit_eh_toc_restore): Remove.
> (rs6000_emit_prologue): Update stack pointer before doing any saving
> if current_function_calls_eh_return. Generate unwind info for $r2.
> (rs6000_emit_epilogue): Restore stack pointer after doing all
> restoring if current_function_calls_eh_return. Restore $r2.
> * config/rs6000/rs6000-protos.h (rs6000_emit_eh_toc_restore): Remove.
> * config/rs6000/rs6000.md (eh_return): Remove call to
> rs6000_emit_eh_toc_restore.
> * config/rs6000/linux64.h (MD_FROB_UPDATE_CONTEXT): Define.
> * config/rs6000/aix.h (MD_FROB_UPDATE_CONTEXT): Define.
>
> * gcc.dg/cleanup-8.c: New test.
Ok.
r~