aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/ChangeLog
diff options
context:
space:
mode:
authorYao Qi <yao.qi@linaro.org>2016-04-22 11:59:18 +0100
committerYao Qi <yao.qi@linaro.org>2016-04-22 11:59:18 +0100
commit5b061e98860ad84315704c732a1a43525f494946 (patch)
treef81690ea78172bf2e6689473eb8a6bc08d33ebfd /gdb/testsuite/ChangeLog
parent5c5dc57fcf2f543b7b8bdd2c3cfdabc74c39041b (diff)
downloadgdb-5b061e98860ad84315704c732a1a43525f494946.zip
gdb-5b061e98860ad84315704c732a1a43525f494946.tar.gz
gdb-5b061e98860ad84315704c732a1a43525f494946.tar.bz2
Deliver signal in hardware single step
GDBserver doesn't deliver signal when stepping over a breakpoint even hardware single step is used. When GDBserver started to step over (thread creation) breakpoint for mutlit-threaded debugging in 2002 [1], GDBserver behaves this way. This behavior gets trouble on conditional breakpoints on branch to self instruction like this, 0x00000000004005b6 <+29>: jmp 0x4005b6 <main+29> and I set breakpoint $(gdb) break branch-to-self.c:43 if counter > 3 and the variable counter will be set to 5 in SIGALRM signal handler. Since GDBserver keeps stepping over breakpoint, the SIGALRM can never be dequeued and delivered to the inferior, so the program can't stop. The test can be found in gdb.base/branch-to-self.exp. GDBserver didn't deliver signal when stepping over a breakpoint because a tracepoint is collected twice if GDBserver does so in the following scenario, which can be reproduced by gdb.trace/signal.exp. - program stops at tracepoint, and tracepoint is collected, - gdbserver starts a step-over, - a signal arrives, step-over is canceled, and signal should be passed, - gdbserver starts a new step-over again, pass the signal as well, - program stops at the entry of signal handler, step-over finished, - gdbserver proceeds, - program returns from the signal handler, again to the tracepoint, and thus is collected again. The spurious collection isn't that harmful, IMO, so it should be OK to let GDBserver deliver signal when stepping over a breakpoint. gdb/gdbserver: 2016-04-22 Yao Qi <yao.qi@linaro.org> * linux-low.c (lwp_signal_can_be_delivered): Don't deliver signal when stepping over breakpoint with software single step. gdb/testsuite: 2016-04-22 Yao Qi <yao.qi@linaro.org> * gdb.trace/signal.exp: Also pass if $tracepoint_hits($i) > $iterations.
Diffstat (limited to 'gdb/testsuite/ChangeLog')
-rw-r--r--gdb/testsuite/ChangeLog5
1 files changed, 5 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 29447af..249cbc0 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2016-04-22 Yao Qi <yao.qi@linaro.org>
+ * gdb.trace/signal.exp: Also pass if
+ $tracepoint_hits($i) > $iterations.
+
+2016-04-22 Yao Qi <yao.qi@linaro.org>
+
* gdb.trace/signal.c: New file.
* gdb.trace/signal.exp: New file.