From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30169 invoked by alias); 26 Feb 2003 23:37:52 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 30161 invoked from network); 26 Feb 2003 23:37:51 -0000 Received: from unknown (HELO localhost.redhat.com) (172.16.49.200) by 172.16.49.205 with SMTP; 26 Feb 2003 23:37:51 -0000 Received: from redhat.com (localhost [127.0.0.1]) by localhost.redhat.com (Postfix) with ESMTP id 5C1572A9C for ; Wed, 26 Feb 2003 18:40:07 -0500 (EST) Message-ID: <3E5D5057.3060308@redhat.com> Date: Wed, 26 Feb 2003 23:37:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-US; rv:1.0.2) Gecko/20030223 X-Accept-Language: en-us, en MIME-Version: 1.0 To: gdb-patches@sources.redhat.com Subject: [patch/rfc] Deprecate PUSH_DUMMY_FRAME Content-Type: multipart/mixed; boundary="------------070403060102030007080308" X-SW-Source: 2003-02/txt/msg00759.txt.bz2 This is a multi-part message in MIME format. --------------070403060102030007080308 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-length: 1152 Hello, This patch gives the generic dummy frame code another little prod towards becomming the only inferior function call mechanism. The comment that goes with the call: + /* 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 move 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 (); should explain where this is going. I'll commit in a day or so, Andrew --------------070403060102030007080308 Content-Type: text/plain; name="diffs" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="diffs" Content-length: 24327 2003-02-26 Andrew Cagney * 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. Index: alpha-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/alpha-tdep.c,v retrieving revision 1.61 diff -u -r1.61 alpha-tdep.c --- alpha-tdep.c 20 Feb 2003 00:01:04 -0000 1.61 +++ alpha-tdep.c 26 Feb 2003 23:30:11 -0000 @@ -72,7 +72,7 @@ static gdbarch_frame_init_saved_regs_ftype alpha_frame_init_saved_regs; static gdbarch_push_arguments_ftype alpha_push_arguments; -static gdbarch_push_dummy_frame_ftype alpha_push_dummy_frame; +static gdbarch_deprecateed_push_dummy_frame_ftype alpha_push_dummy_frame; static gdbarch_pop_frame_ftype alpha_pop_frame; static gdbarch_fix_call_dummy_ftype alpha_fix_call_dummy; static gdbarch_init_extra_frame_info_ftype alpha_init_extra_frame_info; @@ -1883,7 +1883,7 @@ 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_call_dummy_stack_adjust_p (gdbarch, 0); - set_gdbarch_push_dummy_frame (gdbarch, alpha_push_dummy_frame); + set_gdbarch_deprecated_push_dummy_frame (gdbarch, alpha_push_dummy_frame); set_gdbarch_fix_call_dummy (gdbarch, alpha_fix_call_dummy); set_gdbarch_deprecated_init_frame_pc (gdbarch, init_frame_pc_noop); set_gdbarch_deprecated_init_frame_pc_first (gdbarch, alpha_init_frame_pc_first); Index: arm-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/arm-tdep.c,v retrieving revision 1.99 diff -u -r1.99 arm-tdep.c --- arm-tdep.c 21 Feb 2003 17:17:31 -0000 1.99 +++ arm-tdep.c 26 Feb 2003 23:30:12 -0000 @@ -2915,7 +2915,6 @@ set_gdbarch_frame_num_args (gdbarch, arm_frame_num_args); set_gdbarch_frame_args_skip (gdbarch, 0); set_gdbarch_frame_init_saved_regs (gdbarch, arm_frame_init_saved_regs); - set_gdbarch_push_dummy_frame (gdbarch, generic_push_dummy_frame); set_gdbarch_pop_frame (gdbarch, arm_pop_frame); /* Address manipulation. */ Index: avr-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/avr-tdep.c,v retrieving revision 1.24 diff -u -r1.24 avr-tdep.c --- avr-tdep.c 19 Feb 2003 20:38:01 -0000 1.24 +++ avr-tdep.c 26 Feb 2003 23:30:12 -0000 @@ -1181,7 +1181,6 @@ 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_push_dummy_frame (gdbarch, generic_push_dummy_frame); set_gdbarch_push_return_address (gdbarch, avr_push_return_address); set_gdbarch_pop_frame (gdbarch, avr_pop_frame); Index: cris-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/cris-tdep.c,v retrieving revision 1.46 diff -u -r1.46 cris-tdep.c --- cris-tdep.c 19 Jan 2003 04:06:45 -0000 1.46 +++ cris-tdep.c 26 Feb 2003 23:30:12 -0000 @@ -4283,7 +4283,6 @@ /* No register requires conversion from raw format to virtual format. */ set_gdbarch_register_convertible (gdbarch, generic_register_convertible_not); - set_gdbarch_push_dummy_frame (gdbarch, generic_push_dummy_frame); set_gdbarch_push_return_address (gdbarch, cris_push_return_address); set_gdbarch_pop_frame (gdbarch, cris_pop_frame); Index: d10v-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/d10v-tdep.c,v retrieving revision 1.76 diff -u -r1.76 d10v-tdep.c --- d10v-tdep.c 2 Feb 2003 20:31:42 -0000 1.76 +++ d10v-tdep.c 26 Feb 2003 23:30:12 -0000 @@ -1697,7 +1697,6 @@ set_gdbarch_extract_return_value (gdbarch, d10v_extract_return_value); set_gdbarch_push_arguments (gdbarch, d10v_push_arguments); - set_gdbarch_push_dummy_frame (gdbarch, generic_push_dummy_frame); 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.14 diff -u -r1.14 frv-tdep.c --- frv-tdep.c 7 Jan 2003 14:51:10 -0000 1.14 +++ frv-tdep.c 26 Feb 2003 23:30:12 -0000 @@ -1119,7 +1119,6 @@ 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_call_dummy_stack_adjust_p (gdbarch, 0); - set_gdbarch_push_dummy_frame (gdbarch, generic_push_dummy_frame); set_gdbarch_fix_call_dummy (gdbarch, generic_fix_call_dummy); set_gdbarch_decr_pc_after_break (gdbarch, 0); Index: gdbarch.sh =================================================================== RCS file: /cvs/src/src/gdb/gdbarch.sh,v retrieving revision 1.194 diff -u -r1.194 gdbarch.sh --- gdbarch.sh 2 Feb 2003 03:16:44 -0000 1.194 +++ gdbarch.sh 26 Feb 2003 23:30:12 -0000 @@ -536,7 +536,7 @@ # 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 -f:2:PUSH_DUMMY_FRAME:void:push_dummy_frame:void:-:::0 +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:POP_FRAME:void:pop_frame:void:-:::0 # Index: h8300-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/h8300-tdep.c,v retrieving revision 1.36 diff -u -r1.36 h8300-tdep.c --- h8300-tdep.c 8 Jan 2003 17:21:28 -0000 1.36 +++ h8300-tdep.c 26 Feb 2003 23:30:12 -0000 @@ -1148,7 +1148,6 @@ * Call Dummies * * These values and methods are used when gdb calls a target function. */ - set_gdbarch_push_dummy_frame (gdbarch, generic_push_dummy_frame); 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); Index: hppa-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/hppa-tdep.c,v retrieving revision 1.50 diff -u -r1.50 hppa-tdep.c --- hppa-tdep.c 25 Feb 2003 21:36:17 -0000 1.50 +++ hppa-tdep.c 26 Feb 2003 23:30:13 -0000 @@ -5016,7 +5016,7 @@ set_gdbarch_frame_locals_address (gdbarch, hppa_frame_locals_address); set_gdbarch_frame_num_args (gdbarch, hppa_frame_num_args); set_gdbarch_frame_args_skip (gdbarch, 0); - /* set_gdbarch_push_dummy_frame (gdbarch, hppa_push_dummy_frame); */ + /* set_gdbarch_deprecated_push_dummy_frame (gdbarch, hppa_push_dummy_frame); */ set_gdbarch_pop_frame (gdbarch, hppa_pop_frame); set_gdbarch_call_dummy_length (gdbarch, INSTRUCTION_SIZE * 28); set_gdbarch_call_dummy_start_offset (gdbarch, 0); Index: i386-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/i386-tdep.c,v retrieving revision 1.112 diff -u -r1.112 i386-tdep.c --- i386-tdep.c 25 Feb 2003 21:36:18 -0000 1.112 +++ i386-tdep.c 26 Feb 2003 23:30:13 -0000 @@ -1590,7 +1590,6 @@ set_gdbarch_extract_return_value (gdbarch, i386_extract_return_value); set_gdbarch_push_arguments (gdbarch, i386_push_arguments); - set_gdbarch_push_dummy_frame (gdbarch, generic_push_dummy_frame); set_gdbarch_push_return_address (gdbarch, i386_push_return_address); set_gdbarch_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.48 diff -u -r1.48 ia64-tdep.c --- ia64-tdep.c 8 Jan 2003 17:21:28 -0000 1.48 +++ ia64-tdep.c 26 Feb 2003 23:30:13 -0000 @@ -2252,7 +2252,6 @@ set_gdbarch_call_dummy_breakpoint_offset (gdbarch, 0); set_gdbarch_call_dummy_start_offset (gdbarch, 0); set_gdbarch_call_dummy_stack_adjust_p (gdbarch, 0); - set_gdbarch_push_dummy_frame (gdbarch, generic_push_dummy_frame); set_gdbarch_fix_call_dummy (gdbarch, generic_fix_call_dummy); set_gdbarch_decr_pc_after_break (gdbarch, 0); Index: m68hc11-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/m68hc11-tdep.c,v retrieving revision 1.44 diff -u -r1.44 m68hc11-tdep.c --- m68hc11-tdep.c 23 Feb 2003 20:24:17 -0000 1.44 +++ m68hc11-tdep.c 26 Feb 2003 23:30:13 -0000 @@ -1385,7 +1385,6 @@ 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_push_dummy_frame (gdbarch, generic_push_dummy_frame); set_gdbarch_push_return_address (gdbarch, m68hc11_push_return_address); set_gdbarch_return_value_on_stack (gdbarch, m68hc11_return_value_on_stack); Index: m68k-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/m68k-tdep.c,v retrieving revision 1.42 diff -u -r1.42 m68k-tdep.c --- m68k-tdep.c 8 Jan 2003 15:56:37 -0000 1.42 +++ m68k-tdep.c 26 Feb 2003 23:30:13 -0000 @@ -1050,7 +1050,7 @@ set_gdbarch_sizeof_call_dummy_words (gdbarch, sizeof (call_dummy_words)); set_gdbarch_call_dummy_stack_adjust_p (gdbarch, 0); set_gdbarch_fix_call_dummy (gdbarch, m68k_fix_call_dummy); - set_gdbarch_push_dummy_frame (gdbarch, m68k_push_dummy_frame); + set_gdbarch_deprecated_push_dummy_frame (gdbarch, m68k_push_dummy_frame); set_gdbarch_pop_frame (gdbarch, m68k_pop_frame); return gdbarch; Index: mcore-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/mcore-tdep.c,v retrieving revision 1.38 diff -u -r1.38 mcore-tdep.c --- mcore-tdep.c 8 Jan 2003 19:45:23 -0000 1.38 +++ mcore-tdep.c 26 Feb 2003 23:30:13 -0000 @@ -1131,7 +1131,6 @@ 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_dummy_frame (gdbarch, generic_push_dummy_frame); set_gdbarch_push_arguments (gdbarch, mcore_push_arguments); set_gdbarch_call_dummy_length (gdbarch, 0); Index: mips-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/mips-tdep.c,v retrieving revision 1.163 diff -u -r1.163 mips-tdep.c --- mips-tdep.c 20 Feb 2003 16:35:51 -0000 1.163 +++ mips-tdep.c 26 Feb 2003 23:30:13 -0000 @@ -5991,7 +5991,6 @@ set_gdbarch_call_dummy_stack_adjust_p (gdbarch, 0); set_gdbarch_call_dummy_address (gdbarch, mips_call_dummy_address); set_gdbarch_push_return_address (gdbarch, mips_push_return_address); - set_gdbarch_push_dummy_frame (gdbarch, generic_push_dummy_frame); set_gdbarch_pop_frame (gdbarch, mips_pop_frame); set_gdbarch_call_dummy_start_offset (gdbarch, 0); set_gdbarch_call_dummy_breakpoint_offset_p (gdbarch, 1); Index: mn10300-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/mn10300-tdep.c,v retrieving revision 1.53 diff -u -r1.53 mn10300-tdep.c --- mn10300-tdep.c 8 Jan 2003 21:44:55 -0000 1.53 +++ mn10300-tdep.c 26 Feb 2003 23:30:14 -0000 @@ -1197,7 +1197,6 @@ 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_dummy_frame (gdbarch, generic_push_dummy_frame); set_gdbarch_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); Index: ns32k-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/ns32k-tdep.c,v retrieving revision 1.31 diff -u -r1.31 ns32k-tdep.c --- ns32k-tdep.c 8 Jan 2003 15:56:37 -0000 1.31 +++ ns32k-tdep.c 26 Feb 2003 23:30:14 -0000 @@ -592,7 +592,7 @@ ns32k_extract_struct_value_address); /* Call dummy info */ - set_gdbarch_push_dummy_frame (gdbarch, ns32k_push_dummy_frame); + set_gdbarch_deprecated_push_dummy_frame (gdbarch, ns32k_push_dummy_frame); set_gdbarch_pop_frame (gdbarch, ns32k_pop_frame); set_gdbarch_call_dummy_location (gdbarch, ON_STACK); set_gdbarch_call_dummy_p (gdbarch, 1); Index: rs6000-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/rs6000-tdep.c,v retrieving revision 1.105 diff -u -r1.105 rs6000-tdep.c --- rs6000-tdep.c 25 Feb 2003 21:36:19 -0000 1.105 +++ rs6000-tdep.c 26 Feb 2003 23:30:14 -0000 @@ -2895,7 +2895,6 @@ set_gdbarch_call_dummy_stack_adjust_p (gdbarch, 0); set_gdbarch_fix_call_dummy (gdbarch, rs6000_fix_call_dummy); set_gdbarch_frame_align (gdbarch, rs6000_frame_align); - set_gdbarch_push_dummy_frame (gdbarch, generic_push_dummy_frame); set_gdbarch_save_dummy_frame_tos (gdbarch, generic_save_dummy_frame_tos); set_gdbarch_push_return_address (gdbarch, ppc_push_return_address); set_gdbarch_believe_pcc_promotion (gdbarch, 1); Index: s390-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/s390-tdep.c,v retrieving revision 1.71 diff -u -r1.71 s390-tdep.c --- s390-tdep.c 3 Feb 2003 20:35:44 -0000 1.71 +++ s390-tdep.c 26 Feb 2003 23:30:14 -0000 @@ -1866,7 +1866,6 @@ 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_dummy_frame (gdbarch, generic_push_dummy_frame); set_gdbarch_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); Index: sh-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/sh-tdep.c,v retrieving revision 1.96 diff -u -r1.96 sh-tdep.c --- sh-tdep.c 3 Feb 2003 14:38:05 -0000 1.96 +++ sh-tdep.c 26 Feb 2003 23:30:14 -0000 @@ -4664,7 +4664,6 @@ set_gdbarch_call_dummy_stack_adjust_p (gdbarch, 0); set_gdbarch_fix_call_dummy (gdbarch, generic_fix_call_dummy); - set_gdbarch_push_dummy_frame (gdbarch, generic_push_dummy_frame); set_gdbarch_push_return_address (gdbarch, sh_push_return_address); set_gdbarch_deprecated_store_return_value (gdbarch, sh_store_return_value); Index: sparc-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/sparc-tdep.c,v retrieving revision 1.65 diff -u -r1.65 sparc-tdep.c --- sparc-tdep.c 18 Feb 2003 22:46:15 -0000 1.65 +++ sparc-tdep.c 26 Feb 2003 23:30:14 -0000 @@ -3160,7 +3160,7 @@ set_gdbarch_max_register_virtual_size (gdbarch, 8); set_gdbarch_pop_frame (gdbarch, sparc_pop_frame); set_gdbarch_push_return_address (gdbarch, sparc_push_return_address); - set_gdbarch_push_dummy_frame (gdbarch, sparc_push_dummy_frame); + set_gdbarch_deprecated_push_dummy_frame (gdbarch, sparc_push_dummy_frame); set_gdbarch_read_pc (gdbarch, generic_target_read_pc); set_gdbarch_register_convert_to_raw (gdbarch, sparc_convert_to_raw); set_gdbarch_register_convert_to_virtual (gdbarch, Index: v850-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/v850-tdep.c,v retrieving revision 1.37 diff -u -r1.37 v850-tdep.c --- v850-tdep.c 8 Jan 2003 15:56:38 -0000 1.37 +++ v850-tdep.c 26 Feb 2003 23:30:14 -0000 @@ -1268,7 +1268,6 @@ * Call Dummies * * These values and methods are used when gdb calls a target function. */ - set_gdbarch_push_dummy_frame (gdbarch, generic_push_dummy_frame); 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); Index: valops.c =================================================================== RCS file: /cvs/src/src/gdb/valops.c,v retrieving revision 1.92 diff -u -r1.92 valops.c --- valops.c 25 Feb 2003 21:36:21 -0000 1.92 +++ valops.c 26 Feb 2003 23:30:14 -0000 @@ -1300,10 +1300,34 @@ 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 (); Index: vax-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/vax-tdep.c,v retrieving revision 1.32 diff -u -r1.32 vax-tdep.c --- vax-tdep.c 8 Jan 2003 15:56:38 -0000 1.32 +++ vax-tdep.c 26 Feb 2003 23:30:14 -0000 @@ -53,7 +53,7 @@ static gdbarch_deprecated_extract_struct_value_address_ftype vax_extract_struct_value_address; -static gdbarch_push_dummy_frame_ftype vax_push_dummy_frame; +static gdbarch_deprecated_push_dummy_frame_ftype vax_push_dummy_frame; static gdbarch_pop_frame_ftype vax_pop_frame; static gdbarch_fix_call_dummy_ftype vax_fix_call_dummy; @@ -669,7 +669,7 @@ set_gdbarch_deprecated_extract_struct_value_address (gdbarch, vax_extract_struct_value_address); /* Call dummy info */ - set_gdbarch_push_dummy_frame (gdbarch, vax_push_dummy_frame); + set_gdbarch_deprecated_push_dummy_frame (gdbarch, vax_push_dummy_frame); set_gdbarch_pop_frame (gdbarch, vax_pop_frame); set_gdbarch_call_dummy_location (gdbarch, ON_STACK); set_gdbarch_call_dummy_p (gdbarch, 1); Index: xstormy16-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/xstormy16-tdep.c,v retrieving revision 1.23 diff -u -r1.23 xstormy16-tdep.c --- xstormy16-tdep.c 8 Jan 2003 17:21:30 -0000 1.23 +++ xstormy16-tdep.c 26 Feb 2003 23:30:14 -0000 @@ -1086,7 +1086,6 @@ * Call Dummies * * These values and methods are used when gdb calls a target function. */ - set_gdbarch_push_dummy_frame (gdbarch, generic_push_dummy_frame); 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); Index: config/pa/tm-hppa.h =================================================================== RCS file: /cvs/src/src/gdb/config/pa/tm-hppa.h,v retrieving revision 1.31 diff -u -r1.31 tm-hppa.h --- config/pa/tm-hppa.h 20 Jan 2003 01:01:47 -0000 1.31 +++ config/pa/tm-hppa.h 26 Feb 2003 23:30:15 -0000 @@ -453,11 +453,11 @@ /* Push an empty stack frame, to record the current PC, etc. */ /* FIXME: brobecker 2002-12-26. This macro definition takes advantage - of the fact that PUSH_DUMMY_FRAME is called within a function where - a variable inf_status of type struct inferior_status * is defined. - Ugh! Until this is fixed, we will not be able to move to multiarch - partial. */ -#define PUSH_DUMMY_FRAME hppa_push_dummy_frame (inf_status) + of the fact that DEPRECATED_PUSH_DUMMY_FRAME is called within a + function where a variable inf_status of type struct inferior_status + * is defined. Ugh! Until this is fixed, we will not be able to + move to multiarch partial. */ +#define DEPRECATED_PUSH_DUMMY_FRAME hppa_push_dummy_frame (inf_status) extern void hppa_push_dummy_frame (struct inferior_status *); /* Discard from the stack the innermost frame, Index: config/sparc/tm-sparc.h =================================================================== RCS file: /cvs/src/src/gdb/config/sparc/tm-sparc.h,v retrieving revision 1.31 diff -u -r1.31 tm-sparc.h --- config/sparc/tm-sparc.h 18 Feb 2003 22:46:16 -0000 1.31 +++ config/sparc/tm-sparc.h 26 Feb 2003 23:30:15 -0000 @@ -582,18 +582,18 @@ * I understand everything in this picture except what the space * between fp - 0xe0 and fp - 0x140 is used for. Oh, and I don't * understand why there's a large chunk of CALL_DUMMY that never gets - * executed (its function is superceeded by PUSH_DUMMY_FRAME; they - * are designed to do the same thing). + * executed (its function is superceeded by + * DEPRECATED_PUSH_DUMMY_FRAME; they are designed to do the same + * thing). * - * PUSH_DUMMY_FRAME saves the registers above sp' and pushes the - * register file stack down one. + * DEPRECATED_PUSH_DUMMY_FRAME saves the registers above sp' and + * pushes the * register file stack down one. * * call_function then writes CALL_DUMMY, pushes the args onto the * stack, and adjusts the stack pointer. * * run_stack_dummy then starts execution (in the middle of - * CALL_DUMMY, as directed by call_function). - */ + * CALL_DUMMY, as directed by call_function). */ #ifndef CALL_DUMMY /* This sequence of words is the instructions @@ -681,7 +681,7 @@ /* Push an empty stack frame, to record the current PC, etc. */ -#define PUSH_DUMMY_FRAME sparc_push_dummy_frame () +#define DEPRECATED_PUSH_DUMMY_FRAME sparc_push_dummy_frame () #define POP_FRAME sparc_pop_frame () void sparc_push_dummy_frame (void); --------------070403060102030007080308--