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()


On Mon, Mar 24, 2003 at 12:28:26AM -0500, Andrew Cagney wrote:
> Hello,
> 
> 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).

While you're rearranging this code, I'd like your thoughts on
something.  I was working on an old project last week - "catch catch"
and "catch throw".  A basic implementation is easy.  A more interesting
implementation, however, requires being able to extract the arguments
to __cxa_throw (one of the arguments is the object being thrown,
another is the typeinfo for it).

This requires being able to figure out where a function which takes two
pointers expects them to be.  __cxa_throw will generally not have any
debug info.  This logic already exists in the push argument code.

Is it too much overhead/PITA to restructure it so that we can use that
information?  If so I'll probably need to add a new architecture method
to get ths sort of information.

> 
> 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: valops.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/valops.c,v
> retrieving revision 1.95
> diff -u -r1.95 valops.c
> --- valops.c	24 Mar 2003 03:54:50 -0000	1.95
> +++ valops.c	24 Mar 2003 04:32:05 -0000
> @@ -1079,8 +1079,8 @@
>  }
>  
>  CORE_ADDR
> -default_push_arguments (int nargs, struct value **args, CORE_ADDR sp,
> -			int struct_return, CORE_ADDR struct_addr)
> +legacy_push_arguments (int nargs, struct value **args, CORE_ADDR sp,
> +		       int struct_return, CORE_ADDR struct_addr)
>  {
>    /* ASSERT ( !struct_return); */
>    int i;
> @@ -1264,6 +1264,7 @@
>    static ULONGEST *dummy;
>    int sizeof_dummy1;
>    char *dummy1;
> +  CORE_ADDR dummy_addr;
>    CORE_ADDR old_sp;
>    struct type *value_type;
>    unsigned char struct_return;
> @@ -1428,21 +1429,25 @@
>    real_pc = start_sp;
>  #endif
>  
> -  if (CALL_DUMMY_LOCATION == ON_STACK)
> +  switch (CALL_DUMMY_LOCATION)
>      {
> +    case ON_STACK:
> +      dummy_addr = start_sp;
>        write_memory (start_sp, (char *) dummy1, sizeof_dummy1);
>        if (DEPRECATED_USE_GENERIC_DUMMY_FRAMES)
>  	generic_save_call_dummy_addr (start_sp, start_sp + sizeof_dummy1);
> -    }
> -
> -  if (CALL_DUMMY_LOCATION == AT_ENTRY_POINT)
> -    {
> +      break;
> +    case AT_ENTRY_POINT:
>        real_pc = funaddr;
> +      dummy_addr = CALL_DUMMY_ADDRESS ();
>        if (DEPRECATED_USE_GENERIC_DUMMY_FRAMES)
>  	/* NOTE: cagney/2002-04-13: The entry point is going to be
>             modified with a single breakpoint.  */
>  	generic_save_call_dummy_addr (CALL_DUMMY_ADDRESS (),
>  				      CALL_DUMMY_ADDRESS () + 1);
> +      break;
> +    default:
> +      internal_error (__FILE__, __LINE__, "bad switch");
>      }
>  
>  #ifdef lint
> @@ -1569,9 +1574,8 @@
>      {
>        int len = TYPE_LENGTH (value_type);
>        if (STACK_ALIGN_P ())
> -	/* MVS 11/22/96: I think at least some of this stack_align
> -	   code is really broken.  Better to let PUSH_ARGUMENTS adjust
> -	   the stack in a target-defined manner.  */
> +	/* NOTE: cagney/2003-03-22: Should rely on frame align, rather
> +           than stack align to force the alignment of the stack.  */
>  	len = STACK_ALIGN (len);
>        if (INNER_THAN (1, 2))
>  	{
> @@ -1617,9 +1621,29 @@
>  	}
>      }
>  
> -  sp = PUSH_ARGUMENTS (nargs, args, sp, struct_return, struct_addr);
> +  /* Create the dummy stack frame.  Pass in the call dummy address as,
> +     presumably, the ABI code knows where, in the call dummy, the
> +     return address should be pointed.  */
> +  if (gdbarch_push_dummy_call_p (current_gdbarch))
> +    /* When there is no push_dummy_call method, should this code
> +       simply error out.  That would the implementation of this method
> +       for all ABIs (which is probably a good thing).  */
> +    sp = gdbarch_push_dummy_call (current_gdbarch, current_regcache,
> +				  dummy_addr, nargs, args, sp, struct_return,
> +				  struct_addr);
> +  else  if (DEPRECATED_PUSH_ARGUMENTS_P ())
> +    /* Keep old targets working.  */
> +    sp = DEPRECATED_PUSH_ARGUMENTS (nargs, args, sp, struct_return,
> +				    struct_addr);
> +  else
> +    sp = legacy_push_arguments (nargs, args, sp, struct_return, struct_addr);
>  
> -  if (PUSH_RETURN_ADDRESS_P ())
> +  /* NOTE: cagney/2003-03-23: Disable this code when there is a
> +     push_dummy_call() method.  That method, which is responsible for
> +     constructing a complete call frame, will have already stored the
> +     return address.  */
> +  if (!gdbarch_push_dummy_call_p (current_gdbarch)
> +      && PUSH_RETURN_ADDRESS_P ())
>      /* for targets that use no CALL_DUMMY */
>      /* There are a number of targets now which actually don't write
>         any CALL_DUMMY instructions into the target, but instead just
> @@ -1630,9 +1654,18 @@
>         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.  */
> +    /* NOTE: cagney/2003-03-23: The REAL_PC parameter, below, is
> +       misleading.  It contains the address of the function being
> +       called, and not the return address (in the call dummy that
> +       contains the breakpoint).  */
>      sp = PUSH_RETURN_ADDRESS (real_pc, sp);
>  
> -  if (STACK_ALIGN_P () && !INNER_THAN (1, 2))
> +  /* NOTE: cagney/2003-03-23: Diable this code when there is a
> +     push_dummy_call() method.  Since that method will have already
> +     handled any alignment issues, the code below is entirely
> +     redundant.  */
> +  if (!gdbarch_push_dummy_call_p (current_gdbarch)
> +      && STACK_ALIGN_P () && !INNER_THAN (1, 2))
>      {
>        /* If stack grows up, we must leave a hole at the bottom, note
>           that sp already has been advanced for the arguments!  */
> @@ -1641,12 +1674,17 @@
>        sp = STACK_ALIGN (sp);
>      }
>  
> -/* XXX This seems wrong.  For stacks that grow down we shouldn't do
> -   anything here!  */
> +  /* XXX This seems wrong.  For stacks that grow down we shouldn't do
> +     anything here!  */
>    /* MVS 11/22/96: I think at least some of this stack_align code is
>       really broken.  Better to let PUSH_ARGUMENTS adjust the stack in
>       a target-defined manner.  */
> -  if (CALL_DUMMY_STACK_ADJUST_P)
> +  /* NOTE: cagney/2003-03-23: Diable this code when there is a
> +     push_dummy_call() method.  Since that method will have already
> +     handled any alignment issues, the code below is entirely
> +     redundant.  */
> +  if (!gdbarch_push_dummy_call_p (current_gdbarch)
> +      && CALL_DUMMY_STACK_ADJUST_P)
>      if (INNER_THAN (1, 2))
>        {
>  	/* stack grows downward */
> @@ -1662,14 +1700,25 @@
>       Also note that on some machines (like the sparc) pcc uses a
>       convention like gcc's.  */
>  
> -  if (struct_return)
> +  /* NOTE: cagney/2003-03-23: Diable this code when there is a
> +     push_dummy_call() method.  Since that method will have already
> +     stored the struct return address, the below call is entirely
> +     redundant.  */
> +  if (!gdbarch_push_dummy_call_p (current_gdbarch)
> +      && struct_return)
>      STORE_STRUCT_RETURN (struct_addr, sp);
>  
>    /* Write the stack pointer.  This is here because the statements above
>       might fool with it.  On SPARC, this write also stores the register
>       window into the right place in the new stack frame, which otherwise
>       wouldn't happen.  (See store_inferior_registers in sparc-nat.c.)  */
> -  write_sp (sp);
> +  /* NOTE: cagney/2003-03-23: Disable this code when there is a
> +     push_dummy_call() method.  Since that method will have already
> +     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))
> +    write_sp (sp);
>  
>    if (SAVE_DUMMY_FRAME_TOS_P ())
>      SAVE_DUMMY_FRAME_TOS (sp);
> Index: alpha-tdep.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/alpha-tdep.c,v
> retrieving revision 1.68
> diff -u -r1.68 alpha-tdep.c
> --- alpha-tdep.c	24 Mar 2003 03:54:46 -0000	1.68
> +++ alpha-tdep.c	24 Mar 2003 04:29:13 -0000
> @@ -68,7 +68,6 @@
>  static gdbarch_skip_prologue_ftype alpha_skip_prologue;
>  static gdbarch_saved_pc_after_call_ftype alpha_saved_pc_after_call;
>  
> -static gdbarch_push_arguments_ftype alpha_push_arguments;
>  static gdbarch_fix_call_dummy_ftype alpha_fix_call_dummy;
>  
>  static gdbarch_get_longjmp_target_ftype alpha_get_longjmp_target;
> @@ -1854,7 +1853,7 @@
>    /* Settings for calling functions in the inferior.  */
>    set_gdbarch_deprecated_use_generic_dummy_frames (gdbarch, 0);
>    set_gdbarch_call_dummy_length (gdbarch, 0);
> -  set_gdbarch_push_arguments (gdbarch, alpha_push_arguments);
> +  set_gdbarch_deprecated_push_arguments (gdbarch, alpha_push_arguments);
>    set_gdbarch_deprecated_pop_frame (gdbarch, alpha_pop_frame);
>  
>    /* On the Alpha, the call dummy code is never copied to user space,
> Index: arm-linux-tdep.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/arm-linux-tdep.c,v
> retrieving revision 1.27
> diff -u -r1.27 arm-linux-tdep.c
> --- arm-linux-tdep.c	22 Mar 2003 20:39:20 -0000	1.27
> +++ arm-linux-tdep.c	24 Mar 2003 04:29:15 -0000
> @@ -536,7 +536,7 @@
>  
>    /* The following two overrides shouldn't be needed.  */
>    set_gdbarch_deprecated_extract_return_value (gdbarch, arm_linux_extract_return_value);
> -  set_gdbarch_push_arguments (gdbarch, arm_linux_push_arguments);
> +  set_gdbarch_deprecated_push_arguments (gdbarch, arm_linux_push_arguments);
>  
>    /* Shared library handling.  */
>    set_gdbarch_in_solib_call_trampoline (gdbarch, in_plt_section);
> Index: arm-tdep.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/arm-tdep.c,v
> retrieving revision 1.112
> diff -u -r1.112 arm-tdep.c
> --- arm-tdep.c	24 Mar 2003 03:54:47 -0000	1.112
> +++ arm-tdep.c	24 Mar 2003 04:29:33 -0000
> @@ -2931,7 +2931,7 @@
>    set_gdbarch_call_dummy_address (gdbarch, entry_point_address);
>    set_gdbarch_push_return_address (gdbarch, arm_push_return_address);
>  
> -  set_gdbarch_push_arguments (gdbarch, arm_push_arguments);
> +  set_gdbarch_deprecated_push_arguments (gdbarch, arm_push_arguments);
>  
>    /* Frame handling.  */
>    set_gdbarch_deprecated_frame_chain_valid (gdbarch, arm_frame_chain_valid);
> Index: avr-tdep.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/avr-tdep.c,v
> retrieving revision 1.32
> diff -u -r1.32 avr-tdep.c
> --- avr-tdep.c	24 Mar 2003 03:54:47 -0000	1.32
> +++ avr-tdep.c	24 Mar 2003 04:29:36 -0000
> @@ -1181,7 +1181,7 @@
>  
>    set_gdbarch_address_to_pointer (gdbarch, avr_address_to_pointer);
>    set_gdbarch_pointer_to_address (gdbarch, avr_pointer_to_address);
> -  set_gdbarch_push_arguments (gdbarch, avr_push_arguments);
> +  set_gdbarch_deprecated_push_arguments (gdbarch, avr_push_arguments);
>    set_gdbarch_push_return_address (gdbarch, avr_push_return_address);
>    set_gdbarch_deprecated_pop_frame (gdbarch, avr_pop_frame);
>  
> Index: cris-tdep.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/cris-tdep.c,v
> retrieving revision 1.54
> diff -u -r1.54 cris-tdep.c
> --- cris-tdep.c	24 Mar 2003 03:54:47 -0000	1.54
> +++ cris-tdep.c	24 Mar 2003 04:29:41 -0000
> @@ -4154,7 +4154,7 @@
>    if (tdep->cris_abi == CRIS_ABI_ORIGINAL)
>      {
>        set_gdbarch_double_bit (gdbarch, 32);
> -      set_gdbarch_push_arguments (gdbarch, cris_abi_original_push_arguments);
> +      set_gdbarch_deprecated_push_arguments (gdbarch, cris_abi_original_push_arguments);
>        set_gdbarch_deprecated_store_return_value (gdbarch, 
>                                        cris_abi_original_store_return_value);
>        set_gdbarch_deprecated_extract_return_value 
> @@ -4165,7 +4165,7 @@
>    else if (tdep->cris_abi == CRIS_ABI_V2)
>      {
>        set_gdbarch_double_bit (gdbarch, 64);
> -      set_gdbarch_push_arguments (gdbarch, cris_abi_v2_push_arguments);
> +      set_gdbarch_deprecated_push_arguments (gdbarch, cris_abi_v2_push_arguments);
>        set_gdbarch_deprecated_store_return_value (gdbarch, cris_abi_v2_store_return_value);
>        set_gdbarch_deprecated_extract_return_value
>  	(gdbarch, cris_abi_v2_extract_return_value);
> Index: d10v-tdep.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/d10v-tdep.c,v
> retrieving revision 1.87
> diff -u -r1.87 d10v-tdep.c
> --- d10v-tdep.c	17 Mar 2003 14:23:49 -0000	1.87
> +++ d10v-tdep.c	24 Mar 2003 04:29:52 -0000
> @@ -1704,7 +1704,7 @@
>    set_gdbarch_fix_call_dummy (gdbarch, generic_fix_call_dummy);
>  
>    set_gdbarch_extract_return_value (gdbarch, d10v_extract_return_value);
> -  set_gdbarch_push_arguments (gdbarch, d10v_push_arguments);
> +  set_gdbarch_deprecated_push_arguments (gdbarch, d10v_push_arguments);
>    set_gdbarch_push_return_address (gdbarch, d10v_push_return_address);
>  
>    set_gdbarch_store_struct_return (gdbarch, d10v_store_struct_return);
> Index: frv-tdep.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/frv-tdep.c,v
> retrieving revision 1.21
> diff -u -r1.21 frv-tdep.c
> --- frv-tdep.c	24 Mar 2003 03:54:47 -0000	1.21
> +++ frv-tdep.c	24 Mar 2003 04:29:54 -0000
> @@ -1091,7 +1091,7 @@
>  
>    /* Settings for calling functions in the inferior.  */
>    set_gdbarch_call_dummy_length (gdbarch, 0);
> -  set_gdbarch_push_arguments (gdbarch, frv_push_arguments);
> +  set_gdbarch_deprecated_push_arguments (gdbarch, frv_push_arguments);
>    set_gdbarch_push_return_address (gdbarch, frv_push_return_address);
>    set_gdbarch_deprecated_pop_frame (gdbarch, frv_pop_frame);
>  
> Index: gdbarch.sh
> ===================================================================
> RCS file: /cvs/src/src/gdb/gdbarch.sh,v
> retrieving revision 1.207
> diff -u -r1.207 gdbarch.sh
> --- gdbarch.sh	24 Mar 2003 03:54:48 -0000	1.207
> +++ gdbarch.sh	24 Mar 2003 04:30:02 -0000
> @@ -556,7 +556,9 @@
>  F:2:INTEGER_TO_ADDRESS:CORE_ADDR:integer_to_address:struct type *type, void *buf:type, buf
>  #
>  f:2:RETURN_VALUE_ON_STACK:int:return_value_on_stack:struct type *type:type:::generic_return_value_on_stack_not::0
> -f:2:PUSH_ARGUMENTS:CORE_ADDR:push_arguments:int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr:nargs, args, sp, struct_return, struct_addr:::default_push_arguments::0
> +# Replaced by PUSH_DUMMY_CALL
> +F:2:DEPRECATED_PUSH_ARGUMENTS:CORE_ADDR:deprecated_push_arguments:int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr:nargs, args, sp, struct_return, struct_addr
> +M::PUSH_DUMMY_CALL:CORE_ADDR:push_dummy_call:struct regcache *regcache, CORE_ADDR dummy_addr, int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr:regcache, dummy_addr, nargs, args, sp, struct_return, struct_addr
>  F:2:DEPRECATED_PUSH_DUMMY_FRAME:void:deprecated_push_dummy_frame:void:-:::0
>  F:2:PUSH_RETURN_ADDRESS:CORE_ADDR:push_return_address:CORE_ADDR pc, CORE_ADDR sp:pc, sp:::0
>  F:2:DEPRECATED_POP_FRAME:void:deprecated_pop_frame:void:-:::0
> Index: h8300-tdep.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/h8300-tdep.c,v
> retrieving revision 1.43
> diff -u -r1.43 h8300-tdep.c
> --- h8300-tdep.c	24 Mar 2003 03:54:48 -0000	1.43
> +++ h8300-tdep.c	24 Mar 2003 04:30:06 -0000
> @@ -1150,7 +1150,7 @@
>     * These values and methods are used when gdb calls a target function.  */
>    set_gdbarch_push_return_address (gdbarch, h8300_push_return_address);
>    set_gdbarch_deprecated_extract_return_value (gdbarch, h8300_extract_return_value);
> -  set_gdbarch_push_arguments (gdbarch, h8300_push_arguments);
> +  set_gdbarch_deprecated_push_arguments (gdbarch, h8300_push_arguments);
>    set_gdbarch_deprecated_pop_frame (gdbarch, h8300_pop_frame);
>    set_gdbarch_store_struct_return (gdbarch, h8300_store_struct_return);
>    set_gdbarch_deprecated_store_return_value (gdbarch, h8300_store_return_value);
> Index: hppa-tdep.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/hppa-tdep.c,v
> retrieving revision 1.60
> diff -u -r1.60 hppa-tdep.c
> --- hppa-tdep.c	24 Mar 2003 03:54:48 -0000	1.60
> +++ hppa-tdep.c	24 Mar 2003 04:30:13 -0000
> @@ -5006,7 +5006,7 @@
>    set_gdbarch_call_dummy_length (gdbarch, INSTRUCTION_SIZE * 28);
>    set_gdbarch_call_dummy_start_offset (gdbarch, 0);
>    /* set_gdbarch_fix_call_dummy (gdbarch, hppa_fix_call_dummy); */
> -  set_gdbarch_push_arguments (gdbarch, hppa_push_arguments);
> +  set_gdbarch_deprecated_push_arguments (gdbarch, hppa_push_arguments);
>    set_gdbarch_smash_text_address (gdbarch, hppa_smash_text_address);
>    set_gdbarch_believe_pcc_promotion (gdbarch, 1);
>    set_gdbarch_read_pc (gdbarch, hppa_target_read_pc);
> Index: i386-tdep.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/i386-tdep.c,v
> retrieving revision 1.120
> diff -u -r1.120 i386-tdep.c
> --- i386-tdep.c	24 Mar 2003 03:54:48 -0000	1.120
> +++ i386-tdep.c	24 Mar 2003 04:30:14 -0000
> @@ -925,7 +925,7 @@
>  i386_push_arguments (int nargs, struct value **args, CORE_ADDR sp,
>  		     int struct_return, CORE_ADDR struct_addr)
>  {
> -  sp = default_push_arguments (nargs, args, sp, struct_return, struct_addr);
> +  sp = legacy_push_arguments (nargs, args, sp, struct_return, struct_addr);
>    
>    if (struct_return)
>      {
> @@ -1587,7 +1587,7 @@
>    set_gdbarch_parm_boundary (gdbarch, 32);
>  
>    set_gdbarch_extract_return_value (gdbarch, i386_extract_return_value);
> -  set_gdbarch_push_arguments (gdbarch, i386_push_arguments);
> +  set_gdbarch_deprecated_push_arguments (gdbarch, i386_push_arguments);
>    set_gdbarch_push_return_address (gdbarch, i386_push_return_address);
>    set_gdbarch_deprecated_pop_frame (gdbarch, i386_pop_frame);
>    set_gdbarch_store_struct_return (gdbarch, i386_store_struct_return);
> Index: ia64-tdep.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/ia64-tdep.c,v
> retrieving revision 1.56
> diff -u -r1.56 ia64-tdep.c
> --- ia64-tdep.c	24 Mar 2003 03:54:48 -0000	1.56
> +++ ia64-tdep.c	24 Mar 2003 04:30:20 -0000
> @@ -97,7 +97,6 @@
>  static gdbarch_use_struct_convention_ftype ia64_use_struct_convention;
>  static gdbarch_frameless_function_invocation_ftype ia64_frameless_function_invocation;
>  static gdbarch_store_struct_return_ftype ia64_store_struct_return;
> -static gdbarch_push_arguments_ftype ia64_push_arguments;
>  static gdbarch_push_return_address_ftype ia64_push_return_address;
>  static gdbarch_saved_pc_after_call_ftype ia64_saved_pc_after_call;
>  static void ia64_pop_frame_regular (struct frame_info *frame);
> @@ -2217,7 +2216,7 @@
>  
>    /* Settings for calling functions in the inferior.  */
>    set_gdbarch_call_dummy_length (gdbarch, 0);
> -  set_gdbarch_push_arguments (gdbarch, ia64_push_arguments);
> +  set_gdbarch_deprecated_push_arguments (gdbarch, ia64_push_arguments);
>    set_gdbarch_push_return_address (gdbarch, ia64_push_return_address);
>    set_gdbarch_deprecated_pop_frame (gdbarch, ia64_pop_frame);
>  
> Index: m68hc11-tdep.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/m68hc11-tdep.c,v
> retrieving revision 1.53
> diff -u -r1.53 m68hc11-tdep.c
> --- m68hc11-tdep.c	24 Mar 2003 03:54:48 -0000	1.53
> +++ m68hc11-tdep.c	24 Mar 2003 04:30:29 -0000
> @@ -1393,7 +1393,7 @@
>    set_gdbarch_deprecated_get_saved_register (gdbarch, deprecated_generic_get_saved_register);
>    set_gdbarch_fix_call_dummy (gdbarch, generic_fix_call_dummy);
>    set_gdbarch_deprecated_extract_return_value (gdbarch, m68hc11_extract_return_value);
> -  set_gdbarch_push_arguments (gdbarch, m68hc11_push_arguments);
> +  set_gdbarch_deprecated_push_arguments (gdbarch, m68hc11_push_arguments);
>    set_gdbarch_push_return_address (gdbarch, m68hc11_push_return_address);
>    set_gdbarch_return_value_on_stack (gdbarch, m68hc11_return_value_on_stack);
>  
> Index: mcore-tdep.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/mcore-tdep.c,v
> retrieving revision 1.45
> diff -u -r1.45 mcore-tdep.c
> --- mcore-tdep.c	24 Mar 2003 03:54:48 -0000	1.45
> +++ mcore-tdep.c	24 Mar 2003 04:30:29 -0000
> @@ -1131,7 +1131,7 @@
>    set_gdbarch_decr_pc_after_break (gdbarch, 0);
>    set_gdbarch_breakpoint_from_pc (gdbarch, mcore_breakpoint_from_pc);
>    set_gdbarch_push_return_address (gdbarch, mcore_push_return_address);
> -  set_gdbarch_push_arguments (gdbarch, mcore_push_arguments);
> +  set_gdbarch_deprecated_push_arguments (gdbarch, mcore_push_arguments);
>    set_gdbarch_call_dummy_length (gdbarch, 0);
>  
>    /* Frames:  */
> Index: mips-tdep.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/mips-tdep.c,v
> retrieving revision 1.175
> diff -u -r1.175 mips-tdep.c
> --- mips-tdep.c	24 Mar 2003 03:54:48 -0000	1.175
> +++ mips-tdep.c	24 Mar 2003 04:30:41 -0000
> @@ -5806,7 +5806,7 @@
>    switch (mips_abi)
>      {
>      case MIPS_ABI_O32:
> -      set_gdbarch_push_arguments (gdbarch, mips_o32_push_arguments);
> +      set_gdbarch_deprecated_push_arguments (gdbarch, mips_o32_push_arguments);
>        set_gdbarch_deprecated_store_return_value (gdbarch, mips_o32_store_return_value);
>        set_gdbarch_extract_return_value (gdbarch, mips_o32_extract_return_value);
>        tdep->mips_default_saved_regsize = 4;
> @@ -5825,7 +5825,7 @@
>  					 mips_o32_use_struct_convention);
>        break;
>      case MIPS_ABI_O64:
> -      set_gdbarch_push_arguments (gdbarch, mips_o64_push_arguments);
> +      set_gdbarch_deprecated_push_arguments (gdbarch, mips_o64_push_arguments);
>        set_gdbarch_deprecated_store_return_value (gdbarch, mips_o64_store_return_value);
>        set_gdbarch_deprecated_extract_return_value (gdbarch, mips_o64_extract_return_value);
>        tdep->mips_default_saved_regsize = 8;
> @@ -5844,7 +5844,7 @@
>  					 mips_o32_use_struct_convention);
>        break;
>      case MIPS_ABI_EABI32:
> -      set_gdbarch_push_arguments (gdbarch, mips_eabi_push_arguments);
> +      set_gdbarch_deprecated_push_arguments (gdbarch, mips_eabi_push_arguments);
>        set_gdbarch_deprecated_store_return_value (gdbarch, mips_eabi_store_return_value);
>        set_gdbarch_deprecated_extract_return_value (gdbarch, mips_eabi_extract_return_value);
>        tdep->mips_default_saved_regsize = 4;
> @@ -5863,7 +5863,7 @@
>  					 mips_eabi_use_struct_convention);
>        break;
>      case MIPS_ABI_EABI64:
> -      set_gdbarch_push_arguments (gdbarch, mips_eabi_push_arguments);
> +      set_gdbarch_deprecated_push_arguments (gdbarch, mips_eabi_push_arguments);
>        set_gdbarch_deprecated_store_return_value (gdbarch, mips_eabi_store_return_value);
>        set_gdbarch_deprecated_extract_return_value (gdbarch, mips_eabi_extract_return_value);
>        tdep->mips_default_saved_regsize = 8;
> @@ -5882,7 +5882,7 @@
>  					 mips_eabi_use_struct_convention);
>        break;
>      case MIPS_ABI_N32:
> -      set_gdbarch_push_arguments (gdbarch, mips_n32n64_push_arguments);
> +      set_gdbarch_deprecated_push_arguments (gdbarch, mips_n32n64_push_arguments);
>        set_gdbarch_deprecated_store_return_value (gdbarch, mips_n32n64_store_return_value);
>        set_gdbarch_extract_return_value (gdbarch, mips_n32n64_extract_return_value);
>        tdep->mips_default_saved_regsize = 8;
> @@ -5913,7 +5913,7 @@
>  				       mips_n32n64_reg_struct_has_addr);
>        break;
>      case MIPS_ABI_N64:
> -      set_gdbarch_push_arguments (gdbarch, mips_n32n64_push_arguments);
> +      set_gdbarch_deprecated_push_arguments (gdbarch, mips_n32n64_push_arguments);
>        set_gdbarch_deprecated_store_return_value (gdbarch, mips_n32n64_store_return_value);
>        set_gdbarch_extract_return_value (gdbarch, mips_n32n64_extract_return_value);
>        tdep->mips_default_saved_regsize = 8;
> Index: mn10300-tdep.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/mn10300-tdep.c,v
> retrieving revision 1.60
> diff -u -r1.60 mn10300-tdep.c
> --- mn10300-tdep.c	24 Mar 2003 03:54:48 -0000	1.60
> +++ mn10300-tdep.c	24 Mar 2003 04:30:41 -0000
> @@ -1197,7 +1197,7 @@
>    set_gdbarch_fix_call_dummy (gdbarch, generic_fix_call_dummy);
>    set_gdbarch_call_dummy_start_offset (gdbarch, 0);
>    set_gdbarch_deprecated_pc_in_call_dummy (gdbarch, deprecated_pc_in_call_dummy_at_entry_point);
> -  set_gdbarch_push_arguments (gdbarch, mn10300_push_arguments);
> +  set_gdbarch_deprecated_push_arguments (gdbarch, mn10300_push_arguments);
>    set_gdbarch_reg_struct_has_addr (gdbarch, mn10300_reg_struct_has_addr);
>    set_gdbarch_push_return_address (gdbarch, mn10300_push_return_address);
>    set_gdbarch_save_dummy_frame_tos (gdbarch, generic_save_dummy_frame_tos);
> Index: rs6000-tdep.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/rs6000-tdep.c,v
> retrieving revision 1.113
> diff -u -r1.113 rs6000-tdep.c
> --- rs6000-tdep.c	24 Mar 2003 03:54:48 -0000	1.113
> +++ rs6000-tdep.c	24 Mar 2003 04:30:59 -0000
> @@ -2925,9 +2925,9 @@
>       64-bit code.  At some point in the future, this matter needs to be
>       revisited.  */
>    if (sysv_abi && wordsize == 4)
> -    set_gdbarch_push_arguments (gdbarch, ppc_sysv_abi_push_arguments);
> +    set_gdbarch_deprecated_push_arguments (gdbarch, ppc_sysv_abi_push_arguments);
>    else
> -    set_gdbarch_push_arguments (gdbarch, rs6000_push_arguments);
> +    set_gdbarch_deprecated_push_arguments (gdbarch, rs6000_push_arguments);
>  
>    set_gdbarch_store_struct_return (gdbarch, rs6000_store_struct_return);
>    set_gdbarch_extract_struct_value_address (gdbarch, rs6000_extract_struct_value_address);
> Index: s390-tdep.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/s390-tdep.c,v
> retrieving revision 1.78
> diff -u -r1.78 s390-tdep.c
> --- s390-tdep.c	24 Mar 2003 03:54:48 -0000	1.78
> +++ s390-tdep.c	24 Mar 2003 04:31:01 -0000
> @@ -1866,7 +1866,7 @@
>    set_gdbarch_call_dummy_address (gdbarch, entry_point_address);
>    set_gdbarch_call_dummy_start_offset (gdbarch, 0);
>    set_gdbarch_deprecated_pc_in_call_dummy (gdbarch, deprecated_pc_in_call_dummy_at_entry_point);
> -  set_gdbarch_push_arguments (gdbarch, s390_push_arguments);
> +  set_gdbarch_deprecated_push_arguments (gdbarch, s390_push_arguments);
>    set_gdbarch_save_dummy_frame_tos (gdbarch, generic_save_dummy_frame_tos);
>    set_gdbarch_call_dummy_breakpoint_offset_p (gdbarch, 1);
>    set_gdbarch_call_dummy_breakpoint_offset (gdbarch, 0);
> Index: sh-tdep.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/sh-tdep.c,v
> retrieving revision 1.104
> diff -u -r1.104 sh-tdep.c
> --- sh-tdep.c	24 Mar 2003 03:54:48 -0000	1.104
> +++ sh-tdep.c	24 Mar 2003 04:31:04 -0000
> @@ -4375,7 +4375,7 @@
>    set_gdbarch_deprecated_get_saved_register (gdbarch, deprecated_generic_get_saved_register);
>    set_gdbarch_deprecated_init_extra_frame_info (gdbarch, sh_init_extra_frame_info);
>    set_gdbarch_deprecated_extract_return_value (gdbarch, sh_extract_return_value);
> -  set_gdbarch_push_arguments (gdbarch, sh_push_arguments);
> +  set_gdbarch_deprecated_push_arguments (gdbarch, sh_push_arguments);
>    set_gdbarch_store_struct_return (gdbarch, sh_store_struct_return);
>    set_gdbarch_use_struct_convention (gdbarch, sh_use_struct_convention);
>    set_gdbarch_deprecated_extract_struct_value_address (gdbarch, sh_extract_struct_value_address);
> @@ -4617,7 +4617,7 @@
>        set_gdbarch_deprecated_frame_chain (gdbarch, sh64_frame_chain);
>        set_gdbarch_deprecated_get_saved_register (gdbarch, sh64_get_saved_register);
>        set_gdbarch_deprecated_extract_return_value (gdbarch, sh64_extract_return_value);
> -      set_gdbarch_push_arguments (gdbarch, sh64_push_arguments);
> +      set_gdbarch_deprecated_push_arguments (gdbarch, sh64_push_arguments);
>        /*set_gdbarch_store_struct_return (gdbarch, sh64_store_struct_return);*/
>        set_gdbarch_deprecated_extract_struct_value_address (gdbarch, sh64_extract_struct_value_address);
>        set_gdbarch_use_struct_convention (gdbarch, sh64_use_struct_convention);
> Index: sparc-tdep.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/sparc-tdep.c,v
> retrieving revision 1.74
> diff -u -r1.74 sparc-tdep.c
> --- sparc-tdep.c	24 Mar 2003 03:54:49 -0000	1.74
> +++ sparc-tdep.c	24 Mar 2003 04:31:31 -0000
> @@ -3260,7 +3260,7 @@
>        set_gdbarch_npc_regnum (gdbarch, SPARC32_NPC_REGNUM);
>        set_gdbarch_pc_regnum (gdbarch, SPARC32_PC_REGNUM);
>        set_gdbarch_ptr_bit (gdbarch, 4 * TARGET_CHAR_BIT);
> -      set_gdbarch_push_arguments (gdbarch, sparc32_push_arguments);
> +      set_gdbarch_deprecated_push_arguments (gdbarch, sparc32_push_arguments);
>        set_gdbarch_read_fp (gdbarch, generic_target_read_fp);
>        set_gdbarch_read_sp (gdbarch, generic_target_read_sp);
>  
> @@ -3315,7 +3315,7 @@
>        set_gdbarch_npc_regnum (gdbarch, SPARC64_NPC_REGNUM);
>        set_gdbarch_pc_regnum (gdbarch, SPARC64_PC_REGNUM);
>        set_gdbarch_ptr_bit (gdbarch, 8 * TARGET_CHAR_BIT);
> -      set_gdbarch_push_arguments (gdbarch, sparc64_push_arguments);
> +      set_gdbarch_deprecated_push_arguments (gdbarch, sparc64_push_arguments);
>        /* NOTE different for at_entry */
>        set_gdbarch_read_fp (gdbarch, sparc64_read_fp);
>        set_gdbarch_read_sp (gdbarch, sparc64_read_sp);
> Index: v850-tdep.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/v850-tdep.c,v
> retrieving revision 1.44
> diff -u -r1.44 v850-tdep.c
> --- v850-tdep.c	24 Mar 2003 03:54:49 -0000	1.44
> +++ v850-tdep.c	24 Mar 2003 04:31:36 -0000
> @@ -1270,7 +1270,7 @@
>     * These values and methods are used when gdb calls a target function.  */
>    set_gdbarch_push_return_address (gdbarch, v850_push_return_address);
>    set_gdbarch_deprecated_extract_return_value (gdbarch, v850_extract_return_value);
> -  set_gdbarch_push_arguments (gdbarch, v850_push_arguments);
> +  set_gdbarch_deprecated_push_arguments (gdbarch, v850_push_arguments);
>    set_gdbarch_deprecated_pop_frame (gdbarch, v850_pop_frame);
>    set_gdbarch_store_struct_return (gdbarch, v850_store_struct_return);
>    set_gdbarch_deprecated_store_return_value (gdbarch, v850_store_return_value);
> Index: value.h
> ===================================================================
> RCS file: /cvs/src/src/gdb/value.h,v
> retrieving revision 1.42
> diff -u -r1.42 value.h
> --- value.h	20 Feb 2003 00:01:07 -0000	1.42
> +++ value.h	24 Mar 2003 04:32:05 -0000
> @@ -560,9 +560,9 @@
>  
>  extern struct value *value_allocate_space_in_inferior (int);
>  
> -extern CORE_ADDR default_push_arguments (int nargs, struct value ** args,
> -					 CORE_ADDR sp, int struct_return,
> -					 CORE_ADDR struct_addr);
> +extern CORE_ADDR legacy_push_arguments (int nargs, struct value ** args,
> +					CORE_ADDR sp, int struct_return,
> +					CORE_ADDR struct_addr);
>  
>  extern struct value *value_of_local (const char *name, int complain);
>  
> Index: x86-64-tdep.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/x86-64-tdep.c,v
> retrieving revision 1.57
> diff -u -r1.57 x86-64-tdep.c
> --- x86-64-tdep.c	24 Mar 2003 03:54:50 -0000	1.57
> +++ x86-64-tdep.c	24 Mar 2003 04:32:05 -0000
> @@ -1013,7 +1013,7 @@
>  
>    set_gdbarch_extract_return_value (gdbarch, x86_64_extract_return_value);
>  
> -  set_gdbarch_push_arguments (gdbarch, x86_64_push_arguments);
> +  set_gdbarch_deprecated_push_arguments (gdbarch, x86_64_push_arguments);
>    set_gdbarch_push_return_address (gdbarch, x86_64_push_return_address);
>    set_gdbarch_deprecated_pop_frame (gdbarch, x86_64_pop_frame);
>    set_gdbarch_store_struct_return (gdbarch, x86_64_store_struct_return);
> Index: xstormy16-tdep.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/xstormy16-tdep.c,v
> retrieving revision 1.32
> diff -u -r1.32 xstormy16-tdep.c
> --- xstormy16-tdep.c	24 Mar 2003 03:54:50 -0000	1.32
> +++ xstormy16-tdep.c	24 Mar 2003 04:32:06 -0000
> @@ -1086,7 +1086,7 @@
>     * These values and methods are used when gdb calls a target function.  */
>    set_gdbarch_push_return_address (gdbarch, xstormy16_push_return_address);
>    set_gdbarch_deprecated_extract_return_value (gdbarch, xstormy16_extract_return_value);
> -  set_gdbarch_push_arguments (gdbarch, xstormy16_push_arguments);
> +  set_gdbarch_deprecated_push_arguments (gdbarch, xstormy16_push_arguments);
>    set_gdbarch_deprecated_pop_frame (gdbarch, xstormy16_pop_frame);
>    set_gdbarch_store_struct_return (gdbarch, xstormy16_store_struct_return);
>    set_gdbarch_deprecated_store_return_value (gdbarch, xstormy16_store_return_value);
> Index: config/i386/tm-symmetry.h
> ===================================================================
> RCS file: /cvs/src/src/gdb/config/i386/tm-symmetry.h,v
> retrieving revision 1.11
> diff -u -r1.11 tm-symmetry.h
> --- config/i386/tm-symmetry.h	1 Feb 2003 17:28:41 -0000	1.11
> +++ config/i386/tm-symmetry.h	24 Mar 2003 04:32:08 -0000
> @@ -266,7 +266,7 @@
>     passes it on the stack.  gcc should be fixed in future versions to
>     adopt native cc conventions.  */
>  
> -#undef  PUSH_ARGUMENTS
> +#undef  DEPRECATED_PUSH_ARGUMENTS
>  #undef  STORE_STRUCT_RETURN
>  #define STORE_STRUCT_RETURN(ADDR, SP) write_register(0, (ADDR))
>  
> Index: config/pa/tm-hppa.h
> ===================================================================
> RCS file: /cvs/src/src/gdb/config/pa/tm-hppa.h,v
> retrieving revision 1.39
> diff -u -r1.39 tm-hppa.h
> --- config/pa/tm-hppa.h	24 Mar 2003 03:54:50 -0000	1.39
> +++ config/pa/tm-hppa.h	24 Mar 2003 04:32:09 -0000
> @@ -618,7 +618,7 @@
>  		                      struct value **, struct type *, int);
>  
>  #if !GDB_MULTI_ARCH
> -#define PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr) \
> +#define DEPRECATED_PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr) \
>    (hppa_push_arguments((nargs), (args), (sp), (struct_return), (struct_addr)))
>  extern CORE_ADDR hppa_push_arguments (int, struct value **, CORE_ADDR, int,
>  				      CORE_ADDR);
> Index: config/sparc/tm-sp64.h
> ===================================================================
> RCS file: /cvs/src/src/gdb/config/sparc/tm-sp64.h,v
> retrieving revision 1.13
> diff -u -r1.13 tm-sp64.h
> --- config/sparc/tm-sp64.h	3 Mar 2003 20:50:20 -0000	1.13
> +++ config/sparc/tm-sp64.h	24 Mar 2003 04:32:09 -0000
> @@ -208,8 +208,8 @@
>  
>  CORE_ADDR sparc64_push_arguments (int,
>  				  struct value **, CORE_ADDR, int, CORE_ADDR);
> -#undef PUSH_ARGUMENTS
> -#define PUSH_ARGUMENTS(A,B,C,D,E) \
> +#undef DEPRECATED_PUSH_ARGUMENTS
> +#define DEPRECATED_PUSH_ARGUMENTS(A,B,C,D,E) \
>       (sparc64_push_arguments ((A), (B), (C), (D), (E)))
>  
>  /* Store the address of the place in which to copy the structure the
> Index: config/sparc/tm-sparc.h
> ===================================================================
> RCS file: /cvs/src/src/gdb/config/sparc/tm-sparc.h,v
> retrieving revision 1.40
> diff -u -r1.40 tm-sparc.h
> --- config/sparc/tm-sparc.h	24 Mar 2003 03:54:51 -0000	1.40
> +++ config/sparc/tm-sparc.h	24 Mar 2003 04:32:09 -0000
> @@ -688,7 +688,7 @@
>  void sparc_push_dummy_frame (void);
>  void sparc_pop_frame (void);
>  
> -#define PUSH_ARGUMENTS(NARGS, ARGS, SP, STRUCT_RETURN, STRUCT_ADDR) \
> +#define DEPRECATED_PUSH_ARGUMENTS(NARGS, ARGS, SP, STRUCT_RETURN, STRUCT_ADDR) \
>       sparc32_push_arguments (NARGS, ARGS, SP, STRUCT_RETURN, STRUCT_ADDR)
>  
>  extern CORE_ADDR sparc32_push_arguments (int, struct value **, CORE_ADDR, int,
> Index: doc/gdbint.texinfo
> ===================================================================
> RCS file: /cvs/src/src/gdb/doc/gdbint.texinfo,v
> retrieving revision 1.133
> diff -u -r1.133 gdbint.texinfo
> --- doc/gdbint.texinfo	24 Mar 2003 03:54:51 -0000	1.133
> +++ doc/gdbint.texinfo	24 Mar 2003 04:32:22 -0000
> @@ -3709,13 +3709,20 @@
>  If defined, used by @code{frame_pop} to remove a stack frame.  This
>  method has been superseeded by generic code.
>  
> - at item PUSH_ARGUMENTS (@var{nargs}, @var{args}, @var{sp}, @var{struct_return}, @var{struct_addr})
> - at findex PUSH_ARGUMENTS
> -Define this to push arguments onto the stack for inferior function
> -call.  Returns the updated stack pointer value.
> + at item push_dummy_call (@var{gdbarch}, @var{regcache}, @var{dummy_addr}, @var{nargs}, @var{args}, @var{sp}, @var{struct_return}, @var{struct_addr})
> + at findex push_dummy_call
> + at findex DEPRECATED_PUSH_ARGUMENTS.
> +Define this to push the dummy frame's call to the inferior function onto
> +the stack.  In addition to pushing @var{nargs}, the code should push
> + at var{struct_addr} (when @var{struct_return}), and the return value (in
> +the call dummy at @var{dummy_addr}).
>  
> - at item PUSH_DUMMY_FRAME
> - at findex PUSH_DUMMY_FRAME
> +Returns the updated top-of-stack pointer.
> +
> +This method replaces @code{DEPRECATED_PUSH_ARGUMENTS}.
> +
> + at item DEPRECATED_PUSH_DUMMY_FRAME
> + at findex DEPRECATED_PUSH_DUMMY_FRAME
>  Used in @samp{call_function_by_hand} to create an artificial stack frame.
>  
>  @item REGISTER_BYTES


-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer


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