Hmm, OK, but this means that there are really three classes of ABIs here:
a) The return value address is passed to the callee, and the callee
may clobber the location where the address is stored (i.e. it's
stored in the callee's stack frame, or in a scratch register).
b) The return value address is passed to the callee, and the callee
may clobber the location where the address is stored (i.e. it's
stored in the callee's stack frame, or in a scratch register). We
can't "return VALUE" or display the return value with "finish".
c) The return value address is passed to the callee in a location that
isn't clobbered by the callee (i.e. in the caller's stack frame, or
in a preserved register).
This means that
a) We cannot "return VALUE" or display the return value with "finish".
b) We cannot "return VALUE" but we can display the return values with
"finish".
c) We can both "return VALUE" and display the return value with
"finish".
Examples are:
a) The PPC System V psABI: The return value address is passed in r3,
which is "volatile".
b) The AMD64 System V psABI: The return values address is passed in
%rdi. On return %rax will contain the address that has been passed
in by the caller in %rdi.
c) The (32-bit) SPARC System V psABI: The return address is stored in
a reserved slot in the caller's frame.