Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Hui Zhu <hui_zhu@mentor.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: <gdb-patches@sourceware.org>
Subject: Re: [PATCH v2] Add autoload-breakpoints [6/6] autoload-breakpoints doc
Date: Thu, 19 Apr 2012 12:51:00 -0000	[thread overview]
Message-ID: <4F9005A3.2010008@mentor.com> (raw)
In-Reply-To: <834nsgkh28.fsf@gnu.org>

[-- Attachment #1: Type: text/plain, Size: 1938 bytes --]

On 04/19/12 02:53, Eli Zaretskii wrote:
>> Date: Wed, 18 Apr 2012 18:53:46 +0800
>> From: Hui Zhu<hui_zhu@mentor.com>
>>
>> +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  <hui_zhu@mentor.com>

	* gdb.texinfo (Setting Breakpoints): Add set breakpoint autoload.
	(Remote Serial Protocol): Add Autoload-breakpoints Format.

[-- Attachment #2: autoload-breakpoints-doc.txt --]
[-- Type: text/plain, Size: 5226 bytes --]

---
 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

  reply	other threads:[~2012-04-19 12:32 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-11 10:55 Hui Zhu
2012-04-18 12:16 ` Hui Zhu
2012-04-18 18:56   ` Eli Zaretskii
2012-04-19 12:51     ` Hui Zhu [this message]
2012-04-19 15:34       ` Eli Zaretskii
2012-04-20  0:06         ` Hui Zhu
2012-04-28  8:25           ` Hui Zhu
2012-04-28  8:33             ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4F9005A3.2010008@mentor.com \
    --to=hui_zhu@mentor.com \
    --cc=eliz@gnu.org \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox