Skip to content

Commit f8dda39

Browse files
authored
gdbserial: do not abort register reload on the first failed register (#3966)
While loading thread registers always complete the process, even if the stub can not return the value of some of the registers that it claims exist. Fixes #3964 Fixes #3965 Fixes #3969
1 parent 84aae7f commit f8dda39

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

pkg/proc/gdbserial/gdbserver.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1707,7 +1707,10 @@ func (t *gdbThread) reloadRegisters(regs map[uint64]uint64) error {
17071707
if !t.p.gcmdok {
17081708
for _, reginfo := range t.p.conn.regsInfo {
17091709
if err := t.p.conn.readRegister(t.strID, reginfo.Regnum, t.regs.regs[reginfo.Name].value); err != nil {
1710-
return err
1710+
logflags.DebuggerLogger().Errorf("Could not read register %s: %v\n", reginfo.Name, err)
1711+
for i := range t.regs.regs[reginfo.Name].value {
1712+
t.regs.regs[reginfo.Name].value[i] = 0
1713+
}
17111714
}
17121715
}
17131716
}
@@ -1722,7 +1725,10 @@ func (t *gdbThread) reloadRegisters(regs map[uint64]uint64) error {
17221725
}
17231726
} else {
17241727
if err := t.p.conn.readRegister(t.strID, r.Regnum, t.regs.regs[r.Name].value); err != nil {
1725-
return err
1728+
logflags.DebuggerLogger().Errorf("Could not read register %s: %v\n", r.Name, err)
1729+
for i := range t.regs.regs[r.Name].value {
1730+
t.regs.regs[r.Name].value[i] = 0
1731+
}
17261732
}
17271733
}
17281734
}

0 commit comments

Comments
 (0)