2003-03-23 Andrew Cagney * 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 * 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. -@item PUSH_ARGUMENTS (@var{nargs}, @var{args}, @var{sp}, @var{struct_return}, @var{struct_addr}) -@findex PUSH_ARGUMENTS -Define this to push arguments onto the stack for inferior function -call. Returns the updated stack pointer value. +@item push_dummy_call (@var{gdbarch}, @var{regcache}, @var{dummy_addr}, @var{nargs}, @var{args}, @var{sp}, @var{struct_return}, @var{struct_addr}) +@findex push_dummy_call +@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 +@var{struct_addr} (when @var{struct_return}), and the return value (in +the call dummy at @var{dummy_addr}). -@item PUSH_DUMMY_FRAME -@findex PUSH_DUMMY_FRAME +Returns the updated top-of-stack pointer. + +This method replaces @code{DEPRECATED_PUSH_ARGUMENTS}. + +@item DEPRECATED_PUSH_DUMMY_FRAME +@findex DEPRECATED_PUSH_DUMMY_FRAME Used in @samp{call_function_by_hand} to create an artificial stack frame. @item REGISTER_BYTES