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

_______________________________________________
Libunwind-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/libunwind-devel

Reply via email to