aboutsummaryrefslogtreecommitdiff
path: root/gdb/serial.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/serial.c
parent709a3d07f330cc75031529f8952ceb19d7095df3 (diff)
downloadbinutils-cced7cacecad104fff03e94814a3fca1d304b16f.zip
binutils-cced7cacecad104fff03e94814a3fca1d304b16f.tar.gz
binutils-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.c7
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. */