2003-02-27 Andrew Cagney <cagney@redhat.com>

* gdbarch.sh (DEPRECATED_PUSH_DUMMY_FRAME): Procedure with
	predicate.  Replaces PUSH_DUMMY_FRAME.
	* gdbarch.h, gdbarch.c: Regnerate.
	* valops.c (hand_function_call): Update.  Call
	generic_push_dummy_frame directly.
	* vax-tdep.c (vax_gdbarch_init): Update.
	* sparc-tdep.c (sparc_gdbarch_init): Update.
	* ns32k-tdep.c (ns32k_gdbarch_init): Update.
	* m68k-tdep.c (m68k_gdbarch_init): Update.
	* hppa-tdep.c (hppa_gdbarch_init): Update.
	* alpha-tdep.c (alpha_gdbarch_init): Update.
	* config/sparc/tm-sparc.h (DEPRECATED_PUSH_DUMMY_FRAME): Update.
	* config/pa/tm-hppa.h (DEPRECATED_PUSH_DUMMY_FRAME): Update.
	* inferior.h (PUSH_DUMMY_FRAME): Delete definition.
	* xstormy16-tdep.c (xstormy16_gdbarch_init): Don't set
	push_dummy_frame to generic_push_dummy_frame.
	* v850-tdep.c (v850_gdbarch_init): Ditto.
	* sh-tdep.c (sh_gdbarch_init): Ditto.
	* s390-tdep.c (s390_gdbarch_init): Ditto.
	* rs6000-tdep.c (rs6000_gdbarch_init): Ditto.
	* mn10300-tdep.c (mn10300_gdbarch_init): Ditto.
	* mips-tdep.c (mips_gdbarch_init): Ditto.
	* mcore-tdep.c (mcore_gdbarch_init): Ditto.
	* m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
	* ia64-tdep.c (ia64_gdbarch_init): Ditto.
	* i386-tdep.c (i386_gdbarch_init): Ditto.
	* h8300-tdep.c (h8300_gdbarch_init): Ditto.
	* frv-tdep.c (frv_gdbarch_init): Ditto.
	* d10v-tdep.c (d10v_gdbarch_init): Ditto.
	* cris-tdep.c (cris_gdbarch_init): Ditto.
	* avr-tdep.c (avr_gdbarch_init): Ditto.
	* arm-tdep.c (arm_gdbarch_init): Ditto.
This commit is contained in:
Andrew Cagney
2003-02-27 17:48:48 +00:00
parent ef8038066b
commit f3824013e0
30 changed files with 159 additions and 78 deletions

View File

@@ -1300,10 +1300,34 @@ hand_function_call (struct value *function, int nargs, struct value **args)
inf_status = save_inferior_status (1);
inf_status_cleanup = make_cleanup_restore_inferior_status (inf_status);
/* PUSH_DUMMY_FRAME is responsible for saving the inferior registers
(and POP_FRAME for restoring them). (At least on most machines)
they are saved on the stack in the inferior. */
PUSH_DUMMY_FRAME;
if (DEPRECATED_PUSH_DUMMY_FRAME_P ())
{
/* DEPRECATED_PUSH_DUMMY_FRAME is responsible for saving the
inferior registers (and POP_FRAME for restoring them). (At
least on most machines) they are saved on the stack in the
inferior. */
DEPRECATED_PUSH_DUMMY_FRAME;
}
else
{
/* FIXME: cagney/2003-02-26: Step zero of this little tinker is
to extract the generic dummy frame code from the architecture
vector. Hence this direct call.
A follow-on change is to modify this interface so that it takes
thread OR frame OR tpid as a parameter, and returns a dummy
frame handle. The handle can then be used further down as a
parameter SAVE_DUMMY_FRAME_TOS. Hmm, thinking about it, since
everything is ment to be using generic dummy frames, why not
even use some of the dummy frame code to here - do a regcache
dup and then pass the duped regcache, along with all the other
stuff, at one single point.
In fact, you can even save the structure's return address in the
dummy frame and fix one of those nasty lost struct return edge
conditions. */
generic_push_dummy_frame ();
}
old_sp = read_sp ();