From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19968 invoked by alias); 5 Mar 2004 23:02:30 -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 19961 invoked from network); 5 Mar 2004 23:02:29 -0000 Received: from unknown (HELO localhost.redhat.com) (216.129.200.20) by sources.redhat.com with SMTP; 5 Mar 2004 23:02:29 -0000 Received: from gnu.org (localhost [127.0.0.1]) by localhost.redhat.com (Postfix) with ESMTP id E5C102B92; Fri, 5 Mar 2004 18:02:23 -0500 (EST) Message-ID: <404906FF.9040508@gnu.org> Date: Fri, 19 Mar 2004 00:09:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-GB; rv:1.4.1) Gecko/20040217 MIME-Version: 1.0 To: gdb-patches@sources.redhat.com Subject: Re: [patch/rfc,6.1?] Use right frame ID in step_over_function References: <40416BAF.1020308@gnu.org> In-Reply-To: <40416BAF.1020308@gnu.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2004-03/txt/msg00116.txt.bz2 Message-ID: <20040319000900.-0hiaVoUtyolKuaN3BGLJhZsvnjopdgpPugCuIzJQ1k@z> > Hello, > > This goes into the "how did it ever work" category. The idea of step_over_function is that it: > > - finds the caller's resume address > - finds the caller's frame ID > > and then sets a breakpoint for that caller instance of the function. The current code: > > - finds the caller's resume address > - finds the _callee_ frame ID > > and then uses that to set the breakpoint. Now that is plain weird! It only works because either: > > - the step_frame_id patches up the bug > > - the values match as GDB is using the inner-most, rather than outer-most frame address as part of the frame ID > > The bug apepars when trying to step over nested shared library non-debug info functions (making sense?). > > I'll follow this up after 6.1 branch is in place. > > Its pretty heavy a change to apply to that branch and this late. However, like Joel's related patch, I suspect it will be needed :-/ I've checked this into the mainline. For the moment I think I'll drop the idea of committing it to the branch. Andrew > * infrun.c (step_over_function): When non-legacy code, and no > step_frame_id, use the unwinder to get the caller's frame ID. >