My system : Ubuntu 22.04.3 running on x86_64. GCC version 11.4.0
I'm asking this because it seems like there are two different representations of the return address as far as the frame it is within ( caller or callee ) is concerned.
This is what "Computer Systems, A Programmer's Perspective" shows :
This is what "System V Application Binary Interface AMD64 Architecture Processor Supplement" shows :
As you can see in the System V ABI document representation we have the return address inside the current frame ( called/callee function ) but in the book representation it is in the caller frame ( caller function ).
Here are my questions :
What representations is right ?
Is the collocation of the return address inside a particular frame ( caller or callee ) just an arbitrary silly matter and not specified by any ABI ?