This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch rfc] PUSH_ARGUMENTS() -> push_dummy_call()


Date: Mon, 24 Mar 2003 00:28:26 -0500
From: Andrew Cagney <ac131313 at redhat dot com>

The attached patch addes the architecture method push_dummy_call() as a
successor for the deprecated PUSH_ARGUMENTS(). PUSH_ARGUMENTS() is used
when doing an inferior function call.   The new method takes two
additional parameters:


The documentation patch is approved. Thanks!

I've checked this in.


Andrew


The attached patch addes the architecture method push_dummy_call() as a successor for the deprecated PUSH_ARGUMENTS(). PUSH_ARGUMENTS() is usedn when doing an inferior function call. The new method takes two additional parameters:

regcache:
An explict destination for all those register stores.

dummy_addr:
The address of the call dummy (which contains the return breakpoint) allowing the function to set the return address.

In addition to pushing the arguments, this new method is expected set both the struct return and return addresses, and return the final aligned top-of-stack address.

By requiring this, much of the convoluted and largely sparc centric logic that sits between the old PUSH_ARGUMENTS() and SAVE_DUMMY_FRAME_TOS() calls can be eliminated.  This opening the possability of eliminating the methods:
    PUSH_RETURN_ADDRESS()
    CALL_DUMMY_STACK_ADJUST
    STORE_STRUCT_RETURN
    write_sp
(expect more deprecating patches).

I'll look to commit this in a few days (it could take a bit to digest this one).

Andrew

PS: Looking at the comments, this one has been on the cards for ~7 years.



2003-03-23 Andrew Cagney <cagney at redhat dot com>

	* gdbarch.sh (DEPRECATED_PUSH_ARGUMENTS): Rename PUSH_ARGUMENTS.
	(push_dummy_call): New pure multi-arch replacement with gdbarch,
	regcache and dummy_addr parameters.
	* gdbarch.h, gdbarch.c: Re-generate.
	* valops.c (hand_function_call): Use gdbarch_push_dummy_call when
	available; assume it will handle stack alignment and return
	address issues.  Fall back to DEPRECATED_PUSH_ARGUMENTS and
	legacy_push_arguments.
	(legacy_push_arguments): Rename default_push_arguments.
	* value.h (legacy_push_arguments): Rename default_push_arguments.
	* i386-tdep.c (i386_push_arguments): Call legacy_push_arguments.
	* config/sparc/tm-sparc.h (DEPRECATED_PUSH_ARGUMENTS): Update.
	* config/sparc/tm-sp64.h (DEPRECATED_PUSH_ARGUMENTS): Update.
	* config/pa/tm-hppa.h (DEPRECATED_PUSH_ARGUMENTS): Update.
	* config/i386/tm-symmetry.h: Update.
	* 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.
	* hppa-tdep.c (hppa_gdbarch_init): Update.
	* h8300-tdep.c (h8300_gdbarch_init): Update.
	* frv-tdep.c (frv_gdbarch_init): Update.
	* d10v-tdep.c (d10v_gdbarch_init): Update.
	* cris-tdep.c (cris_gdbarch_init): Update.
	* avr-tdep.c (avr_gdbarch_init): Update.
	* arm-tdep.c (arm_gdbarch_init): Update.
	* arm-linux-tdep.c (arm_linux_init_abi): Update.
	* alpha-tdep.c (alpha_gdbarch_init): Update.

Index: doc/ChangeLog
2003-03-23  Andrew Cagney  <cagney at redhat dot com>

	* gdbint.texinfo (Target Architecture Definition): Replace
	PUSH_ARGUMENTS with push_dummy_call, add gdbarch, regcache and
	dummy_addr parameters.




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]