[v2,0/6] fix PR gdb/19340

Message ID 20240411052604.87893-1-markus.t.metzger@intel.com
Headers
Series fix PR gdb/19340 |

Message

Metzger, Markus T April 11, 2024, 5:25 a.m. UTC
  Fix PR gdb/19340 by stopping replaying the current thread before disabling
recording.

While writing the test for this, I wondered whether it would also work if
there was more than one process and if some were recording while others
were replaying.

It turned out that recording one process while some other process is
replaying doesn't work.  You first have to stop replaying everything
before you can continue recording.  Since btrace is per inferior, this
seems like an unnecessary restriction.

The first patch fixes gdb/pr19340; the rest makes recording work together
with replaying on inferior level.

The most prominent change is probably that do_target_wait() no longer
silently switches inferiors.  This infrun change requires global
maintainer approval.

Changes to v1:
  - fixed a fail in a newly added test
  - fixed fails in patch 5, which also caused the patch to get renamed

Markus Metzger (6):
  gdb, btrace: fix pr19340
  gdb, btrace: simplify gdb.btrace/multi-inferior.exp
  gdb, btrace: remove record_btrace_target::supports_*()
  gdb, btrace: set wait status to ignore if nothing is moving
  gdb, infrun: fix silent inferior switch in do_target_wait()
  gdb, btrace, infrun: per-inferior run-control

 gdb/infrun.c                                | 63 ++++++++++++++---
 gdb/linux-nat.c                             | 17 +++--
 gdb/record-btrace.c                         | 78 +++++++--------------
 gdb/remote.c                                | 22 ++++--
 gdb/testsuite/gdb.btrace/multi-inferior.c   | 10 ++-
 gdb/testsuite/gdb.btrace/multi-inferior.exp | 33 ++++-----
 gdb/testsuite/gdb.btrace/step.exp           | 22 ++++--
 7 files changed, 150 insertions(+), 95 deletions(-)