From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 94674 invoked by alias); 1 Apr 2015 22:14:19 -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 94661 invoked by uid 89); 1 Apr 2015 22:14:18 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.5 required=5.0 tests=AWL,BAYES_00,KAM_LAZY_DOMAIN_SECURITY,SPF_HELO_PASS,T_RP_MATCHES_RCVD autolearn=no version=3.3.2 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 (AES256-GCM-SHA384 encrypted) ESMTPS; Wed, 01 Apr 2015 22:14:17 +0000 Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id t31MEGLX023865 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL) for ; Wed, 1 Apr 2015 18:14:16 -0400 Received: from brno.lan (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx14.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t31MEEtj009701 for ; Wed, 1 Apr 2015 18:14:15 -0400 From: Pedro Alves To: gdb-patches@sourceware.org Subject: [PATCH 00/17] All-stop on top of non-stop Date: Wed, 01 Apr 2015 22:14:00 -0000 Message-Id: <1427926454-16431-1-git-send-email-palves@redhat.com> X-SW-Source: 2015-04/txt/msg00073.txt.bz2 (Eli, documentation changes in patch #12.) This series implements user-visible all-stop mode running with the target_ops backend always in non-stop mode. This is a stepping stone towards finer-grained control of threads, being able to do interesting things like inferior and thread groups/sets (itsets), associating groups with breakpoints (which threads cause a stop, which threads are implicitly paused when a breakpoint triggers), etc. From the user's perspective, all-stop mode is really just a special case of being able to stop and resume specific sets of threads, so it makes sense to do this step first. After this series, even in all-stop mode ("set non-stop off", the default) the target is no longer in charge of stopping all threads before reporting an event to the core -- the core takes care of it when it sees fit. For example, when "next"- or "step"-ing, we can avoid stopping and resuming all threads at each internal single-step, and instead only stop all threads when we're about to present the stop to the user. In order to get there, the series teaches GDB to do non-stop mode even without displaced stepping (stop all threads, step over breakpoint, restart threads), as displaced stepping isn't implemented everywhere, and doesn't work in some scenarios (as in, we can't use it, not that it's buggy). And then it fixes all testsuite regressions (on native x86-64 GNU/Linux) this new mode causes, compared to all-stop ("set non-stop off") with the target backend in all-stop mode too (i.e., the current default). Making "target remote" work in always non-stop mode is deferred for later (this will be even more useful for remote as the all-stop mode RSP variant can't really do asynchronous debugging). Tested on x86_64 Fedora 20, native, with and without "set displaced off", and with and without "maint set target-non-stop on"; and also against gdbserver. I've pushed this to users/palves/all-stop-non-stop for convenience. Pedro Alves (17): Fix and test "checkpoint" in non-stop mode PR13858 - Can't do displaced stepping with no symbols Displaced stepping debug: fetch the right regcache Change adjust_pc_after_break's prototype remote.c/all-stop: Implement TARGET_WAITKIND_NO_RESUMED and TARGET_WNOHANG Make thread_still_needs_step_over consider stepping_over_watchpoint too Embed the pending step-over chain in thread_info objects Use keep_going in proceed and start_step_over too Misc switch_back_to_stepped_thread cleanups Factor out code to re-resume stepped thread Teach non-stop to do in-line step-overs (stop all, step, restart) Implement all-stop on top of a target running non-stop mode Fix signal-while-stepping-over-bp-other-thread.exp on targets always in non-stop Fix interrupt-noterm.exp on targets always in non-stop Fix step-over-trips-on-watchpoint.exp/step-over-lands-on-breakpoint.exp race Disable displaced stepping if trying it fails native Linux: enable always non-stop by default gdb/breakpoint.c | 11 +- gdb/darwin-nat.c | 6 +- gdb/doc/gdb.texinfo | 23 + gdb/gdbthread.h | 57 +- gdb/gnu-nat.c | 7 - gdb/inf-ptrace.c | 6 +- gdb/infcmd.c | 6 +- gdb/inferior.h | 8 + gdb/infrun.c | 2122 +++++++++++++++----- gdb/infrun.h | 3 + gdb/linux-nat.c | 33 +- gdb/monitor.c | 4 +- gdb/nto-procfs.c | 14 +- gdb/procfs.c | 4 +- gdb/remote-m32r-sdi.c | 6 +- gdb/remote-sim.c | 20 +- gdb/remote.c | 57 +- gdb/target-delegates.c | 59 + gdb/target.c | 83 + gdb/target.h | 24 +- gdb/target/waitstatus.h | 5 +- gdb/testsuite/gdb.base/checkpoint-ns.exp | 27 + gdb/testsuite/gdb.base/checkpoint.exp | 31 +- gdb/testsuite/gdb.base/step-over-no-symbols.exp | 88 + gdb/testsuite/gdb.base/valgrind-disp-step.c | 32 + gdb/testsuite/gdb.base/valgrind-disp-step.exp | 116 ++ .../signal-while-stepping-over-bp-other-thread.exp | 20 +- .../gdb.threads/step-over-lands-on-breakpoint.c | 17 +- .../gdb.threads/step-over-lands-on-breakpoint.exp | 6 +- .../gdb.threads/step-over-trips-on-watchpoint.c | 17 +- .../gdb.threads/step-over-trips-on-watchpoint.exp | 8 +- gdb/thread.c | 206 +- gdb/windows-nat.c | 6 +- 33 files changed, 2451 insertions(+), 681 deletions(-) create mode 100644 gdb/testsuite/gdb.base/checkpoint-ns.exp create mode 100644 gdb/testsuite/gdb.base/step-over-no-symbols.exp create mode 100644 gdb/testsuite/gdb.base/valgrind-disp-step.c create mode 100644 gdb/testsuite/gdb.base/valgrind-disp-step.exp -- 1.9.3