From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14341 invoked by alias); 30 Nov 2012 18:53:48 -0000 Received: (qmail 14331 invoked by uid 22791); 30 Nov 2012 18:53:48 -0000 X-SWARE-Spam-Status: No, hits=-7.4 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,MISSING_HEADERS,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:53:43 +0000 Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id qAUIrfpm028632 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 30 Nov 2012 13:53:41 -0500 Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id qAUIreak013927; Fri, 30 Nov 2012 13:53:40 -0500 Message-ID: <50B900B3.1010007@redhat.com> Date: Fri, 30 Nov 2012 18:53: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 CC: lgustavo@codesourcery.com, 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> <50B90007.6000802@redhat.com> In-Reply-To: <50B90007.6000802@redhat.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/msg00955.txt.bz2 On 11/30/2012 06:50 PM, Pedro Alves wrote: > 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). ... and we could add a smoke test to gdb.server/ that did the same forcing, if it turns out that making the gdbserver peg fit the hole isn't an ugly/big change. -- Pedro Alves