diff options
author | alk3pInjection <webmaster@raspii.tech> | 2024-02-04 16:16:35 +0800 |
---|---|---|
committer | alk3pInjection <webmaster@raspii.tech> | 2024-02-04 16:16:35 +0800 |
commit | 6ce4ebed87858ecdd79a1091367c6e961055daa9 (patch) | |
tree | 1c2a6a60531acf791531bbd9c8ac14c23ef8a66c /share/doc/gdb/General-Query-Packets.html |
https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
Change-Id: I7303388733328cd98ab9aa3c30236db67f2e9e9c
Diffstat (limited to 'share/doc/gdb/General-Query-Packets.html')
-rw-r--r-- | share/doc/gdb/General-Query-Packets.html | 1905 |
1 files changed, 1905 insertions, 0 deletions
diff --git a/share/doc/gdb/General-Query-Packets.html b/share/doc/gdb/General-Query-Packets.html new file mode 100644 index 0000000..5f8c066 --- /dev/null +++ b/share/doc/gdb/General-Query-Packets.html @@ -0,0 +1,1905 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1988-2023 Free Software Foundation, Inc. + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with the +Invariant Sections being "Free Software" and "Free Software Needs +Free Documentation", with the Front-Cover Texts being "A GNU Manual," +and with the Back-Cover Texts as in (a) below. + +(a) The FSF's Back-Cover Text is: "You are free to copy and modify +this GNU Manual. Buying copies from GNU Press supports the FSF in +developing GNU and promoting software freedom." --> +<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>Debugging with GDB: General Query Packets</title> + +<meta name="description" content="Debugging with GDB: General Query Packets"> +<meta name="keywords" content="Debugging with GDB: General Query Packets"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link href="index.html#Top" rel="start" title="Top"> +<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="Remote-Protocol.html#Remote-Protocol" rel="up" title="Remote Protocol"> +<link href="Architecture_002dSpecific-Protocol-Details.html#Architecture_002dSpecific-Protocol-Details" rel="next" title="Architecture-Specific Protocol Details"> +<link href="Stop-Reply-Packets.html#Stop-Reply-Packets" rel="previous" title="Stop Reply Packets"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.indentedblock {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smallindentedblock {margin-left: 3.2em; font-size: smaller} +div.smalllisp {margin-left: 3.2em} +kbd {font-style:oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nocodebreak {white-space:nowrap} +span.nolinebreak {white-space:nowrap} +span.roman {font-family:serif; font-weight:normal} +span.sansserif {font-family:sans-serif; font-weight:normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> +<a name="General-Query-Packets"></a> +<div class="header"> +<p> +Next: <a href="Architecture_002dSpecific-Protocol-Details.html#Architecture_002dSpecific-Protocol-Details" accesskey="n" rel="next">Architecture-Specific Protocol Details</a>, Previous: <a href="Stop-Reply-Packets.html#Stop-Reply-Packets" accesskey="p" rel="previous">Stop Reply Packets</a>, Up: <a href="Remote-Protocol.html#Remote-Protocol" accesskey="u" rel="up">Remote Protocol</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<a name="General-Query-Packets-1"></a> +<h3 class="section">E.4 General Query Packets</h3> +<a name="index-remote-query-requests"></a> + +<p>Packets starting with ‘<samp>q</samp>’ are <em>general query packets</em>; +packets starting with ‘<samp>Q</samp>’ are <em>general set packets</em>. General +query and set packets are a semi-unified form for retrieving and +sending information to and from the stub. +</p> +<p>The initial letter of a query or set packet is followed by a name +indicating what sort of thing the packet applies to. For example, +<small>GDB</small> may use a ‘<samp>qSymbol</samp>’ packet to exchange symbol +definitions with the stub. These packet names follow some +conventions: +</p> +<ul> +<li> The name must not contain commas, colons or semicolons. +</li><li> Most <small>GDB</small> query and set packets have a leading upper case +letter. +</li><li> The names of custom vendor packets should use a company prefix, in +lower case, followed by a period. For example, packets designed at +the Acme Corporation might begin with ‘<samp>qacme.foo</samp>’ (for querying +foos) or ‘<samp>Qacme.bar</samp>’ (for setting bars). +</li></ul> + +<p>The name of a query or set packet should be separated from any +parameters by a ‘<samp>:</samp>’; the parameters themselves should be +separated by ‘<samp>,</samp>’ or ‘<samp>;</samp>’. Stubs must be careful to match the +full packet name, and check for a separator or the end of the packet, +in case two packet names share a common prefix. New packets should not begin +with ‘<samp>qC</samp>’, ‘<samp>qP</samp>’, or ‘<samp>qL</samp>’<a name="DOCF22" href="#FOOT22"><sup>22</sup></a>. +</p> +<p>Like the descriptions of the other packets, each description here +has a template showing the packet’s overall syntax, followed by an +explanation of the packet’s meaning. We include spaces in some of the +templates for clarity; these are not part of the packet’s syntax. No +<small>GDB</small> packet uses spaces to separate its components. +</p> +<p>Here are the currently defined query and set packets: +</p> +<dl compact="compact"> +<dt>‘<samp>QAgent:1</samp>’</dt> +<dt>‘<samp>QAgent:0</samp>’</dt> +<dd><p>Turn on or off the agent as a helper to perform some debugging operations +delegated from <small>GDB</small> (see <a href="In_002dProcess-Agent.html#Control-Agent">Control Agent</a>). +</p> +</dd> +<dt>‘<samp>QAllow:<var>op</var>:<var>val</var>…</samp>’</dt> +<dd><a name="index-QAllow-packet"></a> +<p>Specify which operations <small>GDB</small> expects to request of the +target, as a semicolon-separated list of operation name and value +pairs. Possible values for <var>op</var> include ‘<samp>WriteReg</samp>’, +‘<samp>WriteMem</samp>’, ‘<samp>InsertBreak</samp>’, ‘<samp>InsertTrace</samp>’, +‘<samp>InsertFastTrace</samp>’, and ‘<samp>Stop</samp>’. <var>val</var> is either 0, +indicating that <small>GDB</small> will not request the operation, or 1, +indicating that it may. (The target can then use this to set up its +own internals optimally, for instance if the debugger never expects to +insert breakpoints, it may not need to install its own trap handler.) +</p> +</dd> +<dt>‘<samp>qC</samp>’</dt> +<dd><a name="index-current-thread_002c-remote-request"></a> +<a name="index-qC-packet"></a> +<p>Return the current thread ID. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>QC <var>thread-id</var></samp>’</dt> +<dd><p>Where <var>thread-id</var> is a thread ID as documented in +<a href="Packets.html#thread_002did-syntax">thread-id syntax</a>. +</p></dd> +<dt>‘<samp><span class="roman">(anything else)</span></samp>’</dt> +<dd><p>Any other reply implies the old thread ID. +</p></dd> +</dl> + +</dd> +<dt>‘<samp>qCRC:<var>addr</var>,<var>length</var></samp>’</dt> +<dd><a name="index-CRC-of-memory-block_002c-remote-request"></a> +<a name="index-qCRC-packet"></a> +<a name="qCRC-packet"></a><p>Compute the CRC checksum of a block of memory using CRC-32 defined in +IEEE 802.3. The CRC is computed byte at a time, taking the most +significant bit of each byte first. The initial pattern code +<code>0xffffffff</code> is used to ensure leading zeros affect the CRC. +</p> +<p><em>Note:</em> This is the same CRC used in validating separate debug +files (see <a href="Separate-Debug-Files.html#Separate-Debug-Files">Debugging Information in Separate +Files</a>). However the algorithm is slightly different. When validating +separate debug files, the CRC is computed taking the <em>least</em> +significant bit of each byte first, and the final result is inverted to +detect trailing zeros. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>E <var>NN</var></samp>’</dt> +<dd><p>An error (such as memory fault) +</p></dd> +<dt>‘<samp>C <var>crc32</var></samp>’</dt> +<dd><p>The specified memory region’s checksum is <var>crc32</var>. +</p></dd> +</dl> + +</dd> +<dt>‘<samp>QDisableRandomization:<var>value</var></samp>’</dt> +<dd><a name="index-disable-address-space-randomization_002c-remote-request"></a> +<a name="index-QDisableRandomization-packet"></a> +<p>Some target operating systems will randomize the virtual address space +of the inferior process as a security feature, but provide a feature +to disable such randomization, e.g. to allow for a more deterministic +debugging experience. On such systems, this packet with a <var>value</var> +of 1 directs the target to disable address space randomization for +processes subsequently started via ‘<samp>vRun</samp>’ packets, while a packet +with a <var>value</var> of 0 tells the target to enable address space +randomization. +</p> +<p>This packet is only available in extended mode (see <a href="Packets.html#extended-mode">extended mode</a>). +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>OK</samp>’</dt> +<dd><p>The request succeeded. +</p> +</dd> +<dt>‘<samp>E <var>nn</var></samp>’</dt> +<dd><p>An error occurred. The error number <var>nn</var> is given as hex digits. +</p> +</dd> +<dt>‘<samp><!-- /@w --></samp>’</dt> +<dd><p>An empty reply indicates that ‘<samp>QDisableRandomization</samp>’ is not supported +by the stub. +</p></dd> +</dl> + +<p>This packet is not probed by default; the remote stub must request it, +by supplying an appropriate ‘<samp>qSupported</samp>’ response (see <a href="#qSupported">qSupported</a>). +This should only be done on targets that actually support disabling +address space randomization. +</p> +</dd> +<dt>‘<samp>QStartupWithShell:<var>value</var></samp>’</dt> +<dd><a name="index-startup-with-shell_002c-remote-request"></a> +<a name="index-QStartupWithShell-packet"></a> +<p>On UNIX-like targets, it is possible to start the inferior using a +shell program. This is the default behavior on both <small>GDB</small> and +<code>gdbserver</code> (see <a href="Starting.html#set-startup_002dwith_002dshell">set startup-with-shell</a>). This packet is +used to inform <code>gdbserver</code> whether it should start the +inferior using a shell or not. +</p> +<p>If <var>value</var> is ‘<samp>0</samp>’, <code>gdbserver</code> will not use a shell +to start the inferior. If <var>value</var> is ‘<samp>1</samp>’, +<code>gdbserver</code> will use a shell to start the inferior. All other +values are considered an error. +</p> +<p>This packet is only available in extended mode (see <a href="Packets.html#extended-mode">extended mode</a>). +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>OK</samp>’</dt> +<dd><p>The request succeeded. +</p> +</dd> +<dt>‘<samp>E <var>nn</var></samp>’</dt> +<dd><p>An error occurred. The error number <var>nn</var> is given as hex digits. +</p></dd> +</dl> + +<p>This packet is not probed by default; the remote stub must request it, +by supplying an appropriate ‘<samp>qSupported</samp>’ response +(see <a href="#qSupported">qSupported</a>). This should only be done on targets that +actually support starting the inferior using a shell. +</p> +<p>Use of this packet is controlled by the <code>set startup-with-shell</code> +command; see <a href="Starting.html#set-startup_002dwith_002dshell">set startup-with-shell</a>. +</p> +</dd> +<dt>‘<samp>QEnvironmentHexEncoded:<var>hex-value</var></samp>’</dt> +<dd><a name="QEnvironmentHexEncoded"></a><a name="index-set-environment-variable_002c-remote-request"></a> +<a name="index-QEnvironmentHexEncoded-packet"></a> +<p>On UNIX-like targets, it is possible to set environment variables that +will be passed to the inferior during the startup process. This +packet is used to inform <code>gdbserver</code> of an environment +variable that has been defined by the user on <small>GDB</small> (see <a href="Environment.html#set-environment">set environment</a>). +</p> +<p>The packet is composed by <var>hex-value</var>, an hex encoded +representation of the <var>name=value</var> format representing an +environment variable. The name of the environment variable is +represented by <var>name</var>, and the value to be assigned to the +environment variable is represented by <var>value</var>. If the variable +has no value (i.e., the value is <code>null</code>), then <var>value</var> will +not be present. +</p> +<p>This packet is only available in extended mode (see <a href="Packets.html#extended-mode">extended mode</a>). +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>OK</samp>’</dt> +<dd><p>The request succeeded. +</p></dd> +</dl> + +<p>This packet is not probed by default; the remote stub must request it, +by supplying an appropriate ‘<samp>qSupported</samp>’ response +(see <a href="#qSupported">qSupported</a>). This should only be done on targets that +actually support passing environment variables to the starting +inferior. +</p> +<p>This packet is related to the <code>set environment</code> command; +see <a href="Environment.html#set-environment">set environment</a>. +</p> +</dd> +<dt>‘<samp>QEnvironmentUnset:<var>hex-value</var></samp>’</dt> +<dd><a name="QEnvironmentUnset"></a><a name="index-unset-environment-variable_002c-remote-request"></a> +<a name="index-QEnvironmentUnset-packet"></a> +<p>On UNIX-like targets, it is possible to unset environment variables +before starting the inferior in the remote target. This packet is +used to inform <code>gdbserver</code> of an environment variable that has +been unset by the user on <small>GDB</small> (see <a href="Environment.html#unset-environment">unset environment</a>). +</p> +<p>The packet is composed by <var>hex-value</var>, an hex encoded +representation of the name of the environment variable to be unset. +</p> +<p>This packet is only available in extended mode (see <a href="Packets.html#extended-mode">extended mode</a>). +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>OK</samp>’</dt> +<dd><p>The request succeeded. +</p></dd> +</dl> + +<p>This packet is not probed by default; the remote stub must request it, +by supplying an appropriate ‘<samp>qSupported</samp>’ response +(see <a href="#qSupported">qSupported</a>). This should only be done on targets that +actually support passing environment variables to the starting +inferior. +</p> +<p>This packet is related to the <code>unset environment</code> command; +see <a href="Environment.html#unset-environment">unset environment</a>. +</p> +</dd> +<dt>‘<samp>QEnvironmentReset</samp>’</dt> +<dd><a name="QEnvironmentReset"></a><a name="index-reset-environment_002c-remote-request"></a> +<a name="index-QEnvironmentReset-packet"></a> +<p>On UNIX-like targets, this packet is used to reset the state of +environment variables in the remote target before starting the +inferior. In this context, reset means unsetting all environment +variables that were previously set by the user (i.e., were not +initially present in the environment). It is sent to +<code>gdbserver</code> before the ‘<samp>QEnvironmentHexEncoded</samp>’ +(see <a href="#QEnvironmentHexEncoded">QEnvironmentHexEncoded</a>) and the ‘<samp>QEnvironmentUnset</samp>’ +(see <a href="#QEnvironmentUnset">QEnvironmentUnset</a>) packets. +</p> +<p>This packet is only available in extended mode (see <a href="Packets.html#extended-mode">extended mode</a>). +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>OK</samp>’</dt> +<dd><p>The request succeeded. +</p></dd> +</dl> + +<p>This packet is not probed by default; the remote stub must request it, +by supplying an appropriate ‘<samp>qSupported</samp>’ response +(see <a href="#qSupported">qSupported</a>). This should only be done on targets that +actually support passing environment variables to the starting +inferior. +</p> +</dd> +<dt>‘<samp>QSetWorkingDir:<span class="roman">[</span><var>directory</var><span class="roman">]</span></samp>’</dt> +<dd><a name="QSetWorkingDir-packet"></a><a name="index-set-working-directory_002c-remote-request"></a> +<a name="index-QSetWorkingDir-packet"></a> +<p>This packet is used to inform the remote server of the intended +current working directory for programs that are going to be executed. +</p> +<p>The packet is composed by <var>directory</var>, an hex encoded +representation of the directory that the remote inferior will use as +its current working directory. If <var>directory</var> is an empty string, +the remote server should reset the inferior’s current working +directory to its original, empty value. +</p> +<p>This packet is only available in extended mode (see <a href="Packets.html#extended-mode">extended mode</a>). +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>OK</samp>’</dt> +<dd><p>The request succeeded. +</p></dd> +</dl> + +</dd> +<dt>‘<samp>qfThreadInfo</samp>’</dt> +<dt>‘<samp>qsThreadInfo</samp>’</dt> +<dd><a name="index-list-active-threads_002c-remote-request"></a> +<a name="index-qfThreadInfo-packet"></a> +<a name="index-qsThreadInfo-packet"></a> +<p>Obtain a list of all active thread IDs from the target (OS). Since there +may be too many active threads to fit into one reply packet, this query +works iteratively: it may require more than one query/reply sequence to +obtain the entire list of threads. The first query of the sequence will +be the ‘<samp>qfThreadInfo</samp>’ query; subsequent queries in the +sequence will be the ‘<samp>qsThreadInfo</samp>’ query. +</p> +<p>NOTE: This packet replaces the ‘<samp>qL</samp>’ query (see below). +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>m <var>thread-id</var></samp>’</dt> +<dd><p>A single thread ID +</p></dd> +<dt>‘<samp>m <var>thread-id</var>,<var>thread-id</var>…</samp>’</dt> +<dd><p>a comma-separated list of thread IDs +</p></dd> +<dt>‘<samp>l</samp>’</dt> +<dd><p>(lower case letter ‘<samp>L</samp>’) denotes end of list. +</p></dd> +</dl> + +<p>In response to each query, the target will reply with a list of one or +more thread IDs, separated by commas. +<small>GDB</small> will respond to each reply with a request for more thread +ids (using the ‘<samp>qs</samp>’ form of the query), until the target responds +with ‘<samp>l</samp>’ (lower-case ell, for <em>last</em>). +Refer to <a href="Packets.html#thread_002did-syntax">thread-id syntax</a>, for the format of the <var>thread-id</var> +fields. +</p> +<p><em>Note: <small>GDB</small> will send the <code>qfThreadInfo</code> query during the +initial connection with the remote target, and the very first thread ID +mentioned in the reply will be stopped by <small>GDB</small> in a subsequent +message. Therefore, the stub should ensure that the first thread ID in +the <code>qfThreadInfo</code> reply is suitable for being stopped by <small>GDB</small>.</em> +</p> +</dd> +<dt>‘<samp>qGetTLSAddr:<var>thread-id</var>,<var>offset</var>,<var>lm</var></samp>’</dt> +<dd><a name="index-get-thread_002dlocal-storage-address_002c-remote-request"></a> +<a name="index-qGetTLSAddr-packet"></a> +<p>Fetch the address associated with thread local storage specified +by <var>thread-id</var>, <var>offset</var>, and <var>lm</var>. +</p> +<p><var>thread-id</var> is the thread ID associated with the +thread for which to fetch the TLS address. See <a href="Packets.html#thread_002did-syntax">thread-id syntax</a>. +</p> +<p><var>offset</var> is the (big endian, hex encoded) offset associated with the +thread local variable. (This offset is obtained from the debug +information associated with the variable.) +</p> +<p><var>lm</var> is the (big endian, hex encoded) OS/ABI-specific encoding of the +load module associated with the thread local storage. For example, +a <small>GNU</small>/Linux system will pass the link map address of the shared +object associated with the thread local storage under consideration. +Other operating environments may choose to represent the load module +differently, so the precise meaning of this parameter will vary. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp><var>XX</var>…</samp>’</dt> +<dd><p>Hex encoded (big endian) bytes representing the address of the thread +local storage requested. +</p> +</dd> +<dt>‘<samp>E <var>nn</var></samp>’</dt> +<dd><p>An error occurred. The error number <var>nn</var> is given as hex digits. +</p> +</dd> +<dt>‘<samp><!-- /@w --></samp>’</dt> +<dd><p>An empty reply indicates that ‘<samp>qGetTLSAddr</samp>’ is not supported by the stub. +</p></dd> +</dl> + +</dd> +<dt>‘<samp>qGetTIBAddr:<var>thread-id</var></samp>’</dt> +<dd><a name="index-get-thread-information-block-address"></a> +<a name="index-qGetTIBAddr-packet"></a> +<p>Fetch address of the Windows OS specific Thread Information Block. +</p> +<p><var>thread-id</var> is the thread ID associated with the thread. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp><var>XX</var>…</samp>’</dt> +<dd><p>Hex encoded (big endian) bytes representing the linear address of the +thread information block. +</p> +</dd> +<dt>‘<samp>E <var>nn</var></samp>’</dt> +<dd><p>An error occured. This means that either the thread was not found, or the +address could not be retrieved. +</p> +</dd> +<dt>‘<samp><!-- /@w --></samp>’</dt> +<dd><p>An empty reply indicates that ‘<samp>qGetTIBAddr</samp>’ is not supported by the stub. +</p></dd> +</dl> + +</dd> +<dt>‘<samp>qL <var>startflag</var> <var>threadcount</var> <var>nextthread</var></samp>’</dt> +<dd><p>Obtain thread information from RTOS. Where: <var>startflag</var> (one hex +digit) is one to indicate the first query and zero to indicate a +subsequent query; <var>threadcount</var> (two hex digits) is the maximum +number of threads the response packet can contain; and <var>nextthread</var> +(eight hex digits), for subsequent queries (<var>startflag</var> is zero), is +returned in the response as <var>argthread</var>. +</p> +<p>Don’t use this packet; use the ‘<samp>qfThreadInfo</samp>’ query instead (see above). +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>qM <var>count</var> <var>done</var> <var>argthread</var> <var>thread</var>…</samp>’</dt> +<dd><p>Where: <var>count</var> (two hex digits) is the number of threads being +returned; <var>done</var> (one hex digit) is zero to indicate more threads +and one indicates no further threads; <var>argthreadid</var> (eight hex +digits) is <var>nextthread</var> from the request packet; <var>thread</var>… +is a sequence of thread IDs, <var>threadid</var> (eight hex +digits), from the target. See <code>remote.c:parse_threadlist_response()</code>. +</p></dd> +</dl> + +</dd> +<dt>‘<samp>qMemTags:<var>start address</var>,<var>length</var>:<var>type</var></samp>’</dt> +<dd><a name="qMemTags"></a><a name="index-fetch-memory-tags"></a> +<a name="index-qMemTags-packet"></a> +<p>Fetch memory tags of type <var>type</var> from the address range +<span class="roman">[</span><var>start address</var>, <var>start address</var> + <var>length</var><span class="roman">)</span><!-- /@w -->. The +target is responsible for calculating how many tags will be returned, as this +is architecture-specific. +</p> +<p><var>start address</var> is the starting address of the memory range. +</p> +<p><var>length</var> is the length, in bytes, of the memory range. +</p> +<p><var>type</var> is the type of tag the request wants to fetch. The type is a signed +integer. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp><var>mxx</var>…</samp>’</dt> +<dd><p>Hex encoded sequence of uninterpreted bytes, <var>xx</var>…, representing the +tags found in the requested memory range. +</p> +</dd> +<dt>‘<samp>E <var>nn</var></samp>’</dt> +<dd><p>An error occured. This means that fetching of memory tags failed for some +reason. +</p> +</dd> +<dt>‘<samp><!-- /@w --></samp>’</dt> +<dd><p>An empty reply indicates that ‘<samp>qMemTags</samp>’ is not supported by the stub, +although this should not happen given <small>GDB</small> will only send this packet +if the stub has advertised support for memory tagging via ‘<samp>qSupported</samp>’. +</p></dd> +</dl> + +</dd> +<dt>‘<samp>QMemTags:<var>start address</var>,<var>length</var>:<var>type</var>:<var>tag bytes</var></samp>’</dt> +<dd><a name="QMemTags"></a><a name="index-store-memory-tags"></a> +<a name="index-QMemTags-packet"></a> +<p>Store memory tags of type <var>type</var> to the address range +<span class="roman">[</span><var>start address</var>, <var>start address</var> + <var>length</var><span class="roman">)</span><!-- /@w -->. The +target is responsible for interpreting the type, the tag bytes and modifying +the memory tag granules accordingly, given this is architecture-specific. +</p> +<p>The interpretation of how many tags (<var>nt</var>) should be written to how many +memory tag granules (<var>ng</var>) is also architecture-specific. The behavior is +implementation-specific, but the following is suggested. +</p> +<p>If the number of memory tags, <var>nt</var>, is greater than or equal to the +number of memory tag granules, <var>ng</var>, only <var>ng</var> tags will be +stored. +</p> +<p>If <var>nt</var> is less than <var>ng</var>, the behavior is that of a fill operation, +and the tag bytes will be used as a pattern that will get repeated until +<var>ng</var> tags are stored. +</p> +<p><var>start address</var> is the starting address of the memory range. The address +does not have any restriction on alignment or size. +</p> +<p><var>length</var> is the length, in bytes, of the memory range. +</p> +<p><var>type</var> is the type of tag the request wants to fetch. The type is a signed +integer. +</p> +<p><var>tag bytes</var> is a sequence of hex encoded uninterpreted bytes which will be +interpreted by the target. Each pair of hex digits is interpreted as a +single byte. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>OK</samp>’</dt> +<dd><p>The request was successful and the memory tag granules were modified +accordingly. +</p> +</dd> +<dt>‘<samp>E <var>nn</var></samp>’</dt> +<dd><p>An error occured. This means that modifying the memory tag granules failed +for some reason. +</p> +</dd> +<dt>‘<samp><!-- /@w --></samp>’</dt> +<dd><p>An empty reply indicates that ‘<samp>QMemTags</samp>’ is not supported by the stub, +although this should not happen given <small>GDB</small> will only send this packet +if the stub has advertised support for memory tagging via ‘<samp>qSupported</samp>’. +</p></dd> +</dl> + +</dd> +<dt>‘<samp>qOffsets</samp>’</dt> +<dd><a name="index-section-offsets_002c-remote-request"></a> +<a name="index-qOffsets-packet"></a> +<p>Get section offsets that the target used when relocating the downloaded +image. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>Text=<var>xxx</var>;Data=<var>yyy</var><span class="roman">[</span>;Bss=<var>zzz</var><span class="roman">]</span></samp>’</dt> +<dd><p>Relocate the <code>Text</code> section by <var>xxx</var> from its original address. +Relocate the <code>Data</code> section by <var>yyy</var> from its original address. +If the object file format provides segment information (e.g. <small>ELF</small> +‘<samp>PT_LOAD</samp>’ program headers), <small>GDB</small> will relocate entire +segments by the supplied offsets. +</p> +<p><em>Note: while a <code>Bss</code> offset may be included in the response, +<small>GDB</small> ignores this and instead applies the <code>Data</code> offset +to the <code>Bss</code> section.</em> +</p> +</dd> +<dt>‘<samp>TextSeg=<var>xxx</var><span class="roman">[</span>;DataSeg=<var>yyy</var><span class="roman">]</span></samp>’</dt> +<dd><p>Relocate the first segment of the object file, which conventionally +contains program code, to a starting address of <var>xxx</var>. If +‘<samp>DataSeg</samp>’ is specified, relocate the second segment, which +conventionally contains modifiable data, to a starting address of +<var>yyy</var>. <small>GDB</small> will report an error if the object file +does not contain segment information, or does not contain at least +as many segments as mentioned in the reply. Extra segments are +kept at fixed offsets relative to the last relocated segment. +</p></dd> +</dl> + +</dd> +<dt>‘<samp>qP <var>mode</var> <var>thread-id</var></samp>’</dt> +<dd><a name="index-thread-information_002c-remote-request"></a> +<a name="index-qP-packet"></a> +<p>Returns information on <var>thread-id</var>. Where: <var>mode</var> is a hex +encoded 32 bit mode; <var>thread-id</var> is a thread ID +(see <a href="Packets.html#thread_002did-syntax">thread-id syntax</a>). +</p> +<p>Don’t use this packet; use the ‘<samp>qThreadExtraInfo</samp>’ query instead +(see below). +</p> +<p>Reply: see <code>remote.c:remote_unpack_thread_info_response()</code>. +</p> +</dd> +<dt>‘<samp>QNonStop:1</samp>’</dt> +<dt>‘<samp>QNonStop:0</samp>’</dt> +<dd><a name="index-non_002dstop-mode_002c-remote-request"></a> +<a name="index-QNonStop-packet"></a> +<a name="QNonStop"></a><p>Enter non-stop (‘<samp>QNonStop:1</samp>’) or all-stop (‘<samp>QNonStop:0</samp>’) mode. +See <a href="Remote-Non_002dStop.html#Remote-Non_002dStop">Remote Non-Stop</a>, for more information. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>OK</samp>’</dt> +<dd><p>The request succeeded. +</p> +</dd> +<dt>‘<samp>E <var>nn</var></samp>’</dt> +<dd><p>An error occurred. The error number <var>nn</var> is given as hex digits. +</p> +</dd> +<dt>‘<samp><!-- /@w --></samp>’</dt> +<dd><p>An empty reply indicates that ‘<samp>QNonStop</samp>’ is not supported by +the stub. +</p></dd> +</dl> + +<p>This packet is not probed by default; the remote stub must request it, +by supplying an appropriate ‘<samp>qSupported</samp>’ response (see <a href="#qSupported">qSupported</a>). +Use of this packet is controlled by the <code>set non-stop</code> command; +see <a href="Non_002dStop-Mode.html#Non_002dStop-Mode">Non-Stop Mode</a>. +</p> +</dd> +<dt>‘<samp>QCatchSyscalls:1 <span class="roman">[</span>;<var>sysno</var><span class="roman">]</span>…</samp>’</dt> +<dt>‘<samp>QCatchSyscalls:0</samp>’</dt> +<dd><a name="index-catch-syscalls-from-inferior_002c-remote-request"></a> +<a name="index-QCatchSyscalls-packet"></a> +<a name="QCatchSyscalls"></a><p>Enable (‘<samp>QCatchSyscalls:1</samp>’) or disable (‘<samp>QCatchSyscalls:0</samp>’) +catching syscalls from the inferior process. +</p> +<p>For ‘<samp>QCatchSyscalls:1</samp>’, each listed syscall <var>sysno</var> (encoded +in hex) should be reported to <small>GDB</small>. If no syscall <var>sysno</var> +is listed, every system call should be reported. +</p> +<p>Note that if a syscall not in the list is reported, <small>GDB</small> will +still filter the event according to its own list from all corresponding +<code>catch syscall</code> commands. However, it is more efficient to only +report the requested syscalls. +</p> +<p>Multiple ‘<samp>QCatchSyscalls:1</samp>’ packets do not combine; any earlier +‘<samp>QCatchSyscalls:1</samp>’ list is completely replaced by the new list. +</p> +<p>If the inferior process execs, the state of ‘<samp>QCatchSyscalls</samp>’ is +kept for the new process too. On targets where exec may affect syscall +numbers, for example with exec between 32 and 64-bit processes, the +client should send a new packet with the new syscall list. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>OK</samp>’</dt> +<dd><p>The request succeeded. +</p> +</dd> +<dt>‘<samp>E <var>nn</var></samp>’</dt> +<dd><p>An error occurred. <var>nn</var> are hex digits. +</p> +</dd> +<dt>‘<samp><!-- /@w --></samp>’</dt> +<dd><p>An empty reply indicates that ‘<samp>QCatchSyscalls</samp>’ is not supported by +the stub. +</p></dd> +</dl> + +<p>Use of this packet is controlled by the <code>set remote catch-syscalls</code> +command (see <a href="Remote-Configuration.html#Remote-Configuration">set remote catch-syscalls</a>). +This packet is not probed by default; the remote stub must request it, +by supplying an appropriate ‘<samp>qSupported</samp>’ response (see <a href="#qSupported">qSupported</a>). +</p> +</dd> +<dt>‘<samp>QPassSignals: <var>signal</var> <span class="roman">[</span>;<var>signal</var><span class="roman">]</span>…</samp>’</dt> +<dd><a name="index-pass-signals-to-inferior_002c-remote-request"></a> +<a name="index-QPassSignals-packet"></a> +<a name="QPassSignals"></a><p>Each listed <var>signal</var> should be passed directly to the inferior process. +Signals are numbered identically to continue packets and stop replies +(see <a href="Stop-Reply-Packets.html#Stop-Reply-Packets">Stop Reply Packets</a>). Each <var>signal</var> list item should be +strictly greater than the previous item. These signals do not need to stop +the inferior, or be reported to <small>GDB</small>. All other signals should be +reported to <small>GDB</small>. Multiple ‘<samp>QPassSignals</samp>’ packets do not +combine; any earlier ‘<samp>QPassSignals</samp>’ list is completely replaced by the +new list. This packet improves performance when using ‘<samp>handle +<var>signal</var> nostop noprint pass</samp>’. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>OK</samp>’</dt> +<dd><p>The request succeeded. +</p> +</dd> +<dt>‘<samp>E <var>nn</var></samp>’</dt> +<dd><p>An error occurred. The error number <var>nn</var> is given as hex digits. +</p> +</dd> +<dt>‘<samp><!-- /@w --></samp>’</dt> +<dd><p>An empty reply indicates that ‘<samp>QPassSignals</samp>’ is not supported by +the stub. +</p></dd> +</dl> + +<p>Use of this packet is controlled by the <code>set remote pass-signals</code> +command (see <a href="Remote-Configuration.html#Remote-Configuration">set remote pass-signals</a>). +This packet is not probed by default; the remote stub must request it, +by supplying an appropriate ‘<samp>qSupported</samp>’ response (see <a href="#qSupported">qSupported</a>). +</p> +</dd> +<dt>‘<samp>QProgramSignals: <var>signal</var> <span class="roman">[</span>;<var>signal</var><span class="roman">]</span>…</samp>’</dt> +<dd><a name="index-signals-the-inferior-may-see_002c-remote-request"></a> +<a name="index-QProgramSignals-packet"></a> +<a name="QProgramSignals"></a><p>Each listed <var>signal</var> may be delivered to the inferior process. +Others should be silently discarded. +</p> +<p>In some cases, the remote stub may need to decide whether to deliver a +signal to the program or not without <small>GDB</small> involvement. One +example of that is while detaching — the program’s threads may have +stopped for signals that haven’t yet had a chance of being reported to +<small>GDB</small>, and so the remote stub can use the signal list specified +by this packet to know whether to deliver or ignore those pending +signals. +</p> +<p>This does not influence whether to deliver a signal as requested by a +resumption packet (see <a href="Packets.html#vCont-packet">vCont packet</a>). +</p> +<p>Signals are numbered identically to continue packets and stop replies +(see <a href="Stop-Reply-Packets.html#Stop-Reply-Packets">Stop Reply Packets</a>). Each <var>signal</var> list item should be +strictly greater than the previous item. Multiple +‘<samp>QProgramSignals</samp>’ packets do not combine; any earlier +‘<samp>QProgramSignals</samp>’ list is completely replaced by the new list. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>OK</samp>’</dt> +<dd><p>The request succeeded. +</p> +</dd> +<dt>‘<samp>E <var>nn</var></samp>’</dt> +<dd><p>An error occurred. The error number <var>nn</var> is given as hex digits. +</p> +</dd> +<dt>‘<samp><!-- /@w --></samp>’</dt> +<dd><p>An empty reply indicates that ‘<samp>QProgramSignals</samp>’ is not supported +by the stub. +</p></dd> +</dl> + +<p>Use of this packet is controlled by the <code>set remote program-signals</code> +command (see <a href="Remote-Configuration.html#Remote-Configuration">set remote program-signals</a>). +This packet is not probed by default; the remote stub must request it, +by supplying an appropriate ‘<samp>qSupported</samp>’ response (see <a href="#qSupported">qSupported</a>). +</p> +<a name="QThreadEvents"></a></dd> +<dt>‘<samp>QThreadEvents:1</samp>’</dt> +<dt>‘<samp>QThreadEvents:0</samp>’</dt> +<dd><a name="index-thread-create_002fexit-events_002c-remote-request"></a> +<a name="index-QThreadEvents-packet"></a> + +<p>Enable (‘<samp>QThreadEvents:1</samp>’) or disable (‘<samp>QThreadEvents:0</samp>’) +reporting of thread create and exit events. See <a href="Stop-Reply-Packets.html#thread-create-event">thread create event</a>, for the reply specifications. For example, this is used in +non-stop mode when <small>GDB</small> stops a set of threads and +synchronously waits for the their corresponding stop replies. Without +exit events, if one of the threads exits, <small>GDB</small> would hang +forever not knowing that it should no longer expect a stop for that +same thread. <small>GDB</small> does not enable this feature unless the +stub reports that it supports it by including ‘<samp>QThreadEvents+</samp>’ in +its ‘<samp>qSupported</samp>’ reply. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>OK</samp>’</dt> +<dd><p>The request succeeded. +</p> +</dd> +<dt>‘<samp>E <var>nn</var></samp>’</dt> +<dd><p>An error occurred. The error number <var>nn</var> is given as hex digits. +</p> +</dd> +<dt>‘<samp><!-- /@w --></samp>’</dt> +<dd><p>An empty reply indicates that ‘<samp>QThreadEvents</samp>’ is not supported by +the stub. +</p></dd> +</dl> + +<p>Use of this packet is controlled by the <code>set remote thread-events</code> +command (see <a href="Remote-Configuration.html#Remote-Configuration">set remote thread-events</a>). +</p> +</dd> +<dt>‘<samp>qRcmd,<var>command</var></samp>’</dt> +<dd><a name="index-execute-remote-command_002c-remote-request"></a> +<a name="index-qRcmd-packet"></a> +<p><var>command</var> (hex encoded) is passed to the local interpreter for +execution. Invalid commands should be reported using the output +string. Before the final result packet, the target may also respond +with a number of intermediate ‘<samp>O<var>output</var></samp>’ console output +packets. <em>Implementors should note that providing access to a +stubs’s interpreter may have security implications</em>. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>OK</samp>’</dt> +<dd><p>A command response with no output. +</p></dd> +<dt>‘<samp><var>OUTPUT</var></samp>’</dt> +<dd><p>A command response with the hex encoded output string <var>OUTPUT</var>. +</p></dd> +<dt>‘<samp>E <var>NN</var></samp>’</dt> +<dd><p>Indicate a badly formed request. The error number <var>NN</var> is given as +hex digits. +</p></dd> +<dt>‘<samp><!-- /@w --></samp>’</dt> +<dd><p>An empty reply indicates that ‘<samp>qRcmd</samp>’ is not recognized. +</p></dd> +</dl> + +<p>(Note that the <code>qRcmd</code> packet’s name is separated from the +command by a ‘<samp>,</samp>’, not a ‘<samp>:</samp>’, contrary to the naming +conventions above. Please don’t use this packet as a model for new +packets.) +</p> +</dd> +<dt>‘<samp>qSearch:memory:<var>address</var>;<var>length</var>;<var>search-pattern</var></samp>’</dt> +<dd><a name="index-searching-memory_002c-in-remote-debugging"></a> +<a name="index-qSearch_003amemory-packet"></a> +<a name="index-qSearch-memory-packet"></a> +<a name="qSearch-memory"></a><p>Search <var>length</var> bytes at <var>address</var> for <var>search-pattern</var>. +Both <var>address</var> and <var>length</var> are encoded in hex; +<var>search-pattern</var> is a sequence of bytes, also hex encoded. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>0</samp>’</dt> +<dd><p>The pattern was not found. +</p></dd> +<dt>‘<samp>1,address</samp>’</dt> +<dd><p>The pattern was found at <var>address</var>. +</p></dd> +<dt>‘<samp>E <var>NN</var></samp>’</dt> +<dd><p>A badly formed request or an error was encountered while searching memory. +</p></dd> +<dt>‘<samp><!-- /@w --></samp>’</dt> +<dd><p>An empty reply indicates that ‘<samp>qSearch:memory</samp>’ is not recognized. +</p></dd> +</dl> + +</dd> +<dt>‘<samp>QStartNoAckMode</samp>’</dt> +<dd><a name="index-QStartNoAckMode-packet"></a> +<a name="QStartNoAckMode"></a><p>Request that the remote stub disable the normal ‘<samp>+</samp>’/‘<samp>-</samp>’ +protocol acknowledgments (see <a href="Packet-Acknowledgment.html#Packet-Acknowledgment">Packet Acknowledgment</a>). +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>OK</samp>’</dt> +<dd><p>The stub has switched to no-acknowledgment mode. +<small>GDB</small> acknowledges this response, +but neither the stub nor <small>GDB</small> shall send or expect further +‘<samp>+</samp>’/‘<samp>-</samp>’ acknowledgments in the current connection. +</p></dd> +<dt>‘<samp><!-- /@w --></samp>’</dt> +<dd><p>An empty reply indicates that the stub does not support no-acknowledgment mode. +</p></dd> +</dl> + +</dd> +<dt>‘<samp>qSupported <span class="roman">[</span>:<var>gdbfeature</var> <span class="roman">[</span>;<var>gdbfeature</var><span class="roman">]</span>… <span class="roman">]</span></samp>’</dt> +<dd><a name="index-supported-packets_002c-remote-query"></a> +<a name="index-features-of-the-remote-protocol"></a> +<a name="index-qSupported-packet"></a> +<a name="qSupported"></a><p>Tell the remote stub about features supported by <small>GDB</small>, and +query the stub for features it supports. This packet allows +<small>GDB</small> and the remote stub to take advantage of each others’ +features. ‘<samp>qSupported</samp>’ also consolidates multiple feature probes +at startup, to improve <small>GDB</small> performance—a single larger +packet performs better than multiple smaller probe packets on +high-latency links. Some features may enable behavior which must not +be on by default, e.g. because it would confuse older clients or +stubs. Other features may describe packets which could be +automatically probed for, but are not. These features must be +reported before <small>GDB</small> will use them. This “default +unsupported” behavior is not appropriate for all packets, but it +helps to keep the initial connection time under control with new +versions of <small>GDB</small> which support increasing numbers of packets. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp><var>stubfeature</var> <span class="roman">[</span>;<var>stubfeature</var><span class="roman">]</span>…</samp>’</dt> +<dd><p>The stub supports or does not support each returned <var>stubfeature</var>, +depending on the form of each <var>stubfeature</var> (see below for the +possible forms). +</p></dd> +<dt>‘<samp><!-- /@w --></samp>’</dt> +<dd><p>An empty reply indicates that ‘<samp>qSupported</samp>’ is not recognized, +or that no features needed to be reported to <small>GDB</small>. +</p></dd> +</dl> + +<p>The allowed forms for each feature (either a <var>gdbfeature</var> in the +‘<samp>qSupported</samp>’ packet, or a <var>stubfeature</var> in the response) +are: +</p> +<dl compact="compact"> +<dt>‘<samp><var>name</var>=<var>value</var></samp>’</dt> +<dd><p>The remote protocol feature <var>name</var> is supported, and associated +with the specified <var>value</var>. The format of <var>value</var> depends +on the feature, but it must not include a semicolon. +</p></dd> +<dt>‘<samp><var>name</var>+</samp>’</dt> +<dd><p>The remote protocol feature <var>name</var> is supported, and does not +need an associated value. +</p></dd> +<dt>‘<samp><var>name</var>-</samp>’</dt> +<dd><p>The remote protocol feature <var>name</var> is not supported. +</p></dd> +<dt>‘<samp><var>name</var>?</samp>’</dt> +<dd><p>The remote protocol feature <var>name</var> may be supported, and +<small>GDB</small> should auto-detect support in some other way when it is +needed. This form will not be used for <var>gdbfeature</var> notifications, +but may be used for <var>stubfeature</var> responses. +</p></dd> +</dl> + +<p>Whenever the stub receives a ‘<samp>qSupported</samp>’ request, the +supplied set of <small>GDB</small> features should override any previous +request. This allows <small>GDB</small> to put the stub in a known +state, even if the stub had previously been communicating with +a different version of <small>GDB</small>. +</p> +<p>The following values of <var>gdbfeature</var> (for the packet sent by <small>GDB</small>) +are defined: +</p> +<dl compact="compact"> +<dt>‘<samp>multiprocess</samp>’</dt> +<dd><p>This feature indicates whether <small>GDB</small> supports multiprocess +extensions to the remote protocol. <small>GDB</small> does not use such +extensions unless the stub also reports that it supports them by +including ‘<samp>multiprocess+</samp>’ in its ‘<samp>qSupported</samp>’ reply. +See <a href="#multiprocess-extensions">multiprocess extensions</a>, for details. +</p> +</dd> +<dt>‘<samp>xmlRegisters</samp>’</dt> +<dd><p>This feature indicates that <small>GDB</small> supports the XML target +description. If the stub sees ‘<samp>xmlRegisters=</samp>’ with target +specific strings separated by a comma, it will report register +description. +</p> +</dd> +<dt>‘<samp>qRelocInsn</samp>’</dt> +<dd><p>This feature indicates whether <small>GDB</small> supports the +‘<samp>qRelocInsn</samp>’ packet (see <a href="Tracepoint-Packets.html#Tracepoint-Packets">Relocate +instruction reply packet</a>). +</p> +</dd> +<dt>‘<samp>swbreak</samp>’</dt> +<dd><p>This feature indicates whether <small>GDB</small> supports the swbreak stop +reason in stop replies. See <a href="Stop-Reply-Packets.html#swbreak-stop-reason">swbreak stop reason</a>, for details. +</p> +</dd> +<dt>‘<samp>hwbreak</samp>’</dt> +<dd><p>This feature indicates whether <small>GDB</small> supports the hwbreak stop +reason in stop replies. See <a href="Stop-Reply-Packets.html#swbreak-stop-reason">swbreak stop reason</a>, for details. +</p> +</dd> +<dt>‘<samp>fork-events</samp>’</dt> +<dd><p>This feature indicates whether <small>GDB</small> supports fork event +extensions to the remote protocol. <small>GDB</small> does not use such +extensions unless the stub also reports that it supports them by +including ‘<samp>fork-events+</samp>’ in its ‘<samp>qSupported</samp>’ reply. +</p> +</dd> +<dt>‘<samp>vfork-events</samp>’</dt> +<dd><p>This feature indicates whether <small>GDB</small> supports vfork event +extensions to the remote protocol. <small>GDB</small> does not use such +extensions unless the stub also reports that it supports them by +including ‘<samp>vfork-events+</samp>’ in its ‘<samp>qSupported</samp>’ reply. +</p> +</dd> +<dt>‘<samp>exec-events</samp>’</dt> +<dd><p>This feature indicates whether <small>GDB</small> supports exec event +extensions to the remote protocol. <small>GDB</small> does not use such +extensions unless the stub also reports that it supports them by +including ‘<samp>exec-events+</samp>’ in its ‘<samp>qSupported</samp>’ reply. +</p> +</dd> +<dt>‘<samp>vContSupported</samp>’</dt> +<dd><p>This feature indicates whether <small>GDB</small> wants to know the +supported actions in the reply to ‘<samp>vCont?</samp>’ packet. +</p></dd> +</dl> + +<p>Stubs should ignore any unknown values for +<var>gdbfeature</var>. Any <small>GDB</small> which sends a ‘<samp>qSupported</samp>’ +packet supports receiving packets of unlimited length (earlier +versions of <small>GDB</small> may reject overly long responses). Additional values +for <var>gdbfeature</var> may be defined in the future to let the stub take +advantage of new features in <small>GDB</small>, e.g. incompatible +improvements in the remote protocol—the ‘<samp>multiprocess</samp>’ feature is +an example of such a feature. The stub’s reply should be independent +of the <var>gdbfeature</var> entries sent by <small>GDB</small>; first <small>GDB</small> +describes all the features it supports, and then the stub replies with +all the features it supports. +</p> +<p>Similarly, <small>GDB</small> will silently ignore unrecognized stub feature +responses, as long as each response uses one of the standard forms. +</p> +<p>Some features are flags. A stub which supports a flag feature +should respond with a ‘<samp>+</samp>’ form response. Other features +require values, and the stub should respond with an ‘<samp>=</samp>’ +form response. +</p> +<p>Each feature has a default value, which <small>GDB</small> will use if +‘<samp>qSupported</samp>’ is not available or if the feature is not mentioned +in the ‘<samp>qSupported</samp>’ response. The default values are fixed; a +stub is free to omit any feature responses that match the defaults. +</p> +<p>Not all features can be probed, but for those which can, the probing +mechanism is useful: in some cases, a stub’s internal +architecture may not allow the protocol layer to know some information +about the underlying target in advance. This is especially common in +stubs which may be configured for multiple targets. +</p> +<p>These are the currently defined stub features and their properties: +</p> +<table> +<tr><td width="35%">Feature Name</td><td width="20%">Value Required</td><td width="12%">Default</td><td width="20%">Probe Allowed</td></tr> +<tr><td width="35%">‘<samp>PacketSize</samp>’</td><td width="20%">Yes</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">No</td></tr> +<tr><td width="35%">‘<samp>qXfer:auxv:read</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">Yes</td></tr> +<tr><td width="35%">‘<samp>qXfer:btrace:read</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">Yes</td></tr> +<tr><td width="35%">‘<samp>qXfer:btrace-conf:read</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">Yes</td></tr> +<tr><td width="35%">‘<samp>qXfer:exec-file:read</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">Yes</td></tr> +<tr><td width="35%">‘<samp>qXfer:features:read</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">Yes</td></tr> +<tr><td width="35%">‘<samp>qXfer:libraries:read</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">Yes</td></tr> +<tr><td width="35%">‘<samp>qXfer:libraries-svr4:read</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">Yes</td></tr> +<tr><td width="35%">‘<samp>augmented-libraries-svr4-read</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">No</td></tr> +<tr><td width="35%">‘<samp>qXfer:memory-map:read</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">Yes</td></tr> +<tr><td width="35%">‘<samp>qXfer:sdata:read</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">Yes</td></tr> +<tr><td width="35%">‘<samp>qXfer:siginfo:read</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">Yes</td></tr> +<tr><td width="35%">‘<samp>qXfer:siginfo:write</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">Yes</td></tr> +<tr><td width="35%">‘<samp>qXfer:threads:read</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">Yes</td></tr> +<tr><td width="35%">‘<samp>qXfer:traceframe-info:read</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">Yes</td></tr> +<tr><td width="35%">‘<samp>qXfer:uib:read</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">Yes</td></tr> +<tr><td width="35%">‘<samp>qXfer:fdpic:read</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">Yes</td></tr> +<tr><td width="35%">‘<samp>Qbtrace:off</samp>’</td><td width="20%">Yes</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">Yes</td></tr> +<tr><td width="35%">‘<samp>Qbtrace:bts</samp>’</td><td width="20%">Yes</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">Yes</td></tr> +<tr><td width="35%">‘<samp>Qbtrace:pt</samp>’</td><td width="20%">Yes</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">Yes</td></tr> +<tr><td width="35%">‘<samp>Qbtrace-conf:bts:size</samp>’</td><td width="20%">Yes</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">Yes</td></tr> +<tr><td width="35%">‘<samp>Qbtrace-conf:pt:size</samp>’</td><td width="20%">Yes</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">Yes</td></tr> +<tr><td width="35%">‘<samp>QNonStop</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">Yes</td></tr> +<tr><td width="35%">‘<samp>QCatchSyscalls</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">Yes</td></tr> +<tr><td width="35%">‘<samp>QPassSignals</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">Yes</td></tr> +<tr><td width="35%">‘<samp>QStartNoAckMode</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">Yes</td></tr> +<tr><td width="35%">‘<samp>multiprocess</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">No</td></tr> +<tr><td width="35%">‘<samp>ConditionalBreakpoints</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">No</td></tr> +<tr><td width="35%">‘<samp>ConditionalTracepoints</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">No</td></tr> +<tr><td width="35%">‘<samp>ReverseContinue</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">No</td></tr> +<tr><td width="35%">‘<samp>ReverseStep</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">No</td></tr> +<tr><td width="35%">‘<samp>TracepointSource</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">No</td></tr> +<tr><td width="35%">‘<samp>QAgent</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">No</td></tr> +<tr><td width="35%">‘<samp>QAllow</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">No</td></tr> +<tr><td width="35%">‘<samp>QDisableRandomization</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">No</td></tr> +<tr><td width="35%">‘<samp>EnableDisableTracepoints</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">No</td></tr> +<tr><td width="35%">‘<samp>QTBuffer:size</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">No</td></tr> +<tr><td width="35%">‘<samp>tracenz</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">No</td></tr> +<tr><td width="35%">‘<samp>BreakpointCommands</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">No</td></tr> +<tr><td width="35%">‘<samp>swbreak</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">No</td></tr> +<tr><td width="35%">‘<samp>hwbreak</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">No</td></tr> +<tr><td width="35%">‘<samp>fork-events</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">No</td></tr> +<tr><td width="35%">‘<samp>vfork-events</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">No</td></tr> +<tr><td width="35%">‘<samp>exec-events</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">No</td></tr> +<tr><td width="35%">‘<samp>QThreadEvents</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">No</td></tr> +<tr><td width="35%">‘<samp>no-resumed</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">No</td></tr> +<tr><td width="35%">‘<samp>memory-tagging</samp>’</td><td width="20%">No</td><td width="12%">‘<samp>-</samp>’</td><td width="20%">No</td></tr> +</table> + +<p>These are the currently defined stub features, in more detail: +</p> +<dl compact="compact"> +<dd><a name="index-packet-size_002c-remote-protocol"></a> +</dd> +<dt>‘<samp>PacketSize=<var>bytes</var></samp>’</dt> +<dd><p>The remote stub can accept packets up to at least <var>bytes</var> in +length. <small>GDB</small> will send packets up to this size for bulk +transfers, and will never send larger packets. This is a limit on the +data characters in the packet, including the frame and checksum. +There is no trailing NUL byte in a remote protocol packet; if the stub +stores packets in a NUL-terminated format, it should allow an extra +byte in its buffer for the NUL. If this stub feature is not supported, +<small>GDB</small> guesses based on the size of the ‘<samp>g</samp>’ packet response. +</p> +</dd> +<dt>‘<samp>qXfer:auxv:read</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>qXfer:auxv:read</samp>’ packet +(see <a href="#qXfer-auxiliary-vector-read">qXfer auxiliary vector read</a>). +</p> +</dd> +<dt>‘<samp>qXfer:btrace:read</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>qXfer:btrace:read</samp>’ +packet (see <a href="#qXfer-btrace-read">qXfer btrace read</a>). +</p> +</dd> +<dt>‘<samp>qXfer:btrace-conf:read</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>qXfer:btrace-conf:read</samp>’ +packet (see <a href="#qXfer-btrace_002dconf-read">qXfer btrace-conf read</a>). +</p> +</dd> +<dt>‘<samp>qXfer:exec-file:read</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>qXfer:exec-file:read</samp>’ packet +(see <a href="#qXfer-executable-filename-read">qXfer executable filename read</a>). +</p> +</dd> +<dt>‘<samp>qXfer:features:read</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>qXfer:features:read</samp>’ packet +(see <a href="#qXfer-target-description-read">qXfer target description read</a>). +</p> +</dd> +<dt>‘<samp>qXfer:libraries:read</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>qXfer:libraries:read</samp>’ packet +(see <a href="#qXfer-library-list-read">qXfer library list read</a>). +</p> +</dd> +<dt>‘<samp>qXfer:libraries-svr4:read</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>qXfer:libraries-svr4:read</samp>’ packet +(see <a href="#qXfer-svr4-library-list-read">qXfer svr4 library list read</a>). +</p> +</dd> +<dt>‘<samp>augmented-libraries-svr4-read</samp>’</dt> +<dd><p>The remote stub understands the augmented form of the +‘<samp>qXfer:libraries-svr4:read</samp>’ packet +(see <a href="#qXfer-svr4-library-list-read">qXfer svr4 library list read</a>). +</p> +</dd> +<dt>‘<samp>qXfer:memory-map:read</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>qXfer:memory-map:read</samp>’ packet +(see <a href="#qXfer-memory-map-read">qXfer memory map read</a>). +</p> +</dd> +<dt>‘<samp>qXfer:sdata:read</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>qXfer:sdata:read</samp>’ packet +(see <a href="#qXfer-sdata-read">qXfer sdata read</a>). +</p> +</dd> +<dt>‘<samp>qXfer:siginfo:read</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>qXfer:siginfo:read</samp>’ packet +(see <a href="#qXfer-siginfo-read">qXfer siginfo read</a>). +</p> +</dd> +<dt>‘<samp>qXfer:siginfo:write</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>qXfer:siginfo:write</samp>’ packet +(see <a href="#qXfer-siginfo-write">qXfer siginfo write</a>). +</p> +</dd> +<dt>‘<samp>qXfer:threads:read</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>qXfer:threads:read</samp>’ packet +(see <a href="#qXfer-threads-read">qXfer threads read</a>). +</p> +</dd> +<dt>‘<samp>qXfer:traceframe-info:read</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>qXfer:traceframe-info:read</samp>’ +packet (see <a href="#qXfer-traceframe-info-read">qXfer traceframe info read</a>). +</p> +</dd> +<dt>‘<samp>qXfer:uib:read</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>qXfer:uib:read</samp>’ +packet (see <a href="#qXfer-unwind-info-block">qXfer unwind info block</a>). +</p> +</dd> +<dt>‘<samp>qXfer:fdpic:read</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>qXfer:fdpic:read</samp>’ +packet (see <a href="#qXfer-fdpic-loadmap-read">qXfer fdpic loadmap read</a>). +</p> +</dd> +<dt>‘<samp>QNonStop</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>QNonStop</samp>’ packet +(see <a href="#QNonStop">QNonStop</a>). +</p> +</dd> +<dt>‘<samp>QCatchSyscalls</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>QCatchSyscalls</samp>’ packet +(see <a href="#QCatchSyscalls">QCatchSyscalls</a>). +</p> +</dd> +<dt>‘<samp>QPassSignals</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>QPassSignals</samp>’ packet +(see <a href="#QPassSignals">QPassSignals</a>). +</p> +</dd> +<dt>‘<samp>QStartNoAckMode</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>QStartNoAckMode</samp>’ packet and +prefers to operate in no-acknowledgment mode. See <a href="Packet-Acknowledgment.html#Packet-Acknowledgment">Packet Acknowledgment</a>. +</p> +</dd> +<dt>‘<samp>multiprocess</samp>’</dt> +<dd><a name="multiprocess-extensions"></a><a name="index-multiprocess-extensions_002c-in-remote-protocol"></a> +<p>The remote stub understands the multiprocess extensions to the remote +protocol syntax. The multiprocess extensions affect the syntax of +thread IDs in both packets and replies (see <a href="Packets.html#thread_002did-syntax">thread-id syntax</a>), and +add process IDs to the ‘<samp>D</samp>’ packet and ‘<samp>W</samp>’ and ‘<samp>X</samp>’ +replies. Note that reporting this feature indicates support for the +syntactic extensions only, not that the stub necessarily supports +debugging of more than one process at a time. The stub must not use +multiprocess extensions in packet replies unless <small>GDB</small> has also +indicated it supports them in its ‘<samp>qSupported</samp>’ request. +</p> +</dd> +<dt>‘<samp>qXfer:osdata:read</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>qXfer:osdata:read</samp>’ packet +((see <a href="#qXfer-osdata-read">qXfer osdata read</a>). +</p> +</dd> +<dt>‘<samp>ConditionalBreakpoints</samp>’</dt> +<dd><p>The target accepts and implements evaluation of conditional expressions +defined for breakpoints. The target will only report breakpoint triggers +when such conditions are true (see <a href="Conditions.html#Conditions">Break Conditions</a>). +</p> +</dd> +<dt>‘<samp>ConditionalTracepoints</samp>’</dt> +<dd><p>The remote stub accepts and implements conditional expressions defined +for tracepoints (see <a href="Tracepoint-Conditions.html#Tracepoint-Conditions">Tracepoint Conditions</a>). +</p> +</dd> +<dt>‘<samp>ReverseContinue</samp>’</dt> +<dd><p>The remote stub accepts and implements the reverse continue packet +(see <a href="Packets.html#bc">bc</a>). +</p> +</dd> +<dt>‘<samp>ReverseStep</samp>’</dt> +<dd><p>The remote stub accepts and implements the reverse step packet +(see <a href="Packets.html#bs">bs</a>). +</p> +</dd> +<dt>‘<samp>TracepointSource</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>QTDPsrc</samp>’ packet that supplies +the source form of tracepoint definitions. +</p> +</dd> +<dt>‘<samp>QAgent</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>QAgent</samp>’ packet. +</p> +</dd> +<dt>‘<samp>QAllow</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>QAllow</samp>’ packet. +</p> +</dd> +<dt>‘<samp>QDisableRandomization</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>QDisableRandomization</samp>’ packet. +</p> +</dd> +<dt>‘<samp>StaticTracepoint</samp>’</dt> +<dd><a name="index-static-tracepoints_002c-in-remote-protocol"></a> +<p>The remote stub supports static tracepoints. +</p> +</dd> +<dt>‘<samp>InstallInTrace</samp>’</dt> +<dd><a name="install-tracepoint-in-tracing"></a><p>The remote stub supports installing tracepoint in tracing. +</p> +</dd> +<dt>‘<samp>EnableDisableTracepoints</samp>’</dt> +<dd><p>The remote stub supports the ‘<samp>QTEnable</samp>’ (see <a href="Tracepoint-Packets.html#QTEnable">QTEnable</a>) and +‘<samp>QTDisable</samp>’ (see <a href="Tracepoint-Packets.html#QTDisable">QTDisable</a>) packets that allow tracepoints +to be enabled and disabled while a trace experiment is running. +</p> +</dd> +<dt>‘<samp>QTBuffer:size</samp>’</dt> +<dd><p>The remote stub supports the ‘<samp>QTBuffer:size</samp>’ (see <a href="Tracepoint-Packets.html#QTBuffer_002dsize">QTBuffer-size</a>) +packet that allows to change the size of the trace buffer. +</p> +</dd> +<dt>‘<samp>tracenz</samp>’</dt> +<dd><a name="index-string-tracing_002c-in-remote-protocol"></a> +<p>The remote stub supports the ‘<samp>tracenz</samp>’ bytecode for collecting strings. +See <a href="Bytecode-Descriptions.html#Bytecode-Descriptions">Bytecode Descriptions</a> for details about the bytecode. +</p> +</dd> +<dt>‘<samp>BreakpointCommands</samp>’</dt> +<dd><a name="index-breakpoint-commands_002c-in-remote-protocol"></a> +<p>The remote stub supports running a breakpoint’s command list itself, +rather than reporting the hit to <small>GDB</small>. +</p> +</dd> +<dt>‘<samp>Qbtrace:off</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>Qbtrace:off</samp>’ packet. +</p> +</dd> +<dt>‘<samp>Qbtrace:bts</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>Qbtrace:bts</samp>’ packet. +</p> +</dd> +<dt>‘<samp>Qbtrace:pt</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>Qbtrace:pt</samp>’ packet. +</p> +</dd> +<dt>‘<samp>Qbtrace-conf:bts:size</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>Qbtrace-conf:bts:size</samp>’ packet. +</p> +</dd> +<dt>‘<samp>Qbtrace-conf:pt:size</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>Qbtrace-conf:pt:size</samp>’ packet. +</p> +</dd> +<dt>‘<samp>swbreak</samp>’</dt> +<dd><p>The remote stub reports the ‘<samp>swbreak</samp>’ stop reason for memory +breakpoints. +</p> +</dd> +<dt>‘<samp>hwbreak</samp>’</dt> +<dd><p>The remote stub reports the ‘<samp>hwbreak</samp>’ stop reason for hardware +breakpoints. +</p> +</dd> +<dt>‘<samp>fork-events</samp>’</dt> +<dd><p>The remote stub reports the ‘<samp>fork</samp>’ stop reason for fork events. +</p> +</dd> +<dt>‘<samp>vfork-events</samp>’</dt> +<dd><p>The remote stub reports the ‘<samp>vfork</samp>’ stop reason for vfork events +and vforkdone events. +</p> +</dd> +<dt>‘<samp>exec-events</samp>’</dt> +<dd><p>The remote stub reports the ‘<samp>exec</samp>’ stop reason for exec events. +</p> +</dd> +<dt>‘<samp>vContSupported</samp>’</dt> +<dd><p>The remote stub reports the supported actions in the reply to +‘<samp>vCont?</samp>’ packet. +</p> +</dd> +<dt>‘<samp>QThreadEvents</samp>’</dt> +<dd><p>The remote stub understands the ‘<samp>QThreadEvents</samp>’ packet. +</p> +</dd> +<dt>‘<samp>no-resumed</samp>’</dt> +<dd><p>The remote stub reports the ‘<samp>N</samp>’ stop reply. +</p> + +</dd> +<dt>‘<samp>memory-tagging</samp>’</dt> +<dd><p>The remote stub supports and implements the required memory tagging +functionality and understands the ‘<samp>qMemTags</samp>’ (see <a href="#qMemTags">qMemTags</a>) and +‘<samp>QMemTags</samp>’ (see <a href="#QMemTags">QMemTags</a>) packets. +</p> +<p>For AArch64 GNU/Linux systems, this feature also requires access to the +<samp>/proc/<var>pid</var>/smaps</samp> file so memory mapping page flags can be inspected. +This is done via the ‘<samp>vFile</samp>’ requests. +</p> +</dd> +</dl> + +</dd> +<dt>‘<samp>qSymbol::</samp>’</dt> +<dd><a name="index-symbol-lookup_002c-remote-request"></a> +<a name="index-qSymbol-packet"></a> +<p>Notify the target that <small>GDB</small> is prepared to serve symbol lookup +requests. Accept requests from the target for the values of symbols. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>OK</samp>’</dt> +<dd><p>The target does not need to look up any (more) symbols. +</p></dd> +<dt>‘<samp>qSymbol:<var>sym_name</var></samp>’</dt> +<dd><p>The target requests the value of symbol <var>sym_name</var> (hex encoded). +<small>GDB</small> may provide the value by using the +‘<samp>qSymbol:<var>sym_value</var>:<var>sym_name</var></samp>’ message, described +below. +</p></dd> +</dl> + +</dd> +<dt>‘<samp>qSymbol:<var>sym_value</var>:<var>sym_name</var></samp>’</dt> +<dd><p>Set the value of <var>sym_name</var> to <var>sym_value</var>. +</p> +<p><var>sym_name</var> (hex encoded) is the name of a symbol whose value the +target has previously requested. +</p> +<p><var>sym_value</var> (hex) is the value for symbol <var>sym_name</var>. If +<small>GDB</small> cannot supply a value for <var>sym_name</var>, then this field +will be empty. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>OK</samp>’</dt> +<dd><p>The target does not need to look up any (more) symbols. +</p></dd> +<dt>‘<samp>qSymbol:<var>sym_name</var></samp>’</dt> +<dd><p>The target requests the value of a new symbol <var>sym_name</var> (hex +encoded). <small>GDB</small> will continue to supply the values of symbols +(if available), until the target ceases to request them. +</p></dd> +</dl> + +</dd> +<dt>‘<samp>qTBuffer</samp>’</dt> +<dt>‘<samp>QTBuffer</samp>’</dt> +<dt>‘<samp>QTDisconnected</samp>’</dt> +<dt>‘<samp>QTDP</samp>’</dt> +<dt>‘<samp>QTDPsrc</samp>’</dt> +<dt>‘<samp>QTDV</samp>’</dt> +<dt>‘<samp>qTfP</samp>’</dt> +<dt>‘<samp>qTfV</samp>’</dt> +<dt>‘<samp>QTFrame</samp>’</dt> +<dt>‘<samp>qTMinFTPILen</samp>’</dt> +<dd> +<p>See <a href="Tracepoint-Packets.html#Tracepoint-Packets">Tracepoint Packets</a>. +</p> +<a name="qThreadExtraInfo"></a></dd> +<dt>‘<samp>qThreadExtraInfo,<var>thread-id</var></samp>’</dt> +<dd><a name="index-thread-attributes-info_002c-remote-request"></a> +<a name="index-qThreadExtraInfo-packet"></a> +<p>Obtain from the target OS a printable string description of thread +attributes for the thread <var>thread-id</var>; see <a href="Packets.html#thread_002did-syntax">thread-id syntax</a>, +for the forms of <var>thread-id</var>. This +string may contain anything that the target OS thinks is interesting +for <small>GDB</small> to tell the user about the thread. The string is +displayed in <small>GDB</small>’s <code>info threads</code> display. Some +examples of possible thread extra info strings are ‘<samp>Runnable</samp>’, or +‘<samp>Blocked on Mutex</samp>’. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp><var>XX</var>…</samp>’</dt> +<dd><p>Where ‘<samp><var>XX</var>…</samp>’ is a hex encoding of <small>ASCII</small> data, +comprising the printable string containing the extra information about +the thread’s attributes. +</p></dd> +</dl> + +<p>(Note that the <code>qThreadExtraInfo</code> packet’s name is separated from +the command by a ‘<samp>,</samp>’, not a ‘<samp>:</samp>’, contrary to the naming +conventions above. Please don’t use this packet as a model for new +packets.) +</p> +</dd> +<dt>‘<samp>QTNotes</samp>’</dt> +<dt>‘<samp>qTP</samp>’</dt> +<dt>‘<samp>QTSave</samp>’</dt> +<dt>‘<samp>qTsP</samp>’</dt> +<dt>‘<samp>qTsV</samp>’</dt> +<dt>‘<samp>QTStart</samp>’</dt> +<dt>‘<samp>QTStop</samp>’</dt> +<dt>‘<samp>QTEnable</samp>’</dt> +<dt>‘<samp>QTDisable</samp>’</dt> +<dt>‘<samp>QTinit</samp>’</dt> +<dt>‘<samp>QTro</samp>’</dt> +<dt>‘<samp>qTStatus</samp>’</dt> +<dt>‘<samp>qTV</samp>’</dt> +<dt>‘<samp>qTfSTM</samp>’</dt> +<dt>‘<samp>qTsSTM</samp>’</dt> +<dt>‘<samp>qTSTMat</samp>’</dt> +<dd><p>See <a href="Tracepoint-Packets.html#Tracepoint-Packets">Tracepoint Packets</a>. +</p> +</dd> +<dt>‘<samp>qXfer:<var>object</var>:read:<var>annex</var>:<var>offset</var>,<var>length</var></samp>’</dt> +<dd><a name="index-read-special-object_002c-remote-request"></a> +<a name="index-qXfer-packet"></a> +<a name="qXfer-read"></a><p>Read uninterpreted bytes from the target’s special data area +identified by the keyword <var>object</var>. Request <var>length</var> bytes +starting at <var>offset</var> bytes into the data. The content and +encoding of <var>annex</var> is specific to <var>object</var>; it can supply +additional details about what data to access. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>m <var>data</var></samp>’</dt> +<dd><p>Data <var>data</var> (see <a href="Overview.html#Binary-Data">Binary Data</a>) has been read from the +target. There may be more data at a higher address (although +it is permitted to return ‘<samp>m</samp>’ even for the last valid +block of data, as long as at least one byte of data was read). +It is possible for <var>data</var> to have fewer bytes than the <var>length</var> in the +request. +</p> +</dd> +<dt>‘<samp>l <var>data</var></samp>’</dt> +<dd><p>Data <var>data</var> (see <a href="Overview.html#Binary-Data">Binary Data</a>) has been read from the target. +There is no more data to be read. It is possible for <var>data</var> to +have fewer bytes than the <var>length</var> in the request. +</p> +</dd> +<dt>‘<samp>l</samp>’</dt> +<dd><p>The <var>offset</var> in the request is at the end of the data. +There is no more data to be read. +</p> +</dd> +<dt>‘<samp>E00</samp>’</dt> +<dd><p>The request was malformed, or <var>annex</var> was invalid. +</p> +</dd> +<dt>‘<samp>E <var>nn</var></samp>’</dt> +<dd><p>The offset was invalid, or there was an error encountered reading the data. +The <var>nn</var> part is a hex-encoded <code>errno</code> value. +</p> +</dd> +<dt>‘<samp><!-- /@w --></samp>’</dt> +<dd><p>An empty reply indicates the <var>object</var> string was not recognized by +the stub, or that the object does not support reading. +</p></dd> +</dl> + +<p>Here are the specific requests of this form defined so far. All the +‘<samp>qXfer:<var>object</var>:read:…</samp>’ requests use the same reply +formats, listed above. +</p> +<dl compact="compact"> +<dt>‘<samp>qXfer:auxv:read::<var>offset</var>,<var>length</var></samp>’</dt> +<dd><a name="qXfer-auxiliary-vector-read"></a><p>Access the target’s <em>auxiliary vector</em>. See <a href="OS-Information.html#OS-Information">auxiliary vector</a>. Note <var>annex</var> must be empty. +</p> +<p>This packet is not probed by default; the remote stub must request it, +by supplying an appropriate ‘<samp>qSupported</samp>’ response (see <a href="#qSupported">qSupported</a>). +</p> +</dd> +<dt>‘<samp>qXfer:btrace:read:<var>annex</var>:<var>offset</var>,<var>length</var></samp>’</dt> +<dd><a name="qXfer-btrace-read"></a> +<p>Return a description of the current branch trace. +See <a href="Branch-Trace-Format.html#Branch-Trace-Format">Branch Trace Format</a>. The annex part of the generic ‘<samp>qXfer</samp>’ +packet may have one of the following values: +</p> +<dl compact="compact"> +<dt><code>all</code></dt> +<dd><p>Returns all available branch trace. +</p> +</dd> +<dt><code>new</code></dt> +<dd><p>Returns all available branch trace if the branch trace changed since +the last read request. +</p> +</dd> +<dt><code>delta</code></dt> +<dd><p>Returns the new branch trace since the last read request. Adds a new +block to the end of the trace that begins at zero and ends at the source +location of the first branch in the trace buffer. This extra block is +used to stitch traces together. +</p> +<p>If the trace buffer overflowed, returns an error indicating the overflow. +</p></dd> +</dl> + +<p>This packet is not probed by default; the remote stub must request it +by supplying an appropriate ‘<samp>qSupported</samp>’ response (see <a href="#qSupported">qSupported</a>). +</p> +</dd> +<dt>‘<samp>qXfer:btrace-conf:read::<var>offset</var>,<var>length</var></samp>’</dt> +<dd><a name="qXfer-btrace_002dconf-read"></a> +<p>Return a description of the current branch trace configuration. +See <a href="Branch-Trace-Configuration-Format.html#Branch-Trace-Configuration-Format">Branch Trace Configuration Format</a>. +</p> +<p>This packet is not probed by default; the remote stub must request it +by supplying an appropriate ‘<samp>qSupported</samp>’ response (see <a href="#qSupported">qSupported</a>). +</p> +</dd> +<dt>‘<samp>qXfer:exec-file:read:<var>annex</var>:<var>offset</var>,<var>length</var></samp>’</dt> +<dd><a name="qXfer-executable-filename-read"></a><p>Return the full absolute name of the file that was executed to create +a process running on the remote system. The annex specifies the +numeric process ID of the process to query, encoded as a hexadecimal +number. If the annex part is empty the remote stub should return the +filename corresponding to the currently executing process. +</p> +<p>This packet is not probed by default; the remote stub must request it, +by supplying an appropriate ‘<samp>qSupported</samp>’ response (see <a href="#qSupported">qSupported</a>). +</p> +</dd> +<dt>‘<samp>qXfer:features:read:<var>annex</var>:<var>offset</var>,<var>length</var></samp>’</dt> +<dd><a name="qXfer-target-description-read"></a><p>Access the <em>target description</em>. See <a href="Target-Descriptions.html#Target-Descriptions">Target Descriptions</a>. The +annex specifies which XML document to access. The main description is +always loaded from the ‘<samp>target.xml</samp>’ annex. +</p> +<p>This packet is not probed by default; the remote stub must request it, +by supplying an appropriate ‘<samp>qSupported</samp>’ response (see <a href="#qSupported">qSupported</a>). +</p> +</dd> +<dt>‘<samp>qXfer:libraries:read:<var>annex</var>:<var>offset</var>,<var>length</var></samp>’</dt> +<dd><a name="qXfer-library-list-read"></a><p>Access the target’s list of loaded libraries. See <a href="Library-List-Format.html#Library-List-Format">Library List Format</a>. +The annex part of the generic ‘<samp>qXfer</samp>’ packet must be empty +(see <a href="#qXfer-read">qXfer read</a>). +</p> +<p>Targets which maintain a list of libraries in the program’s memory do +not need to implement this packet; it is designed for platforms where +the operating system manages the list of loaded libraries. +</p> +<p>This packet is not probed by default; the remote stub must request it, +by supplying an appropriate ‘<samp>qSupported</samp>’ response (see <a href="#qSupported">qSupported</a>). +</p> +</dd> +<dt>‘<samp>qXfer:libraries-svr4:read:<var>annex</var>:<var>offset</var>,<var>length</var></samp>’</dt> +<dd><a name="qXfer-svr4-library-list-read"></a><p>Access the target’s list of loaded libraries when the target is an SVR4 +platform. See <a href="Library-List-Format-for-SVR4-Targets.html#Library-List-Format-for-SVR4-Targets">Library List Format for SVR4 Targets</a>. The annex part +of the generic ‘<samp>qXfer</samp>’ packet must be empty unless the remote +stub indicated it supports the augmented form of this packet +by supplying an appropriate ‘<samp>qSupported</samp>’ response +(see <a href="#qXfer-read">qXfer read</a>, <a href="#qSupported">qSupported</a>). +</p> +<p>This packet is optional for better performance on SVR4 targets. +<small>GDB</small> uses memory read packets to read the SVR4 library list otherwise. +</p> +<p>This packet is not probed by default; the remote stub must request it, +by supplying an appropriate ‘<samp>qSupported</samp>’ response (see <a href="#qSupported">qSupported</a>). +</p> +<p>If the remote stub indicates it supports the augmented form of this +packet then the annex part of the generic ‘<samp>qXfer</samp>’ packet may +contain a semicolon-separated list of ‘<samp><var>name</var>=<var>value</var></samp>’ +arguments. The currently supported arguments are: +</p> +<dl compact="compact"> +<dt><code>start=<var>address</var></code></dt> +<dd><p>A hexadecimal number specifying the address of the ‘<samp>struct +link_map</samp>’ to start reading the library list from. If unset or zero +then the first ‘<samp>struct link_map</samp>’ in the library list will be +chosen as the starting point. +</p> +</dd> +<dt><code>prev=<var>address</var></code></dt> +<dd><p>A hexadecimal number specifying the address of the ‘<samp>struct +link_map</samp>’ immediately preceding the ‘<samp>struct link_map</samp>’ +specified by the ‘<samp>start</samp>’ argument. If unset or zero then +the remote stub will expect that no ‘<samp>struct link_map</samp>’ +exists prior to the starting point. +</p> +</dd> +<dt><code>lmid=<var>lmid</var></code></dt> +<dd><p>A hexadecimal number specifying a namespace identifier. This is +currently only used together with ‘<samp>start</samp>’ to provide the +namespace identifier back to <small>GDB</small> in the response. +<small>GDB</small> will only provide values that were previously reported to +it. If unset, the response will include ‘<samp>lmid="0x0"</samp>’. +</p></dd> +</dl> + +<p>Arguments that are not understood by the remote stub will be silently +ignored. +</p> +</dd> +<dt>‘<samp>qXfer:memory-map:read::<var>offset</var>,<var>length</var></samp>’</dt> +<dd><a name="qXfer-memory-map-read"></a><p>Access the target’s <em>memory-map</em>. See <a href="Memory-Map-Format.html#Memory-Map-Format">Memory Map Format</a>. The +annex part of the generic ‘<samp>qXfer</samp>’ packet must be empty +(see <a href="#qXfer-read">qXfer read</a>). +</p> +<p>This packet is not probed by default; the remote stub must request it, +by supplying an appropriate ‘<samp>qSupported</samp>’ response (see <a href="#qSupported">qSupported</a>). +</p> +</dd> +<dt>‘<samp>qXfer:sdata:read::<var>offset</var>,<var>length</var></samp>’</dt> +<dd><a name="qXfer-sdata-read"></a> +<p>Read contents of the extra collected static tracepoint marker +information. The annex part of the generic ‘<samp>qXfer</samp>’ packet must +be empty (see <a href="#qXfer-read">qXfer read</a>). See <a href="Tracepoint-Actions.html#Tracepoint-Actions">Tracepoint +Action Lists</a>. +</p> +<p>This packet is not probed by default; the remote stub must request it, +by supplying an appropriate ‘<samp>qSupported</samp>’ response +(see <a href="#qSupported">qSupported</a>). +</p> +</dd> +<dt>‘<samp>qXfer:siginfo:read::<var>offset</var>,<var>length</var></samp>’</dt> +<dd><a name="qXfer-siginfo-read"></a><p>Read contents of the extra signal information on the target +system. The annex part of the generic ‘<samp>qXfer</samp>’ packet must be +empty (see <a href="#qXfer-read">qXfer read</a>). +</p> +<p>This packet is not probed by default; the remote stub must request it, +by supplying an appropriate ‘<samp>qSupported</samp>’ response +(see <a href="#qSupported">qSupported</a>). +</p> +</dd> +<dt>‘<samp>qXfer:threads:read::<var>offset</var>,<var>length</var></samp>’</dt> +<dd><a name="qXfer-threads-read"></a><p>Access the list of threads on target. See <a href="Thread-List-Format.html#Thread-List-Format">Thread List Format</a>. The +annex part of the generic ‘<samp>qXfer</samp>’ packet must be empty +(see <a href="#qXfer-read">qXfer read</a>). +</p> +<p>This packet is not probed by default; the remote stub must request it, +by supplying an appropriate ‘<samp>qSupported</samp>’ response (see <a href="#qSupported">qSupported</a>). +</p> +</dd> +<dt>‘<samp>qXfer:traceframe-info:read::<var>offset</var>,<var>length</var></samp>’</dt> +<dd><a name="qXfer-traceframe-info-read"></a> +<p>Return a description of the current traceframe’s contents. +See <a href="Traceframe-Info-Format.html#Traceframe-Info-Format">Traceframe Info Format</a>. The annex part of the generic +‘<samp>qXfer</samp>’ packet must be empty (see <a href="#qXfer-read">qXfer read</a>). +</p> +<p>This packet is not probed by default; the remote stub must request it, +by supplying an appropriate ‘<samp>qSupported</samp>’ response (see <a href="#qSupported">qSupported</a>). +</p> +</dd> +<dt>‘<samp>qXfer:uib:read:<var>pc</var>:<var>offset</var>,<var>length</var></samp>’</dt> +<dd><a name="qXfer-unwind-info-block"></a> +<p>Return the unwind information block for <var>pc</var>. This packet is used +on OpenVMS/ia64 to ask the kernel unwind information. +</p> +<p>This packet is not probed by default. +</p> +</dd> +<dt>‘<samp>qXfer:fdpic:read:<var>annex</var>:<var>offset</var>,<var>length</var></samp>’</dt> +<dd><a name="qXfer-fdpic-loadmap-read"></a><p>Read contents of <code>loadmap</code>s on the target system. The +annex, either ‘<samp>exec</samp>’ or ‘<samp>interp</samp>’, specifies which <code>loadmap</code>, +executable <code>loadmap</code> or interpreter <code>loadmap</code> to read. +</p> +<p>This packet is not probed by default; the remote stub must request it, +by supplying an appropriate ‘<samp>qSupported</samp>’ response (see <a href="#qSupported">qSupported</a>). +</p> +</dd> +<dt>‘<samp>qXfer:osdata:read::<var>offset</var>,<var>length</var></samp>’</dt> +<dd><a name="qXfer-osdata-read"></a><p>Access the target’s <em>operating system information</em>. +See <a href="Operating-System-Information.html#Operating-System-Information">Operating System Information</a>. +</p> +</dd> +</dl> + +</dd> +<dt>‘<samp>qXfer:<var>object</var>:write:<var>annex</var>:<var>offset</var>:<var>data</var>…</samp>’</dt> +<dd><a name="index-write-data-into-object_002c-remote-request"></a> +<a name="qXfer-write"></a><p>Write uninterpreted bytes into the target’s special data area +identified by the keyword <var>object</var>, starting at <var>offset</var> bytes +into the data. The binary-encoded data (see <a href="Overview.html#Binary-Data">Binary Data</a>) to be +written is given by <var>data</var>…. The content and encoding of <var>annex</var> +is specific to <var>object</var>; it can supply additional details about what data +to access. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp><var>nn</var></samp>’</dt> +<dd><p><var>nn</var> (hex encoded) is the number of bytes written. +This may be fewer bytes than supplied in the request. +</p> +</dd> +<dt>‘<samp>E00</samp>’</dt> +<dd><p>The request was malformed, or <var>annex</var> was invalid. +</p> +</dd> +<dt>‘<samp>E <var>nn</var></samp>’</dt> +<dd><p>The offset was invalid, or there was an error encountered writing the data. +The <var>nn</var> part is a hex-encoded <code>errno</code> value. +</p> +</dd> +<dt>‘<samp><!-- /@w --></samp>’</dt> +<dd><p>An empty reply indicates the <var>object</var> string was not +recognized by the stub, or that the object does not support writing. +</p></dd> +</dl> + +<p>Here are the specific requests of this form defined so far. All the +‘<samp>qXfer:<var>object</var>:write:…</samp>’ requests use the same reply +formats, listed above. +</p> +<dl compact="compact"> +<dt>‘<samp>qXfer:siginfo:write::<var>offset</var>:<var>data</var>…</samp>’</dt> +<dd><a name="qXfer-siginfo-write"></a><p>Write <var>data</var> to the extra signal information on the target system. +The annex part of the generic ‘<samp>qXfer</samp>’ packet must be +empty (see <a href="#qXfer-write">qXfer write</a>). +</p> +<p>This packet is not probed by default; the remote stub must request it, +by supplying an appropriate ‘<samp>qSupported</samp>’ response +(see <a href="#qSupported">qSupported</a>). +</p></dd> +</dl> + +</dd> +<dt>‘<samp>qXfer:<var>object</var>:<var>operation</var>:…</samp>’</dt> +<dd><p>Requests of this form may be added in the future. When a stub does +not recognize the <var>object</var> keyword, or its support for +<var>object</var> does not recognize the <var>operation</var> keyword, the stub +must respond with an empty packet. +</p> +</dd> +<dt>‘<samp>qAttached:<var>pid</var></samp>’</dt> +<dd><a name="index-query-attached_002c-remote-request"></a> +<a name="index-qAttached-packet"></a> +<p>Return an indication of whether the remote server attached to an +existing process or created a new process. When the multiprocess +protocol extensions are supported (see <a href="#multiprocess-extensions">multiprocess extensions</a>), +<var>pid</var> is an integer in hexadecimal format identifying the target +process. Otherwise, <small>GDB</small> will omit the <var>pid</var> field and +the query packet will be simplified as ‘<samp>qAttached</samp>’. +</p> +<p>This query is used, for example, to know whether the remote process +should be detached or killed when a <small>GDB</small> session is ended with +the <code>quit</code> command. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>1</samp>’</dt> +<dd><p>The remote server attached to an existing process. +</p></dd> +<dt>‘<samp>0</samp>’</dt> +<dd><p>The remote server created a new process. +</p></dd> +<dt>‘<samp>E <var>NN</var></samp>’</dt> +<dd><p>A badly formed request or an error was encountered. +</p></dd> +</dl> + +</dd> +<dt>‘<samp>Qbtrace:bts</samp>’</dt> +<dd><p>Enable branch tracing for the current thread using Branch Trace Store. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>OK</samp>’</dt> +<dd><p>Branch tracing has been enabled. +</p></dd> +<dt>‘<samp>E.errtext</samp>’</dt> +<dd><p>A badly formed request or an error was encountered. +</p></dd> +</dl> + +</dd> +<dt>‘<samp>Qbtrace:pt</samp>’</dt> +<dd><p>Enable branch tracing for the current thread using Intel Processor Trace. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>OK</samp>’</dt> +<dd><p>Branch tracing has been enabled. +</p></dd> +<dt>‘<samp>E.errtext</samp>’</dt> +<dd><p>A badly formed request or an error was encountered. +</p></dd> +</dl> + +</dd> +<dt>‘<samp>Qbtrace:off</samp>’</dt> +<dd><p>Disable branch tracing for the current thread. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>OK</samp>’</dt> +<dd><p>Branch tracing has been disabled. +</p></dd> +<dt>‘<samp>E.errtext</samp>’</dt> +<dd><p>A badly formed request or an error was encountered. +</p></dd> +</dl> + +</dd> +<dt>‘<samp>Qbtrace-conf:bts:size=<var>value</var></samp>’</dt> +<dd><p>Set the requested ring buffer size for new threads that use the +btrace recording method in bts format. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>OK</samp>’</dt> +<dd><p>The ring buffer size has been set. +</p></dd> +<dt>‘<samp>E.errtext</samp>’</dt> +<dd><p>A badly formed request or an error was encountered. +</p></dd> +</dl> + +</dd> +<dt>‘<samp>Qbtrace-conf:pt:size=<var>value</var></samp>’</dt> +<dd><p>Set the requested ring buffer size for new threads that use the +btrace recording method in pt format. +</p> +<p>Reply: +</p><dl compact="compact"> +<dt>‘<samp>OK</samp>’</dt> +<dd><p>The ring buffer size has been set. +</p></dd> +<dt>‘<samp>E.errtext</samp>’</dt> +<dd><p>A badly formed request or an error was encountered. +</p></dd> +</dl> + +</dd> +</dl> + +<div class="footnote"> +<hr> +<h4 class="footnotes-heading">Footnotes</h4> + +<h3><a name="FOOT22" href="#DOCF22">(22)</a></h3> +<p>The ‘<samp>qP</samp>’ and ‘<samp>qL</samp>’ +packets predate these conventions, and have arguments without any terminator +for the packet name; we suspect they are in widespread use in places that +are difficult to upgrade. The ‘<samp>qC</samp>’ packet has no arguments, but some +existing stubs (e.g. RedBoot) are known to not check for the end of the +packet.</p> +</div> +<hr> +<div class="header"> +<p> +Next: <a href="Architecture_002dSpecific-Protocol-Details.html#Architecture_002dSpecific-Protocol-Details" accesskey="n" rel="next">Architecture-Specific Protocol Details</a>, Previous: <a href="Stop-Reply-Packets.html#Stop-Reply-Packets" accesskey="p" rel="previous">Stop Reply Packets</a>, Up: <a href="Remote-Protocol.html#Remote-Protocol" accesskey="u" rel="up">Remote Protocol</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> |