cmd/internal/obj/sparc64: add frame pointers and back-up state in caller
cmd/internal/obj/sparc64: add frame pointers and back-up state in caller

This change adds back frame pointers. It's impossible to debug
anything without frame pointers. However, the idea is to hide the
frame pointers from Go as much as possible.

Normally on SPARC64 RFP/ILR (caller's stack pointer and caller's
return address) are saved by the callee. However, we make the caller
save them in the same place on the caller stack where the callee
would save them. Since the location of the saved data is the same,
debuggers are able to use this calling convention. The advantage
is that a stack pointer is enough to select an activation record,
since RFP/ILR are saved at a known constant offset from the stack
pointer (because there is no alloca).

This allows the Go runtime to only manage stack pointers (like on
other architectures), but the continuation functions which set state
(e.g. runtime.gogo) can retrieve the frame pointers and set them
correctly.

4ad/go,4ad/go,4ad/go,4ad/go,4ad/go,4ad/go,4ad/go,4ad/go