aboutsummaryrefslogtreecommitdiff
path: root/gdb/ser-pipe.c
diff options
context:
space:
mode:
authorAndrew Burgess <aburgess@redhat.com>2022-01-12 17:13:38 +0000
committerAndrew Burgess <aburgess@redhat.com>2022-01-18 11:45:52 +0000
commitcced7cacecad104fff03e94814a3fca1d304b16f (patch)
tree667876bd755eafb951b092ee25d4a79bda8793f5 /gdb/ser-pipe.c
parent709a3d07f330cc75031529f8952ceb19d7095df3 (diff)
downloadgdb-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.c6
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)