From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4304 invoked by alias); 6 Aug 2002 21:18:11 -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 4295 invoked from network); 6 Aug 2002 21:18:10 -0000 Received: from unknown (HELO localhost.redhat.com) (216.138.202.10) by sources.redhat.com with SMTP; 6 Aug 2002 21:18:10 -0000 Received: from ges.redhat.com (localhost [127.0.0.1]) by localhost.redhat.com (Postfix) with ESMTP id 04BED3CB0 for ; Tue, 6 Aug 2002 17:18:07 -0400 (EDT) Message-ID: <3D503D0F.7040506@ges.redhat.com> Date: Tue, 06 Aug 2002 14:18:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-US; rv:1.0.0) Gecko/20020802 X-Accept-Language: en-us, en MIME-Version: 1.0 To: gdb-patches@sources.redhat.com Subject: [patch/rfc:alpha] Switch ALPHA, NS32k and VAX to unwind mechanism Content-Type: multipart/mixed; boundary="------------070605000108030807080504" X-SW-Source: 2002-08/txt/msg00139.txt.bz2 This is a multi-part message in MIME format. --------------070605000108030807080504 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-length: 624 Hello, Each of these three targets contain their own implementation of get_saved_register(). In true GDB style, all three implementations are identical and as best I can tell, also identical to the old generic_get_saved_register! Since generic_unwind_get_saved_register() provides equivalent (but less buggy) functionality, this patch switches these three platforms to that mechanism. Given that the old code relied on the broken find_saved_registers() (see post from KevinB) the test results should improve. Anyone with an Alpha want to try it (I think we can suck/see the vax and ns32k ... :-)? enjoy, Andrew --------------070605000108030807080504 Content-Type: text/plain; name="diffs" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="diffs" Content-length: 6849 2002-08-06 Andrew Cagney * vax-tdep.c (vax_get_saved_register): Delete function. (vax_gdbarch_init): Update. * ns32k-tdep.c (ns32k_get_saved_register): Delete function. (ns32k_gdbarch_init): Update. * alpha-tdep.c (alpha_get_saved_register): Delete function. (alpha_gdbarch_init): Update. Index: alpha-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/alpha-tdep.c,v retrieving revision 1.37 diff -u -r1.37 alpha-tdep.c --- alpha-tdep.c 19 Jun 2002 01:12:07 -0000 1.37 +++ alpha-tdep.c 6 Aug 2002 21:05:39 -0000 @@ -65,7 +65,6 @@ static gdbarch_frame_locals_address_ftype alpha_frame_locals_address; static gdbarch_skip_prologue_ftype alpha_skip_prologue; -static gdbarch_get_saved_register_ftype alpha_get_saved_register; static gdbarch_saved_pc_after_call_ftype alpha_saved_pc_after_call; static gdbarch_frame_chain_ftype alpha_frame_chain; static gdbarch_frame_saved_pc_ftype alpha_frame_saved_pc; @@ -501,54 +500,6 @@ return read_next_frame_reg (frame, pcreg); } -static void -alpha_get_saved_register (char *raw_buffer, - int *optimized, - CORE_ADDR *addrp, - struct frame_info *frame, - int regnum, - enum lval_type *lval) -{ - CORE_ADDR addr; - - if (!target_has_registers) - error ("No registers."); - - /* Normal systems don't optimize out things with register numbers. */ - if (optimized != NULL) - *optimized = 0; - addr = find_saved_register (frame, regnum); - if (addr != 0) - { - if (lval != NULL) - *lval = lval_memory; - if (regnum == SP_REGNUM) - { - if (raw_buffer != NULL) - { - /* Put it back in target format. */ - store_address (raw_buffer, REGISTER_RAW_SIZE (regnum), - (LONGEST) addr); - } - if (addrp != NULL) - *addrp = 0; - return; - } - if (raw_buffer != NULL) - target_read_memory (addr, raw_buffer, REGISTER_RAW_SIZE (regnum)); - } - else - { - if (lval != NULL) - *lval = lval_register; - addr = REGISTER_BYTE (regnum); - if (raw_buffer != NULL) - read_register_gen (regnum, raw_buffer); - } - if (addrp != NULL) - *addrp = addr; -} - static CORE_ADDR alpha_saved_pc_after_call (struct frame_info *frame) { @@ -1904,7 +1855,6 @@ set_gdbarch_frame_saved_pc (gdbarch, alpha_frame_saved_pc); set_gdbarch_frame_init_saved_regs (gdbarch, alpha_frame_init_saved_regs); - set_gdbarch_get_saved_register (gdbarch, alpha_get_saved_register); set_gdbarch_use_struct_convention (gdbarch, alpha_use_struct_convention); set_gdbarch_deprecated_extract_return_value (gdbarch, alpha_extract_return_value); Index: ns32k-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/ns32k-tdep.c,v retrieving revision 1.15 diff -u -r1.15 ns32k-tdep.c --- ns32k-tdep.c 17 Jun 2002 23:32:32 -0000 1.15 +++ ns32k-tdep.c 6 Aug 2002 21:05:39 -0000 @@ -337,51 +337,6 @@ return (frame->frame); } -static void -ns32k_get_saved_register (char *raw_buffer, int *optimized, CORE_ADDR *addrp, - struct frame_info *frame, int regnum, - enum lval_type *lval) -{ - CORE_ADDR addr; - - if (!target_has_registers) - error ("No registers."); - - /* Normal systems don't optimize out things with register numbers. */ - if (optimized != NULL) - *optimized = 0; - addr = find_saved_register (frame, regnum); - if (addr != 0) - { - if (lval != NULL) - *lval = lval_memory; - if (regnum == SP_REGNUM) - { - if (raw_buffer != NULL) - { - /* Put it back in target format. */ - store_address (raw_buffer, REGISTER_RAW_SIZE (regnum), - (LONGEST) addr); - } - if (addrp != NULL) - *addrp = 0; - return; - } - if (raw_buffer != NULL) - target_read_memory (addr, raw_buffer, REGISTER_RAW_SIZE (regnum)); - } - else - { - if (lval != NULL) - *lval = lval_register; - addr = REGISTER_BYTE (regnum); - if (raw_buffer != NULL) - read_register_gen (regnum, raw_buffer); - } - if (addrp != NULL) - *addrp = addr; -} - /* Code to initialize the addresses of the saved registers of frame described by FRAME_INFO. This includes special registers such as pc and fp saved in special ways in the stack frame. sp is even more special: the address we @@ -613,8 +568,6 @@ set_gdbarch_frame_init_saved_regs (gdbarch, ns32k_frame_init_saved_regs); set_gdbarch_frame_args_skip (gdbarch, 8); - - set_gdbarch_get_saved_register (gdbarch, ns32k_get_saved_register); set_gdbarch_inner_than (gdbarch, core_addr_lessthan); Index: vax-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/vax-tdep.c,v retrieving revision 1.16 diff -u -r1.16 vax-tdep.c --- vax-tdep.c 26 Jun 2002 17:20:35 -0000 1.16 +++ vax-tdep.c 6 Aug 2002 21:05:39 -0000 @@ -45,7 +45,6 @@ static gdbarch_frame_args_address_ftype vax_frame_args_address; static gdbarch_frame_locals_address_ftype vax_frame_locals_address; static gdbarch_frame_init_saved_regs_ftype vax_frame_init_saved_regs; -static gdbarch_get_saved_register_ftype vax_get_saved_register; static gdbarch_store_struct_return_ftype vax_store_struct_return; static gdbarch_deprecated_extract_return_value_ftype vax_extract_return_value; @@ -125,51 +124,6 @@ } static void -vax_get_saved_register (char *raw_buffer, int *optimized, CORE_ADDR *addrp, - struct frame_info *frame, int regnum, - enum lval_type *lval) -{ - CORE_ADDR addr; - - if (!target_has_registers) - error ("No registers."); - - /* Normal systems don't optimize out things with register numbers. */ - if (optimized != NULL) - *optimized = 0; - addr = find_saved_register (frame, regnum); - if (addr != 0) - { - if (lval != NULL) - *lval = lval_memory; - if (regnum == SP_REGNUM) - { - if (raw_buffer != NULL) - { - /* Put it back in target format. */ - store_address (raw_buffer, REGISTER_RAW_SIZE (regnum), - (LONGEST) addr); - } - if (addrp != NULL) - *addrp = 0; - return; - } - if (raw_buffer != NULL) - target_read_memory (addr, raw_buffer, REGISTER_RAW_SIZE (regnum)); - } - else - { - if (lval != NULL) - *lval = lval_register; - addr = REGISTER_BYTE (regnum); - if (raw_buffer != NULL) - read_register_gen (regnum, raw_buffer); - } - if (addrp != NULL) - *addrp = addr; -} - -static void vax_frame_init_saved_regs (struct frame_info *frame) { int regnum, regmask; @@ -690,8 +644,6 @@ set_gdbarch_frame_init_saved_regs (gdbarch, vax_frame_init_saved_regs); set_gdbarch_frame_args_skip (gdbarch, 4); - - set_gdbarch_get_saved_register (gdbarch, vax_get_saved_register); set_gdbarch_inner_than (gdbarch, core_addr_lessthan); --------------070605000108030807080504--