[PATCH] gdb/doc: Fix incorrect information in RSP doc
Ciaran Woodward
ciaranwoodward@xmos.com
Wed Apr 24 16:28:49 GMT 2024
> > For instance, GDB's remote.c treats it as the maximum
> > number of data bytes. See remote_read_bytes_1, where the
> > size of the request is capped at PacketSize/2 (for
> > hex-encoding).
>
>
> OTOH, we have code like this:
>
>
> /* Should rsa->sizeof_g_packet needs more space than the
> default, adjust the size accordingly. Remember that each byte is
> encoded as two characters. 32 is the overhead for the packet
> header / footer. NOTE: cagney/1999-10-26: I suspect that 8
> (``$NN:G...#NN'') is a better guess, the below has been padded a
> little. */
> if (this->sizeof_g_packet > ((this->remote_packet_size - 32) / 2))
> this->remote_packet_size = (this->sizeof_g_packet * 2 + 32);
>
>
> and this:
>
> remote_target::remote_write_bytes_aux ()
> ...
> payload_capacity_bytes = get_memory_write_packet_size ();
>
> /* The packet buffer will be large enough for the payload;
> get_memory_packet_size ensures this. */
> rs->buf[0] = '\0';
>
> /* Compute the size of the actual payload by subtracting out the
> packet header and footer overhead: "$M<memaddr>,<len>:...#nn". */
>
> payload_capacity_bytes -= strlen ("$,:#NN");
>
>
> So looks like we have a mess? Most code in remote.c seems to assume
> get_remote_packet_size() returns the max payload size, except, not always.
>
> I think it would be good to rename remote_packet_size to
> remote_packet_data_size
> or remote_packet_payload_size and similarly rename the few functions
> around this,
> like get_remote_packet_size and get_memory_write_packet_size, and fix
> those
> cases above accordingly.
Ah, yes - not sure where that '32' came from, since it seems like it
could guess the remote packet size too high. In combination with the
fact that many remotes won't return *all* of the registers in the g
response either, so it has 2 mechanisms to over-estimate.
Thankfully I don't think that really matters since modern remotes
should always specify PacketSize explicitly.
I think the rename is a good idea - I don’t know how I feel about
'fixing' things though, since the RSP is very sensitive to backwards
compatibility issues and its impossible to check all the potential
stubs. It looks like the remote_write_packet_aux underestimates
the size of the buffer at least, so we won't overflow any remote
server in the current state.
More information about the Gdb-patches
mailing list