* Re: [PATCH v3 17/17] native Linux: enable always non-stop by default
@ 2015-05-18 22:14 Doug Evans
0 siblings, 0 replies; 2+ messages in thread
From: Doug Evans @ 2015-05-18 22:14 UTC (permalink / raw)
To: Pedro Alves; +Cc: gdb-patches
Pedro Alves writes:
> The testsuite shows no regressions with this forced on, on:
>
> - Native x86_64 Fedora 20, with and output "set displaced off".
>
> - Native x86_64 Fedora 20, on top of x86 software single-step series.
>
> - PPC64 Fedora 18.
>
> - S/390 RHEL 7.1.
>
> Let's try making it the default.
>
> gdb/ChangeLog:
> 2015-04-17 Pedro Alves <palves@redhat.com>
>
> * linux-nat.c (linux_nat_always_non_stop_p): Return 1.
> ---
> gdb/linux-nat.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
> index d6fd40d..51ecdbc 100644
> --- a/gdb/linux-nat.c
> +++ b/gdb/linux-nat.c
> @@ -4565,7 +4565,7 @@ linux_nat_supports_non_stop (struct target_ops
*self)
> static int
> linux_nat_always_non_stop_p (struct target_ops *self)
> {
> - return 0;
> + return 1;
> }
>
> /* True if we want to support multi-process. To be removed when GDB
Hi.
For reference I don't have any other comments on this series.
[Well, I do, but they're more higher level, and from your
notes you were planning to defer.
E.g., "I'm explictly considering changing the "set non-stop on"
behavior as out of scope here."
ref: https://sourceware.org/ml/gdb-patches/2015-04/msg00663.html
]
^ permalink raw reply [flat|nested] 2+ messages in thread* [PATCH v3 00/23] All-stop on top of non-stop
@ 2015-04-17 10:47 Pedro Alves
2015-04-17 10:47 ` [PATCH v3 17/17] native Linux: enable always non-stop by default Pedro Alves
0 siblings, 1 reply; 2+ messages in thread
From: Pedro Alves @ 2015-04-17 10:47 UTC (permalink / raw)
To: gdb-patches
This is v3 of the series first posted at:
https://sourceware.org/ml/gdb-patches/2015-04/msg00073.html
v2 here:
https://sourceware.org/ml/gdb-patches/2015-04/msg00198.html
Compared to v2, this version:
- Fixes problems on software single-step targets, first exposed by
Yao's ARM testing.
- Makes the per-inferior displaced stepping queue work correctly
again. v1 and v2 has borked that.
- General cleanups.
A few patches in v2 were pushed to master meanwhile. This one in v2
was dropped in v3:
https://sourceware.org/ml/gdb-patches/2015-04/msg00207.html
PPC64: symbol-file + exec-file results in broken displaced stepping
because we now don't trip on that issue anymore, since this went in:
https://sourceware.org/ml/gdb-patches/2015-04/msg00341.html
[PATCH][AT_ENTRY version] PR13858 - Can't do displaced stepping with no symbols
The bug is still present, but is now latent, so I'll probably resend
that one out separately at some point.
I tried to mention the differences to v2 in each patch that had
changes, if any (scroll past ChangeLog).
Documentation changes have not changed, and have already been
approved.
Note most of these patches can go in without the final bits that
actually do all-stop-on-top-of-non-stop, as they fix problems that
exist e.g., with "set non-stop on" or "set displaced-stepping on" too.
I've (force) pushed this to users/palves/all-stop-non-stop for review
and testing convenience.
Tested on:
x86-64 GNU/Linux
x86-64 GNU/Linux on top of software single-step branch
PPC64 GNU/Linux
S/390 GNU/Linux
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Series-intro proper follows:
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, ppc64
and s390 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. Tested on x86-64 GNU/Linux native on top of x86
software single-step branch. Tested on PPC64 Fedora 18. Tested on
S/390 RHEL 7.1.
Pedro Alves (17):
Fix and test "checkpoint" in non-stop mode
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|lands-on-breakpoint}.exp race
Disable displaced stepping if trying it fails
PPC64: Fix gdb.arch/ppc64-atomic-inst.exp with displaced stepping
S/390: displaced stepping and PC-relative RIL-b/RIL-c instructions
native Linux: enable always non-stop by default
gdb/NEWS | 6 +
gdb/breakpoint.c | 11 +-
gdb/darwin-nat.c | 6 +-
gdb/doc/gdb.texinfo | 24 +
gdb/gdbarch.h | 6 +-
gdb/gdbarch.sh | 4 +
gdb/gdbthread.h | 60 +-
gdb/gnu-nat.c | 7 -
gdb/inf-ptrace.c | 6 +-
gdb/infcmd.c | 6 +-
gdb/infrun.c | 2290 +++++++++++++++-----
gdb/infrun.h | 7 +
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/rs6000-tdep.c | 68 +-
gdb/s390-linux-tdep.c | 115 +-
gdb/target-delegates.c | 59 +
gdb/target.c | 83 +
gdb/target.h | 24 +-
gdb/target/waitstatus.h | 5 +-
gdb/testsuite/gdb.arch/ppc64-atomic-inst.exp | 50 +-
gdb/testsuite/gdb.base/checkpoint-ns.exp | 27 +
gdb/testsuite/gdb.base/checkpoint.exp | 31 +-
gdb/testsuite/gdb.base/valgrind-disp-step.c | 32 +
gdb/testsuite/gdb.base/valgrind-disp-step.exp | 131 ++
.../signal-while-stepping-over-bp-other-thread.exp | 2 +-
.../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 | 9 +-
gdb/thread.c | 197 +-
gdb/windows-nat.c | 6 +-
37 files changed, 2741 insertions(+), 709 deletions(-)
create mode 100644 gdb/testsuite/gdb.base/checkpoint-ns.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
^ permalink raw reply [flat|nested] 2+ messages in thread* [PATCH v3 17/17] native Linux: enable always non-stop by default
2015-04-17 10:47 [PATCH v3 00/23] All-stop on top of non-stop Pedro Alves
@ 2015-04-17 10:47 ` Pedro Alves
0 siblings, 0 replies; 2+ messages in thread
From: Pedro Alves @ 2015-04-17 10:47 UTC (permalink / raw)
To: gdb-patches
The testsuite shows no regressions with this forced on, on:
- Native x86_64 Fedora 20, with and output "set displaced off".
- Native x86_64 Fedora 20, on top of x86 software single-step series.
- PPC64 Fedora 18.
- S/390 RHEL 7.1.
Let's try making it the default.
gdb/ChangeLog:
2015-04-17 Pedro Alves <palves@redhat.com>
* linux-nat.c (linux_nat_always_non_stop_p): Return 1.
---
gdb/linux-nat.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
index d6fd40d..51ecdbc 100644
--- a/gdb/linux-nat.c
+++ b/gdb/linux-nat.c
@@ -4565,7 +4565,7 @@ linux_nat_supports_non_stop (struct target_ops *self)
static int
linux_nat_always_non_stop_p (struct target_ops *self)
{
- return 0;
+ return 1;
}
/* True if we want to support multi-process. To be removed when GDB
--
1.9.3
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-05-18 22:14 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-05-18 22:14 [PATCH v3 17/17] native Linux: enable always non-stop by default Doug Evans
-- strict thread matches above, loose matches on Subject: below --
2015-04-17 10:47 [PATCH v3 00/23] All-stop on top of non-stop Pedro Alves
2015-04-17 10:47 ` [PATCH v3 17/17] native Linux: enable always non-stop by default Pedro Alves
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox