mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2026-08-27 00:26:02 -04:00
Document remote protocol pid and thread id sizes
The recent ptid work came from a bug where a problem was observed due to sign extension. That bug also suggested documenting the guaranteed range of thread- and process-ids in the remote protocol. This patch documents these as being 32-bit values at minimum. I also added static asserts to ensure this is true -- note that although 'int' may be 16 bit per the C standard, I doubt gdb would build on such a host. I didn't specify a maximum because it is host-dependent. This is perhaps something to change, and while I do have some work in this area, it's quite invasive. Also, while widening the range here would be good, it would also be incompatible in a sense, where a newer protocol implementation may end up using values not supported by older versions of gdb. Perhaps one idea would be to simply change these both to int32_t and move on. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=33979 Reviewed-By: Eli Zaretskii <eliz@gnu.org>
This commit is contained in:
parent
a4481c8ff8
commit
e88bc211ae
2 changed files with 11 additions and 4 deletions
|
|
@ -43463,7 +43463,8 @@ Several packets and replies include a @var{thread-id} field to identify
|
|||
a thread. Normally these are positive numbers with a target-specific
|
||||
interpretation, formatted as big-endian hex strings. A @var{thread-id}
|
||||
can also be a literal @samp{-1} to indicate all threads, or @samp{0} to
|
||||
pick any thread.
|
||||
pick any thread. @value{GDBN} guarantees that values of up to 32 bits
|
||||
will work here.
|
||||
|
||||
In addition, the remote protocol supports a multiprocess feature in
|
||||
which the @var{thread-id} syntax is extended to optionally include both
|
||||
|
|
@ -43475,9 +43476,11 @@ to indicate all processes or threads (respectively), or @samp{0} to
|
|||
indicate an arbitrary process or thread. Specifying just a process, as
|
||||
@samp{p@var{pid}}, is equivalent to @samp{p@var{pid}.-1}. It is an
|
||||
error to specify all processes but a specific thread, such as
|
||||
@samp{p-1.@var{tid}}. Note that the @samp{p} prefix is @emph{not} used
|
||||
for those packets and replies explicitly documented to include a process
|
||||
ID, rather than a @var{thread-id}.
|
||||
@samp{p-1.@var{tid}}. @value{GDBN} guarantees that values of up to 32
|
||||
bits will work for both @var{pid} and @var{tid}. Note that the
|
||||
@samp{p} prefix is @emph{not} used for those packets and replies
|
||||
explicitly documented to include a process ID, rather than a
|
||||
@var{thread-id}.
|
||||
|
||||
The multiprocess @var{thread-id} syntax extensions are only used if both
|
||||
@value{GDBN} and the stub report support for the @samp{multiprocess}
|
||||
|
|
|
|||
|
|
@ -44,6 +44,10 @@ public:
|
|||
using lwp_type = long;
|
||||
using tid_type = ULONGEST;
|
||||
|
||||
/* These limits are documented in the manual. */
|
||||
static_assert (sizeof (pid_type) >= 4);
|
||||
static_assert (sizeof (lwp_type) >= 4);
|
||||
|
||||
/* Must have a trivial defaulted default constructor so that the
|
||||
type remains POD. */
|
||||
ptid_t () noexcept = default;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue