libunwind-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Libunwind-devel] [PATCH] restore "x0" and "x1" registers


From: Yvan Roux
Subject: Re: [Libunwind-devel] [PATCH] restore "x0" and "x1" registers
Date: Mon, 6 Oct 2014 10:45:46 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

Hi,

> I'd try to use ia64 and x86_64 as reference code on this topic.
> src/ia64/Gresume.c has some relevant comments on preserved vs scratch.
> 
> My understanding of the aarch64 code is:
> 
> (c->sigcontext_format == AARCH64_SCF_NONE) {
>   // normal path
> } else {
>   // exception handling path
>   // eh_valid_mask is being looked at
> }
> 
> What I'm not understanding is: how does the exception handling path
> end up with AARCH64_SCF_NONE?

what I did here is to use the same pattern as on the arm and sh port, to
handle cases without signals (when AARCH64_SCF_NONE is true) and with
signals, but I've handle exception argument passing only when signal are
involved which is an error.  What I don't understand in the ia64 code (which
have almost the same structure) is: why in the non-signal path exception
arguments registers are always restored and not guarded by the test on
eh_valid_mask ?

Regarding the proposed patch, I think that it should handle registers
x0,x1,x2 and x3 and not only x0 and x1.

Yvan



reply via email to

[Prev in Thread] Current Thread [Next in Thread]