diff options
author | Andrew Burgess <aburgess@redhat.com> | 2022-01-12 17:13:38 +0000 |
---|---|---|
committer | Andrew Burgess <aburgess@redhat.com> | 2022-01-18 11:45:52 +0000 |
commit | cced7cacecad104fff03e94814a3fca1d304b16f (patch) | |
tree | 667876bd755eafb951b092ee25d4a79bda8793f5 /gdb/serial.c | |
parent | 709a3d07f330cc75031529f8952ceb19d7095df3 (diff) | |
download | gdb-cced7cacecad104fff03e94814a3fca1d304b16f.zip gdb-cced7cacecad104fff03e94814a3fca1d304b16f.tar.gz gdb-cced7cacecad104fff03e94814a3fca1d304b16f.tar.bz2 |
gdb: preserve `|` in connection details string
Consider this GDB session:
$ gdb -q
(gdb) target remote | gdbserver - ~/tmp/hello.x
Remote debugging using | gdbserver - ~/tmp/hello.x
... snip ...
(gdb) info connections
Num What Description
* 1 remote gdbserver - ~/tmp/hello.x Remote target using gdb-specific protocol
(gdb) python conn = gdb.selected_inferior().connection
(gdb) python print(conn.details)
gdbserver - ~/tmp/hello.x
(gdb)
I think there are two things wrong here, first in the "What" column of
the 'info connections' output, I think the text should be:
remote | gdbserver - ~/tmp/hello.x
to correctly show the user how the connection was established. And in
a similar fashion, I think that the `details` string of the
gdb.TargetConnection object should be:
| gdbserver - ~/tmp/hello.x
This commit makes this change. Currently the '|' is detected and
removed in gdb/serial.c. The string passed to the pipe_ops
structure (from gdb/ser-pipe.c), doesn't then, contain the `|`, this
is instead implied by the fact that it is a pipes based implementation
of the serial_ops interface.
After this commit we still detect the `|` in gdb/serial.c, but we now
store the full string (including the `|`) in the serial::name member
variable.
For pipe based serial connections, this name is only used for
displaying the two fields I mention above, and in pipe_open (from
gdb/ser-pipe.c), and in pipe_open, we now know to skip over the `|`.
The benefit I see from this change is that GDB's output now more
accurately reflects the commands used to start a target, thus making
it easier for a user to understand what is going on.
Diffstat (limited to 'gdb/serial.c')
-rw-r--r-- | gdb/serial.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/gdb/serial.c b/gdb/serial.c index c6e3cb9..41ba753 100644 --- a/gdb/serial.c +++ b/gdb/serial.c @@ -201,12 +201,7 @@ serial_open (const char *name) const char *open_name = name; if (startswith (name, "|")) - { - ops = serial_interface_lookup ("pipe"); - /* Discard ``|'' and any space before the command itself. */ - ++open_name; - open_name = skip_spaces (open_name); - } + ops = serial_interface_lookup ("pipe"); /* Check for a colon, suggesting an IP address/port pair. Do this *after* checking for all the interesting prefixes. We don't want to constrain the syntax of what can follow them. */ |