From ec1f5e0f068cf916d2f17ac3efdeda2e83fadc4e Mon Sep 17 00:00:00 2001 From: John Howard Date: Mon, 15 Apr 2024 11:48:49 -0700 Subject: [PATCH 1/2] rr: fix gdb parsing Attempt to fix https://github.com/go-delve/delve/issues/3704 --- pkg/proc/gdbserial/rr.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkg/proc/gdbserial/rr.go b/pkg/proc/gdbserial/rr.go index e3dfcb749f..e7da83ad4c 100644 --- a/pkg/proc/gdbserial/rr.go +++ b/pkg/proc/gdbserial/rr.go @@ -216,7 +216,8 @@ type rrInit struct { } const ( - rrGdbCommandPrefix = " gdb " + rrGdbCommandLegacyPrefix = " gdb " + rrGdbCommandPrefix = " 'gdb' " rrGdbLaunchPrefix = "Launch gdb with" targetCmd = "target extended-remote " ) @@ -238,6 +239,11 @@ func rrStderrParser(stderr io.ReadCloser, initch chan<- rrInit, quiet bool) { close(initch) break } + if strings.HasPrefix(line, rrGdbCommandLegacyPrefix) { + initch <- rrParseGdbCommand(line[len(rrGdbCommandLegacyPrefix):]) + close(initch) + break + } if strings.HasPrefix(line, rrGdbLaunchPrefix) { continue From 9ff80a1f66caa6192acdf87e19ce6f5765744911 Mon Sep 17 00:00:00 2001 From: John Howard Date: Fri, 19 Apr 2024 08:44:08 -0700 Subject: [PATCH 2/2] Fold into one branch --- pkg/proc/gdbserial/rr.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkg/proc/gdbserial/rr.go b/pkg/proc/gdbserial/rr.go index e7da83ad4c..ecaa882021 100644 --- a/pkg/proc/gdbserial/rr.go +++ b/pkg/proc/gdbserial/rr.go @@ -234,13 +234,13 @@ func rrStderrParser(stderr io.ReadCloser, initch chan<- rrInit, quiet bool) { return } - if strings.HasPrefix(line, rrGdbCommandPrefix) { - initch <- rrParseGdbCommand(line[len(rrGdbCommandPrefix):]) - close(initch) - break + var flags string + var foundPrefix bool + if flags, foundPrefix = strings.CutPrefix(line, rrGdbCommandPrefix); !foundPrefix { + flags, foundPrefix = strings.CutPrefix(line, rrGdbCommandLegacyPrefix) } - if strings.HasPrefix(line, rrGdbCommandLegacyPrefix) { - initch <- rrParseGdbCommand(line[len(rrGdbCommandLegacyPrefix):]) + if foundPrefix { + initch <- rrParseGdbCommand(flags) close(initch) break }