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/ser-pipe.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/ser-pipe.c')
-rw-r--r-- | gdb/ser-pipe.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gdb/ser-pipe.c b/gdb/ser-pipe.c index 06c3d3a..80bb73e 100644 --- a/gdb/ser-pipe.c +++ b/gdb/ser-pipe.c @@ -62,6 +62,12 @@ pipe_open (struct serial *scb, const char *name) int err_pdes[2]; int pid; + if (*name == '|') + { + name++; + name = skip_spaces (name); + } + if (gdb_socketpair_cloexec (AF_UNIX, SOCK_STREAM, 0, pdes) < 0) return -1; if (gdb_socketpair_cloexec (AF_UNIX, SOCK_STREAM, 0, err_pdes) < 0) |