The attached patch replaces TARGET_WRITE_SP with DEPRECATED_DUMMY_WRITE_SP. Instead of providing this method, an architecture is expected to update the stack pointer as part of creating the fake call-frame (in push_dummy_call()).
To make DEPRECATED_DUMMY_WRITE_SP optional, all the existing targets (except the d10v) were updated to explicitly set this new method (gdb_mbuild.sh rules m'kay).
In addition, it alters the valops.c logic that decides if/when DEPRECATED_DUMMY_WRITE_SP() should be called:
stored the stack pointer (as part of creating the fake call
frame), and none of the code following that code adjusts the
stack-pointer value, the below call is entirely redundant. */
- if (!gdbarch_push_dummy_call_p (current_gdbarch))
- TARGET_WRITE_SP (sp);
+ if (DEPRECATED_DUMMY_WRITE_SP_P ())
+ DEPRECATED_DUMMY_WRITE_SP (sp);
if (SAVE_DUMMY_FRAME_TOS_P ())
SAVE_DUMMY_FRAME_TOS (sp);
By doing this, migrating to push_dummy_call() from push_arguments() is much easier. The SP code can be moved over separate to switching to push_dummy_call().
I'll look to commit in a few days,
Andrew
Index: doc/ChangeLog
2003-03-27 Andrew Cagney <cagney at redhat dot com>
* gdbint.texinfo (Target Architecture Definition): Remove
reference to TARGET_WRITE_SP.
2003-03-28 Andrew Cagney <cagney at redhat dot com>
* gdbarch.sh (DEPRECATED_DUMMY_WRITE_SP): Replace TARGET_WRITE_SP.
* gdbarch.h, gdbarch.c: Regenerate.
* arm-tdep.c (arm_gdbarch_init): Set deprecated_dummy_write_sp.
* v850-tdep.c (v850_gdbarch_init): Ditto.
* xstormy16-tdep.c (xstormy16_gdbarch_init): Ditto.
* mcore-tdep.c (mcore_gdbarch_init): Ditto.
* m68k-tdep.c (m68k_gdbarch_init): Ditto.
* i386-tdep.c (i386_gdbarch_init): Ditto.
* h8300-tdep.c (h8300_gdbarch_init): Ditto.
* cris-tdep.c (cris_gdbarch_init): Ditto.
* vax-tdep.c (vax_gdbarch_init): Ditto.
* s390-tdep.c (s390_gdbarch_init): Ditto.
* ns32k-tdep.c (ns32k_gdbarch_init): Ditto.
* mn10300-tdep.c (mn10300_gdbarch_init): Ditto.
* alpha-tdep.c (alpha_gdbarch_init): Ditto.
* sparc-tdep.c (sparc_push_dummy_frame, sparc_pop_frame): Update.
* config/sparc/tm-sp64.h (DEPRECATED_DUMMY_WRITE_SP): Update.
* config/pa/tm-hppa.h (DEPRECATED_DUMMY_WRITE_SP): Define.
* sparc-tdep.c (sparc_gdbarch_init): Update.
* sh-tdep.c (sh_gdbarch_init): Update.
* rs6000-tdep.c (rs6000_gdbarch_init): Update.
* mips-tdep.c (mips_gdbarch_init): Update.
* m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
* ia64-tdep.c (ia64_gdbarch_init): Update.
* frv-tdep.c (frv_gdbarch_init): Update.
* avr-tdep.c (avr_gdbarch_init): Update.
* valops.c (hand_function_call): Replace TARGET_WRITE_SP with
DEPRECATED_DUMMY_WRITE_SP. Call when the method is available,
instead of when push_dummy_call is not available.