diff options
author | Pedro Alves <palves@redhat.com> | 2014-10-15 20:18:32 +0100 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2014-10-15 20:18:32 +0100 |
commit | 36728e82bd9bb5b472eb569dc11b8f2296d5e3df (patch) | |
tree | d3a2371140f40b269e215fd232cb4b32e5f93a44 /gdb/infrun.c | |
parent | 34b7e8a6ad0a735ecc0a953c8b65846d4776c88e (diff) | |
download | gdb-36728e82bd9bb5b472eb569dc11b8f2296d5e3df.zip gdb-36728e82bd9bb5b472eb569dc11b8f2296d5e3df.tar.gz gdb-36728e82bd9bb5b472eb569dc11b8f2296d5e3df.tar.bz2 |
Non-stop + software single-step archs: don't force displaced-stepping for all single-steps
This finally reverts this bit of commit 929dfd4f:
2009-07-31 Pedro Alves <pedro@codesourcery.com>
Julian Brown <julian@codesourcery.com>
...
(resume): If this is a software single-stepping arch, and
displaced-stepping is enabled, use it for all single-step
requests.
...
That means that in non-stop (or really displaced-stepping) mode, on
software single-step archs - even those that only use sss breakpoints
to deal with atomic sequences, like PPC - if we have more than one
thread single-stepping, we'll always serialize the threads'
single-steps, as only one thread may be displaced stepping at a given
time, because there's only one scratch pad.
We originally did that because GDB didn't support having multiple
threads software-single-stepping simultaneously. The previous patches
fixed that limitation, so we can now finally revert this too.
Tested on:
- x86_64 Fedora 20, on top of the 'software single-step on x86'
series.
gdb/
2014-10-15 Pedro Alves <palves@redhat.com>
* infrun.c (resume): Don't force displaced-stepping for all
single-steps on software single-stepping archs.
Diffstat (limited to 'gdb/infrun.c')
-rw-r--r-- | gdb/infrun.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/gdb/infrun.c b/gdb/infrun.c index 0f30a62..23c79f2 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -2089,8 +2089,7 @@ a command like `return' or `jump' to continue execution.")); event, displaced stepping breaks the vfork child similarly as single step software breakpoint. */ if (use_displaced_stepping (gdbarch) - && (tp->control.trap_expected - || (step && gdbarch_software_single_step_p (gdbarch))) + && tp->control.trap_expected && sig == GDB_SIGNAL_0 && !current_inferior ()->waiting_for_vfork_done) { |