On Tue, Sep 30, 2014 at 3:55 AM, Yvan Roux <[email protected]> wrote:

> Right, it is not specified in the AArch64 ABI that exception handlers
> arguments have reserved registers as it uses the standard convention
> to pass arguments, and in the GCC case only registers X0-X3 are used
> for that (it is what I've implemented in Gregs.c in this port).
> Thus, I think that they all have to be restored if they have been set
> before (i.e. the corresponding eh_valid_mask is true).  Arun does it
> make sense ?

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?

 -Arun

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

Reply via email to