GDB/MI output command documentation error
Bob Rossi <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <20140523012631.GB10166@linux> |
Hi,
The documentation for a GDB/MI output command says,
output ==>
( out-of-band-record )* [ result-record ] "(gdb)" nl
Where an out-of-band-record is one or more lines starting with
* + = (for async records)
~ @ & (for stream records)
A result record starts with a ^ (if no token is used).
The result record is after the possible out-of-band-records.
This Documentation is incorrect for the most basic GDB/MI command.
When I provide the GDB/MI command, -exec-run I get the following output.
=library-unloaded,...
=library-unloaded,...
=thread-group-started,...
=thread-created,...
^running <- Incorrect location or docs are wrong
*running,...
(gdb)
In mi-interp.c:mi_on_resume the code says:
/* To cater for older frontends, emit ^running, but do it only once
per each command. We do it here, since at this point we know
that the target was successfully resumed, and in non-async mode,
we won't return back to MI interpreter code until the target
is done running, so delaying the output of "^running" until then
will make it impossible for frontend to know what's going on.
In future (MI3), we'll be outputting "^done" here. */
if (!running_result_record_printed && mi_proceeded)
{
fprintf_unfiltered (raw_stdout, "%s^running\n",
current_token ? current_token : "");
}
So, I assume we aren't going to change what GDB outputs at this point.
For that reason, I would argue the documentation is wrong.
The correct grammar would be something like,
output ==>
( out-of-band-record )* [ result-record ] ( out-of-band-record )* "(gdb)" nl
Right?
Thanks,
Bob Rossi