From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12327 invoked by alias); 19 Apr 2012 12:32:10 -0000 Received: (qmail 12315 invoked by uid 22791); 19 Apr 2012 12:32:07 -0000 X-SWARE-Spam-Status: No, hits=-4.2 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL X-Spam-Check-By: sourceware.org Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 19 Apr 2012 12:31:36 +0000 Received: from svr-orw-exc-10.mgc.mentorg.com ([147.34.98.58]) by relay1.mentorg.com with esmtp id 1SKqWN-0001IL-J9 from Hui_Zhu@mentor.com ; Thu, 19 Apr 2012 05:31:35 -0700 Received: from SVR-ORW-FEM-05.mgc.mentorg.com ([147.34.97.43]) by SVR-ORW-EXC-10.mgc.mentorg.com with Microsoft SMTPSVC(6.0.3790.4675); Thu, 19 Apr 2012 05:30:51 -0700 Received: from [127.0.0.1] (147.34.91.1) by svr-orw-fem-05.mgc.mentorg.com (147.34.97.43) with Microsoft SMTP Server id 14.1.289.1; Thu, 19 Apr 2012 05:31:33 -0700 Message-ID: <4F9005A3.2010008@mentor.com> Date: Thu, 19 Apr 2012 12:51:00 -0000 From: Hui Zhu User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/20120329 Thunderbird/11.0.1 MIME-Version: 1.0 To: Eli Zaretskii CC: Subject: Re: [PATCH v2] Add autoload-breakpoints [6/6] autoload-breakpoints doc References: <4F8562EE.6080306@mentor.com> <4F8E9D3A.5000809@mentor.com> <834nsgkh28.fsf@gnu.org> In-Reply-To: <834nsgkh28.fsf@gnu.org> Content-Type: multipart/mixed; boundary="------------080307040905020005040800" 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: 2012-04/txt/msg00625.txt.bz2 --------------080307040905020005040800 Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit Content-length: 1938 On 04/19/12 02:53, Eli Zaretskii wrote: >> Date: Wed, 18 Apr 2012 18:53:46 +0800 >> From: Hui Zhu >> >> +about autoload-breakpints from the stub. > ^^^^^^^^^^ > A typo. > >> +enable or disable it. @value{GDBN} will create this breakpoint as >> +it have been created in the target. So when the target create the >> +breakpoint, it need insert this breakpoint with itself. ^^^^^^ > ^^^^^^^^^^^ ^^^^^^^^^^^ > "creates", "needs to insert", and "by itself". > >> +@item @var{id}@samp{:}@samp{R} >> +This is the remove packet. >> +@var{id} is the number of the autoload-breakpoint that this command >> +wants to remove, encoded as a hex string. >> +@value{GDBN} will remove this breakpoint as it have been removed in >> +the target. > > I don't understand the last sentence. Please explain. > >> So when the target remove the breakpoint, it need remove >> +this breakpoint with itself. ^^^^^^ ^^^^^^^^^^^ > ^^^^^^^^^^^ > "removes", "needs to remove", and "by itself". > > By the way, what non-trivial information does this sentence convey? > It seems to say "when the target removes the breakpoint, it needs to > remove the breakpoint", which is trivial. What am I missing here? This part is not very clear. What about following part? When @value{GDBN} get this packet, it will delete this breakpoint as it have been removed in the target. So when the target send this packet, it needs to remove these breakpoints in local part by itself. > >> +0 means all autoload-breakpoints. > > This sentence should be moved right after the sentence that starts > with "@var{id} is the number of the autoload-breakpoint". > > Thanks. Thanks, Hui 2012-04-19 Hui Zhu * gdb.texinfo (Setting Breakpoints): Add set breakpoint autoload. (Remote Serial Protocol): Add Autoload-breakpoints Format. --------------080307040905020005040800 Content-Type: text/plain; charset="us-ascii"; name="autoload-breakpoints-doc.txt" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="autoload-breakpoints-doc.txt" Content-length: 5226 --- doc/gdb.texinfo | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) --- a/doc/gdb.texinfo +++ b/doc/gdb.texinfo @@ -3772,6 +3772,40 @@ not support breakpoint condition evaluat to evaluating all these conditions on the host's side. @end table +Prior to @value{GDBN} connects to remote stub, some breakpoints might +have been already set in target, either by a prior @value{GDBN} session or +by the program itself through some special system API. When @value{GDBN} +connects to target, it should handle these existing breakpoints from +remote stub. We call these breakpoints @dfn{auotload-breakpoints}. + +The other use case we want to support in @value{GDBN} is that inferior +may add/set/delete breakpoints on its own, and remote stub gets +@value{GDBN} notified, and @value{GDBN} can take some actions accordingly. +We call these asynchronous reports about changes in the remote-side +breakpoints @dfn{ReportAsync}. + +This feature can be controlled via the following commands: + +@kindex set breakpoint autoload +@kindex show breakpoint autoload +@table @code +@item set breakpoint autoload query +If this option is @samp{query} (the default), @value{GDBN} will query to user +how to handle the autoload-breakpoints when @value{GDBN} connect to the stub. + +@item set breakpoint autoload merge +If this option is @samp{merge}, the autoload-breakpoints of both @value{GDBN} +and of the stub will be kept. + +@item set breakpoint autoload gdb +If this option is @samp{gdb}, the autoload-breakpoints of stub will be removed +when @value{GDBN} connects to stub. + +@item set breakpoint autoload stub +If this option is @samp{stub}, the autoload-breakpoints of GDB will be removed +when @value{GDBN} connects to stub. +@end table + @cindex negative breakpoint numbers @cindex internal @value{GDBN} breakpoints @@ -34216,6 +34250,7 @@ Show the current setting of the target w * Memory Map Format:: * Thread List Format:: * Traceframe Info Format:: +* Autoload-breakpoints Format:: @end menu @node Overview @@ -38841,6 +38876,80 @@ The formal DTD for the traceframe info f length CDATA #REQUIRED> @end smallexample +@node Autoload-breakpoints Format +@section Autoload-breakpoints Format +@cindex autoload-breakpoints format + +@table @samp +@item qBfP +@itemx qBsP +These packets request data in autoload-breakpoints base format +about autoload-breakpoints from the stub. +@value{GDBN} sends @code{qBfP} to get the first piece +of data, and multiple @code{qTsP} to get additional pieces. + +@item @samp{QBDP}@var{autoload-breakpoints base format} +@value{GDBN} and the stub use this packet to control +the autoload-breakpoints in the remote. The stub will translate +this packet through ReportAsync Packets. +@end table + +Autoload-breakpoints base format describes the operation of +the autoload-breakpoints in @value{GDBN} and the stub. + +@table @samp + +@item @var{id}@samp{:}@var{command}@samp{:}@var{addr_string}@samp{:}@var{type}@samp{:}@var{ignore_num} +@table @samp +@item @var{id} +This is the id in hex string format of this command want to control. +this command wants to control. +0 means all autoload-breakpoints. +@item @var{command} +This is the command character, either @samp{E} (for ``enable'') or +@samp{D} (for ``disable''). +If the autoload-breakpoint @var{id} does not exist, create one and +enable or disable it. @value{GDBN} will create this breakpoint as +it have been created in the target. So when the target creates the +breakpoint, it needs to insert this breakpoint by itself. +If the autoload-breakpoint @var{id} does exist, the following items +will be ignored, and the autoload-breakpoint will be enabled or +disabled as specified by @var{command}. +@item @var{addr_string} +This is the address of an autoload-breakpoint to create, encoded +as a hex string. +@item @var{type} +This is the type of the autoload-breakpoint to create, either +@samp{H} (for ``hardware'') or @samp{S} (for ``software''). +@item @var{ignore_num} +This is the ignore count of the autoload-breakpoint to create, +encoded as a hex string. +@end table + +@item @var{id}@samp{:}@samp{R} +This is the remove packet. +@var{id} is the number of the autoload-breakpoint that this command +wants to remove, encoded as a hex string. +0 means all autoload-breakpoints. +When @value{GDBN} get this packet, it will delete this breakpoint +as it have been removed in the target. So when the target send +this packet, it needs to remove these breakpoints in local part by itself. + +@item @var{id}@samp{:}@samp{C}@samp{:}@var{cmd_str} +This packet adds commands in @var{cmd_list} to the command list +of the autoload-breakpoint whose number is @var{id}. +If @var{cmd_str} is empty, the command list will be emptied. +@var{cmd_str} is encoded as hex string. + +@item @var{id}@samp{:}@samp{O}@samp{:}@var{condition_str} +This packet sets the condition of the autoload-breakpoint @var{id} to +be as specified by @var{condition_str}. +If @var{condition_str} is empty, the autoload-breakpoint becomes +unconditional. +@var{condition_str} is encoded as hex string. + +@end table + @include agentexpr.texi @node Target Descriptions --------------080307040905020005040800--