From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 105453 invoked by alias); 17 Oct 2019 22:50:32 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 105443 invoked by uid 89); 17 Oct 2019 22:50:32 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-18.5 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_2,GIT_PATCH_3,SPF_HELO_PASS autolearn=ham version=3.3.1 spammy=sk:new-ui-, sk:newui, UD:gdb.linespec, UD:python.texi X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 17 Oct 2019 22:50:30 +0000 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2EF673086202 for ; Thu, 17 Oct 2019 22:50:29 +0000 (UTC) Received: from localhost.localdomain (ovpn04.gateway.prod.ext.ams2.redhat.com [10.39.146.4]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7E9B91001938 for ; Thu, 17 Oct 2019 22:50:28 +0000 (UTC) From: Pedro Alves To: gdb-patches@sourceware.org Subject: [PATCH v2 00/24] Multi-target support Date: Thu, 17 Oct 2019 22:50:00 -0000 Message-Id: <20191017225026.30496-1-palves@redhat.com> X-SW-Source: 2019-10/txt/msg00590.txt.bz2 Here's v2 of the multi-target patchset, which addresses all the review comments so far, I believe. Patch 15 is new, so all following patches are shifted by one. This time, I've adjusted the host-specific nat files to function API changes. I tried to find spots that would need changes using grep. I built the series on AIX, x86/SPARC Solaris, 64-bit Windows, x86 GNU/Linux -m64/-m32, and Aarch64 GNU/Linux. I'm currently running this through the buildbot, will have results tomorrow. I don't expect any serious major issue, if any, as so far runs that completed seem OK. Follows the intro blurb: This series adds multi-target support to GDB. What this means is that with this series, GDB can now be connected to different targets at the same time. E.g., you can debug a live native process and a core dump at the same time, connect to multiple gdbservers, etc. Patches 1 to 17 are preparatory patches. Patch 18 is the actual multi-target patch. This is the largest patch in the series. It does a number of things at the same time, but they're all intertwined, so I gave up on splitting it further. Patch 19 adds tests. Split out because patch 18 is already too big as is. Patch 22 does some user-visible changes, including a new command to list open target connections. This is just the bare minimum I could think of that is necessary for multi-target work. I'm sure we'll find other tweaks to other commands necessary. Documentation is in patch 24. Eli already reviewed and approved it. I've pushed this to users/palves/multi-target-v2 on sourceware. Pedro Alves (23): Preserve selected thread in all-stop w/ background execution Don't rely on inferior_ptid in record_full_wait Make "show remote exec-file" inferior-aware exceptions.c:print_flush: Remove obsolete check Make target_ops::has_execution take an 'inferior *' instead of a ptid_t Don't check target is running in remote_target::mourn_inferior Delete unnecessary code from kill_command Introduce switch_to_inferior_no_thread switch inferior/thread before calling target methods Some get_last_target_status tweaks tfile_target::close: trace_fd can't be -1 Use all_non_exited_inferiors in infrun.c Delete exit_inferior_silent(int pid) Tweak handling of remote errors in response to resumption packet Fix reconnecting to a gdbserver already debugging multiple processes, I Fix reconnecting to a gdbserver already debugging multiple processes, II Multi-target support Add multi-target tests gdbarch-selftests.c: No longer error out if debugging something Revert 'Remove unused struct serial::name field' Add "info connections" command, "info inferiors" connection number/string Require always-non-stop for multi-target resumptions Multi-target: NEWS and user manual Tankut Baris Aktemur (1): Avoid another inferior_ptid reference in gdb/remote.c gdb/doc/gdb.texinfo | 137 ++-- gdb/doc/guile.texi | 4 +- gdb/doc/python.texi | 6 +- gdb/NEWS | 29 + gdb/Makefile.in | 1 + gdb/aarch64-linux-nat.c | 2 +- gdb/ada-tasks.c | 4 +- gdb/aix-thread.c | 24 +- gdb/amd64-fbsd-tdep.c | 4 +- gdb/amd64-linux-nat.c | 2 +- gdb/break-catch-sig.c | 3 +- gdb/break-catch-syscall.c | 3 +- gdb/breakpoint.c | 25 +- gdb/bsd-uthread.c | 20 +- gdb/btrace.c | 2 +- gdb/corelow.c | 10 +- gdb/event-top.c | 14 +- gdb/exceptions.c | 6 +- gdb/exec.c | 51 +- gdb/exec.h | 7 + gdb/fbsd-tdep.c | 3 +- gdb/fork-child.c | 7 +- gdb/gdbarch-selftests.c | 5 - gdb/gdbserver/fork-child.c | 3 +- gdb/gdbserver/inferiors.c | 2 +- gdb/gdbserver/linux-low.c | 2 +- gdb/gdbserver/lynx-low.c | 2 +- gdb/gdbserver/nto-low.c | 2 +- gdb/gdbserver/remote-utils.c | 2 +- gdb/gdbserver/target.c | 8 +- gdb/gdbserver/target.h | 11 +- gdb/gdbserver/win32-low.c | 4 +- gdb/gdbsupport/common-gdbthread.h | 5 +- gdb/gdbthread.h | 133 ++-- gdb/i386-fbsd-tdep.c | 4 +- gdb/i386-linux-nat.c | 2 +- gdb/inf-child.c | 2 +- gdb/inf-ptrace.c | 6 +- gdb/infcall.c | 3 +- gdb/infcmd.c | 129 ++-- gdb/inferior-iter.h | 76 ++- gdb/inferior.c | 156 +++-- gdb/inferior.h | 71 +- gdb/infrun.c | 720 ++++++++++++++++----- gdb/infrun.h | 23 +- gdb/inline-frame.c | 51 +- gdb/inline-frame.h | 12 +- gdb/linux-fork.c | 5 +- gdb/linux-nat.c | 76 ++- gdb/linux-nat.h | 1 + gdb/linux-tdep.c | 3 +- gdb/linux-thread-db.c | 112 ++-- gdb/mi/mi-interp.c | 10 +- gdb/mi/mi-main.c | 6 +- gdb/nat/fork-inferior.c | 8 +- gdb/nat/fork-inferior.h | 5 +- gdb/nto-procfs.c | 2 +- gdb/ppc-fbsd-tdep.c | 4 +- gdb/proc-service.c | 17 +- gdb/process-stratum-target.c | 12 +- gdb/process-stratum-target.h | 31 +- gdb/procfs.c | 49 +- gdb/python/py-threadevent.c | 4 +- gdb/ravenscar-thread.c | 15 +- gdb/record-btrace.c | 41 +- gdb/record-full.c | 22 +- gdb/regcache.c | 162 +++-- gdb/regcache.h | 30 +- gdb/remote.c | 307 +++++---- gdb/riscv-fbsd-tdep.c | 4 +- gdb/serial.c | 4 + gdb/serial.h | 1 + gdb/sol-thread.c | 28 +- gdb/sol2-tdep.c | 2 +- gdb/solib-svr4.c | 3 +- gdb/target-connection.c | 159 +++++ gdb/target-connection.h | 40 ++ gdb/target-delegates.c | 27 + gdb/target.c | 192 +++--- gdb/target.h | 41 +- gdb/testsuite/gdb.base/fork-running-state.exp | 17 +- .../gdb.base/kill-detach-inferiors-cmd.exp | 4 +- gdb/testsuite/gdb.base/quit-live.exp | 2 +- gdb/testsuite/gdb.base/remote-exec-file.exp | 46 ++ gdb/testsuite/gdb.guile/scm-progspace.exp | 2 +- gdb/testsuite/gdb.linespec/linespec.exp | 2 +- gdb/testsuite/gdb.mi/new-ui-mi-sync.exp | 2 +- .../gdb.mi/user-selected-context-sync.exp | 2 +- gdb/testsuite/gdb.multi/multi-target.c | 100 +++ gdb/testsuite/gdb.multi/multi-target.exp | 387 +++++++++++ gdb/testsuite/gdb.multi/remove-inferiors.exp | 2 +- gdb/testsuite/gdb.multi/tids-gid-reset.c | 22 + gdb/testsuite/gdb.multi/tids-gid-reset.exp | 96 +++ gdb/testsuite/gdb.multi/watchpoint-multi.exp | 2 +- gdb/testsuite/gdb.python/py-inferior.exp | 4 +- .../gdb.server/connect-without-multi-process.exp | 7 +- .../gdb.server/extended-remote-restart.exp | 22 +- gdb/testsuite/gdb.threads/async.c | 70 ++ gdb/testsuite/gdb.threads/async.exp | 98 +++ gdb/testsuite/gdb.threads/fork-plus-threads.exp | 2 +- .../forking-threads-plus-breakpoint.exp | 2 +- gdb/testsuite/gdb.trace/report.exp | 2 +- gdb/testsuite/lib/gdbserver-support.exp | 4 + gdb/thread-iter.c | 14 +- gdb/thread-iter.h | 25 +- gdb/thread.c | 230 ++++--- gdb/top.c | 17 +- gdb/tracectf.c | 2 +- gdb/tracefile-tfile.c | 5 +- gdb/tracefile.h | 2 +- gdb/windows-nat.c | 20 +- 111 files changed, 3360 insertions(+), 1073 deletions(-) create mode 100644 gdb/target-connection.c create mode 100644 gdb/target-connection.h create mode 100644 gdb/testsuite/gdb.base/remote-exec-file.exp create mode 100644 gdb/testsuite/gdb.multi/multi-target.c create mode 100644 gdb/testsuite/gdb.multi/multi-target.exp create mode 100644 gdb/testsuite/gdb.multi/tids-gid-reset.c create mode 100644 gdb/testsuite/gdb.multi/tids-gid-reset.exp create mode 100644 gdb/testsuite/gdb.threads/async.c create mode 100644 gdb/testsuite/gdb.threads/async.exp -- 2.14.5