This deprecates the method PUSH_RETURN_ADDRESS. When this function was introduced, the intent was:
/* There are a number of targets now which actually don't write
any CALL_DUMMY instructions into the target, but instead just
save the machine state, push the arguments, and jump directly
to the callee function. Since this doesn't actually involve
executing a JSR/BSR instruction, the return address must be set
up by hand, either by pushing onto the stack or copying into a
return-address register as appropriate. Formerly this has been
done in PUSH_ARGUMENTS, but that's overloading its
functionality a bit, so I'm making it explicit to do it here. */
sp = DEPRECATED_PUSH_RETURN_ADDRESS (real_pc, sp);
As things currently stand, it has two problems:
- it was passed the wrong parameters
REAL_SP is the address of the function being called, and not the return address. Most architectures got around this by calling CALL_DUMMY_ADDRESS(), ignoring the parameters. Architectures with a dummy frame on the stack, however, couldn't get around it and instead ignored the method.
- it is missing a regcache parameter
All functions are getting explicit regcache (or similar) parameters. This will need an update.
Rather than trying to fix the problems, this deprecates the method and assumes that new architectures will, instead, implement this directly in push_dummy_call().
Andrew
2003-03-27 Andrew Cagney <cagney at redhat dot com>
* gdbarch.sh (DEPRECATED_PUSH_RETURN_ADDRESS): Replace
PUSH_RETURN_ADDRESS.
* gdbarch.h, gdbarch.c: Regenerate.
* xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
* x86-64-tdep.c (x86_64_init_abi): Update.
* v850-tdep.c (v850_gdbarch_init): Update.
* sparc-tdep.c (sparc_gdbarch_init): Update.
* sh-tdep.c (sh_gdbarch_init): Update.
* s390-tdep.c (s390_gdbarch_init): Update.
* rs6000-tdep.c (rs6000_gdbarch_init): Update.
* mn10300-tdep.c (mn10300_gdbarch_init): Update.
* mips-tdep.c (mips_gdbarch_init): Update.
* mcore-tdep.c (mcore_gdbarch_init): Update.
* m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
* ia64-tdep.c (ia64_gdbarch_init): Update.
* i386-tdep.c (i386_gdbarch_init): Update.
* h8300-tdep.c (h8300_gdbarch_init): Update.
* frv-tdep.c (frv_gdbarch_init): Update.
* cris-tdep.c (cris_gdbarch_init): Update.
* avr-tdep.c (avr_gdbarch_init): Update.
* arm-tdep.c (arm_gdbarch_init): Update.
* valops.c (hand_function_call): Update.