From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32513 invoked by alias); 9 Jan 2007 20:20:55 -0000 Received: (qmail 32501 invoked by uid 22791); 9 Jan 2007 20:20:53 -0000 X-Spam-Check-By: sourceware.org Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Tue, 09 Jan 2007 20:20:46 +0000 Received: from drow by nevyn.them.org with local (Exim 4.63) (envelope-from ) id 1H4NSe-0008Hm-7q for gdb-patches@sourceware.org; Tue, 09 Jan 2007 15:20:44 -0500 Date: Tue, 09 Jan 2007 20:20:00 -0000 From: Daniel Jacobowitz To: gdb-patches@sourceware.org Subject: [commit] Synchronize frame prev_register behavior Message-ID: <20070109202044.GC30631@nevyn.them.org> Mail-Followup-To: gdb-patches@sourceware.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.13 (2006-08-11) X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2007-01/txt/msg00263.txt.bz2 Fixes a FIXME I checked in last year, by making every prev_register implementation consistently set *lvalp to lval_register if it recurses to the next frame. Proofread, compiled for alpha-linux, and checked in. -- Daniel Jacobowitz CodeSourcery 2007-01-09 Daniel Jacobowitz * alpha-mdebug-tdep.c (alpha_mdebug_frame_prev_register): Use frame_unwind_register to recurse. * alpha-tdep.c (alpha_sigtramp_frame_prev_register): Likewise. (alpha_heuristic_frame_prev_register): Likewise. * h8300-tdep.c (h8300_frame_prev_register): Likewise. * m32c-tdep.c (m32c_prev_register): Likewise. * frame.c (frame_register_unwind_location): Remove FIXME. Index: alpha-mdebug-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/alpha-mdebug-tdep.c,v retrieving revision 1.12 diff -u -p -r1.12 alpha-mdebug-tdep.c --- alpha-mdebug-tdep.c 9 Jan 2007 17:58:49 -0000 1.12 +++ alpha-mdebug-tdep.c 9 Jan 2007 20:08:13 -0000 @@ -294,8 +294,12 @@ alpha_mdebug_frame_prev_register (struct } /* Otherwise assume the next frame has the same register value. */ - frame_register (next_frame, regnum, optimizedp, lvalp, addrp, - realnump, bufferp); + *optimizedp = 0; + *lvalp = lval_register; + *addrp = 0; + *realnump = regnum; + if (bufferp) + frame_unwind_register (next_frame, *realnump, bufferp); } static const struct frame_unwind alpha_mdebug_frame_unwind = { Index: alpha-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/alpha-tdep.c,v retrieving revision 1.159 diff -u -p -r1.159 alpha-tdep.c --- alpha-tdep.c 9 Jan 2007 17:58:49 -0000 1.159 +++ alpha-tdep.c 9 Jan 2007 20:08:14 -0000 @@ -864,8 +864,12 @@ alpha_sigtramp_frame_prev_register (stru current description of it in alpha_sigtramp_frame_unwind_cache doesn't include it. Too bad. Fall back on whatever's in the outer frame. */ - frame_register (next_frame, regnum, optimizedp, lvalp, addrp, - realnump, bufferp); + *optimizedp = 0; + *lvalp = lval_register; + *addrp = 0; + *realnump = regnum; + if (bufferp) + frame_unwind_register (next_frame, *realnump, bufferp); } static const struct frame_unwind alpha_sigtramp_frame_unwind = { @@ -1218,8 +1222,12 @@ alpha_heuristic_frame_prev_register (str } /* Otherwise assume the next frame has the same register value. */ - frame_register_unwind (next_frame, regnum, optimizedp, lvalp, addrp, - realnump, bufferp); + *optimizedp = 0; + *lvalp = lval_register; + *addrp = 0; + *realnump = regnum; + if (bufferp) + frame_unwind_register (next_frame, *realnump, bufferp); } static const struct frame_unwind alpha_heuristic_frame_unwind = { Index: frame.c =================================================================== RCS file: /cvs/src/src/gdb/frame.c,v retrieving revision 1.217 diff -u -p -r1.217 frame.c --- frame.c 9 Jan 2007 17:58:50 -0000 1.217 +++ frame.c 9 Jan 2007 20:08:14 -0000 @@ -1103,10 +1103,7 @@ reinit_frame_cache (void) /* Find where a register is saved (in memory or another register). The result of frame_register_unwind is just where it is saved - relative to this particular frame. - - FIXME: alpha, m32c, and h8300 actually do the transitive operation - themselves. */ + relative to this particular frame. */ static void frame_register_unwind_location (struct frame_info *this_frame, int regnum, Index: h8300-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/h8300-tdep.c,v retrieving revision 1.104 diff -u -p -r1.104 h8300-tdep.c --- h8300-tdep.c 9 Jan 2007 17:58:51 -0000 1.104 +++ h8300-tdep.c 9 Jan 2007 20:08:14 -0000 @@ -529,8 +529,12 @@ h8300_frame_prev_register (struct frame_ return; } - frame_register_unwind (next_frame, regnum, - optimizedp, lvalp, addrp, realnump, valuep); + *optimizedp = 0; + *lvalp = lval_register; + *addrp = 0; + *realnump = regnum; + if (valuep) + frame_unwind_register (next_frame, *realnump, valuep); } static const struct frame_unwind h8300_frame_unwind = { Index: m32c-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/m32c-tdep.c,v retrieving revision 1.4 diff -u -p -r1.4 m32c-tdep.c --- m32c-tdep.c 9 Jan 2007 17:58:51 -0000 1.4 +++ m32c-tdep.c 9 Jan 2007 20:08:14 -0000 @@ -1919,8 +1919,14 @@ m32c_prev_register (struct frame_info *n /* Otherwise, presume we haven't changed the value of this register, and get it from the next frame. */ else - frame_register_unwind (next_frame, regnum, - optimizedp, lvalp, addrp, realnump, bufferp); + { + *optimizedp = 0; + *lvalp = lval_register; + *addrp = 0; + *realnump = regnum; + if (bufferp) + frame_unwind_register (next_frame, *realnump, bufferp); + } }