From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13322 invoked by alias); 30 Nov 2012 18:50:59 -0000 Received: (qmail 13307 invoked by uid 22791); 30 Nov 2012 18:50:57 -0000 X-SWARE-Spam-Status: No, hits=-7.9 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_DNSWL_HI,RCVD_IN_HOSTKARMA_W,RP_MATCHES_RCVD,SPF_HELO_PASS X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 30 Nov 2012 18:50:50 +0000 Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id qAUIom1E032312 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 30 Nov 2012 13:50:48 -0500 Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id qAUIolZ5025032; Fri, 30 Nov 2012 13:50:48 -0500 Message-ID: <50B90007.6000802@redhat.com> Date: Fri, 30 Nov 2012 18:50:00 -0000 From: Pedro Alves User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Thunderbird/17.0 MIME-Version: 1.0 To: lgustavo@codesourcery.com CC: gdb-patches@sourceware.org Subject: Re: [PATCH] Support targets that know how to step over breakpoints References: <506D859E.9050600@codesourcery.com> <507E99BB.8050105@codesourcery.com> <508FB2B6.6040006@codesourcery.com> <50B4DA35.3010206@codesourcery.com> <50B4E83D.9010507@redhat.com> <50B76F6A.5060802@codesourcery.com> In-Reply-To: <50B76F6A.5060802@codesourcery.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit 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: 2012-11/txt/msg00954.txt.bz2 On 11/29/2012 02:21 PM, Luis Machado wrote: > On 11/27/2012 02:20 PM, Pedro Alves wrote: >> On 11/27/2012 03:20 PM, Luis Machado wrote: >> >>> Meanwhile i've updated this patch for the latest cvs head. >>> >>> I'm wondering if the patch is too ugly for someone to take a look at it or if it is too odd a feature to add. I suppose not. >>> >>> Hopefully i can get some traction with this new refreshed and shiny version! :-) >> >> I was hoping others could comment. :-) >> >> Last we discussed this (probably a years ago already), I expressed my >> concern with upstreaming this as is. It's that this works by sending a regular >> step command to the target, and then the target steps over any breakpoint that >> may be at the current PC. If GDB is wanting to move past a breakpoint, this still >> needs to do: >> >> -> vCont;s >> <- T05 (step finished) >> <- vCont;c >> > > This seems suboptimal, though the outcome is the same. > >> An alternative would be to get rid of that T05, by defining new commands that >> tell the target to step-over-breakpoint, or continue-over-breakpoint (and signal >> variants). E.g., sbc to mean step-break-continue: > > If GDB knows the target supports stepping/continuing over breakpoints, should we bother with > adding new commands at all? Or are we assuming "step over" means just single-stepping? In any > case, the target can probably internally step over such a breakpoint before effectively continuing > in response to a vCont;c packet. What do you think? We have cases where we want to vCont;c with a breakpoint at PC, and really hit it. That's how "jump" works, but we have other cases in handle_inferior_event that rely on that too (signal handler related things). > We would then get rid of both the vCont;s and the T05 response. > >> >> -> vCont;spc >> >> That'd move past the breakpoint without causing a stop immediately. >> >> Guess I need to convince myself the current design is good enough. Comments? >> > > Though suboptimal, the design seems to do the job without being ugly. That said, the vCont;c case could be addressed for a cleaner feature. > > But i think new commands are a little too much. I suppose the current proposal isn't that much of a burden to support and I could well live with it. > Testing this is also a problem i'm worried about. We can't reliably test this (and other) features > that are not properly supported by gdbserver, but i suppose this is a different discussion. Actually, nowadays x86 GNU/Linux gdbserver is able to step ever breakpoints. See linux-low.c:linux_resume. But we don't want to use that support for regular breakpoints, because it's implemented by the old stop everything/remove break / step/put breakpoint back / resume dance, and displaced stepping is better. So we could hack it into the semantics of this qSupported feature, and run the whole testsuite with that forced enabled (e.g., with a "set remote foo" command in a board file). -- Pedro Alves