Hi,
I have a question about the implementation of
aarch64_final_eh_return_addr
which is used to point out the return address of the frame
According the source code
If FP is not needed
return gen_frame_mem (DImode,
plus_constant (Pmode,
stack_pointer_rtx,
fp_offset
+ cfun->machine->frame.saved_regs_size
- 2 * UNITS_PER_WORD));
According the frame layout
+-------------------------------+ <-- arg_pointer_rtx
|
| callee-allocated save area
| for register varargs
|
+-------------------------------+
|
| local variables
|
+-------------------------------+ <-- frame_pointer_rtx
|
| callee-saved registers
|
+-------------------------------+
| LR'
+-------------------------------+
| FP'
P+-------------------------------+ <-- hard_frame_pointer_rtx
| dynamic allocation
+-------------------------------+
|
| outgoing stack arguments
|
+-------------------------------+ <-- stack_pointer_rtx
Shouldn't the return value be
return gen_frame_mem (DImode,
plus_constant (Pmode,
stack_pointer_rtx,
fp_offset
+ 2* UNITS_PER_WORD));
Or I just mis-understanding something ?
Hope someone could give me a tip.
It would be very helpful.
Thanks
Shiva Chen