diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-09-13 21:39:59 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-09-13 21:39:59 +0000 |
commit | 0935723e5e203625c49e97753a79902f919fbded (patch) | |
tree | 14e32a3c74a8a8d4583c11752fccbfc0e1ad76e0 | |
parent | c65b3e0d43b7b64febc4a1b7192e13f7be3a94fa (diff) | |
download | gdb-0935723e5e203625c49e97753a79902f919fbded.zip gdb-0935723e5e203625c49e97753a79902f919fbded.tar.gz gdb-0935723e5e203625c49e97753a79902f919fbded.tar.bz2 |
gdb/testsuite/
* gdb.python/py-events.exp: Remove pretty printing comment.
* gdb.python/py-evsignal.exp: New file.
* gdb.python/py-evthreads.c: Include signal.h.
(thread3): Remove variable count3. Remove variable bad and use raise
instead.
(thread2): Remove variable count2. Move thread3 pthread_create here,
merge pthread_join to a single line.
(main): Remove variable count1. Merge pthread_join with pthread_create
to a single line.
* gdb.python/py-evthreads.exp: Remove pretty printing comment. New
KFAIL python/12966 for gdbserver. Test return value of
gdb_compile_pthreads. Use gdb_run_cmd. Replace send_gdb and
gdb_expect by gdb_test and gdb_test_multiple.
(thread 2, thread 3): New tests.
-rw-r--r-- | gdb/testsuite/ChangeLog | 18 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/py-events.exp | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/py-evsignal.exp | 54 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/py-evthreads.c | 28 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/py-evthreads.exp | 100 |
5 files changed, 117 insertions, 88 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 9d85d02..62eb291 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,21 @@ +2011-09-13 Sami Wagiaalla <swagiaal@redhat.com> + Jan Kratochvil <jan.kratochvil@redhat.com> + + * gdb.python/py-events.exp: Remove pretty printing comment. + * gdb.python/py-evsignal.exp: New file. + * gdb.python/py-evthreads.c: Include signal.h. + (thread3): Remove variable count3. Remove variable bad and use raise + instead. + (thread2): Remove variable count2. Move thread3 pthread_create here, + merge pthread_join to a single line. + (main): Remove variable count1. Merge pthread_join with pthread_create + to a single line. + * gdb.python/py-evthreads.exp: Remove pretty printing comment. New + KFAIL python/12966 for gdbserver. Test return value of + gdb_compile_pthreads. Use gdb_run_cmd. Replace send_gdb and + gdb_expect by gdb_test and gdb_test_multiple. + (thread 2, thread 3): New tests. + 2011-09-12 Matt Rice <ratmice@gmail.com> Pedro Alves <pedro@codesourcery.com> diff --git a/gdb/testsuite/gdb.python/py-events.exp b/gdb/testsuite/gdb.python/py-events.exp index e5d6daf..8493809 100644 --- a/gdb/testsuite/gdb.python/py-events.exp +++ b/gdb/testsuite/gdb.python/py-events.exp @@ -13,11 +13,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -# This file is part of the GDB testsuite. It tests Python-based -# pretty-printing for the CLI. - -# Skip all tests if Python scripting is not enabled. - if $tracelevel then { strace $tracelevel } diff --git a/gdb/testsuite/gdb.python/py-evsignal.exp b/gdb/testsuite/gdb.python/py-evsignal.exp new file mode 100644 index 0000000..5424c92 --- /dev/null +++ b/gdb/testsuite/gdb.python/py-evsignal.exp @@ -0,0 +1,54 @@ +# Copyright (C) 2010, 2011 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +if $tracelevel then { + strace $tracelevel +} + +if {[is_remote target]} { + # RuntimeError: Could not find event thread + kfail "python/12966" "Signal Thread 3" + return -1 +} + +load_lib gdb-python.exp + +set testfile "py-evsignal" +set srcfile py-evthreads.c +set binfile ${objdir}/${subdir}/${testfile} +set pyfile ${srcdir}/${subdir}/py-events.py + +if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { + return -1 +} +clean_restart $testfile + +if { [skip_python_tests] } { continue } + +gdb_test_no_output "python execfile ('${pyfile}')" "" + +gdb_test "Test_Events" "Event testers registered." +gdb_test_no_output "set non-stop on" +gdb_test_no_output "set target-async on" + +gdb_run_cmd +gdb_test_multiple "" "Signal Thread 3" { + -re "event type: stop\r\nstop reason: signal\r\nstop signal: SIGUSR1\r\nthread num: 3\r\nevent type: stop\r\n$gdb_prompt $" { + pass "thread 3 was signaled" + } + -re "The target does not support running in non-stop mode" { + unsupported "non-stop mode is unsupported" + } +} diff --git a/gdb/testsuite/gdb.python/py-evthreads.c b/gdb/testsuite/gdb.python/py-evthreads.c index 1464ce6..65bce44 100644 --- a/gdb/testsuite/gdb.python/py-evthreads.c +++ b/gdb/testsuite/gdb.python/py-evthreads.c @@ -19,37 +19,35 @@ #include <stdio.h> #include <pthread.h> #include <unistd.h> +#include <signal.h> pthread_t thread2_id; pthread_t thread3_id; void* thread3 (void* d) { - int count3 = 0; - count3++; - - int *bad; - *bad = 1; + raise (SIGUSR1); return NULL; } void* thread2 (void* d) { - int count2 = 0; - count2++; + /* Do not quit thread3 asynchronously wrt thread2 stop - wait first on + thread3_id to stop. It would complicate testcase receiption of the + events. */ + + pthread_create (&thread3_id, NULL, thread3, NULL); pthread_join (thread3_id, NULL); + return NULL; } -int main (){ - - pthread_create (&thread2_id, NULL, thread2, NULL); - pthread_create (&thread3_id, NULL, thread3, NULL); +int main (void) +{ + /* Use single line to not to race whether `thread2' breakpoint or `next' over + pthread_create will stop first. */ - int count1 = 0; // stop1 - count1++; + pthread_create (&thread2_id, NULL, thread2, NULL); pthread_join (thread2_id, NULL); - pthread_join (thread2_id, NULL); - pthread_join (thread3_id, NULL); return 12; } diff --git a/gdb/testsuite/gdb.python/py-evthreads.exp b/gdb/testsuite/gdb.python/py-evthreads.exp index c401943..5009fc7 100644 --- a/gdb/testsuite/gdb.python/py-evthreads.exp +++ b/gdb/testsuite/gdb.python/py-evthreads.exp @@ -13,15 +13,16 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -# This file is part of the GDB testsuite. It tests Python-based -# pretty-printing for the CLI. - -# Skip all tests if Python scripting is not enabled. - if $tracelevel then { strace $tracelevel } +if {[is_remote target]} { + # RuntimeError: Could not find event thread + kfail "python/12966" "Run to breakpoint 1" + return -1 +} + if { ![support_displaced_stepping] } { unsupported "displaced stepping" return -1 @@ -34,7 +35,9 @@ set srcfile ${testfile}.c set binfile ${objdir}/${subdir}/${testfile} set pyfile ${srcdir}/${subdir}/py-events.py -gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug nowarnings} +if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { + return -1 +} clean_restart $testfile if { [skip_python_tests] } { continue } @@ -49,76 +52,37 @@ gdb_breakpoint "main" gdb_breakpoint "thread2" gdb_breakpoint "thread3" -send_gdb "run\n" -gdb_expect { - -re "event type: stop.* -.*stop reason: breakpoint.* -.*breakpoint number: 1.* -.*thread num: 1.*" { - pass "reached breakpoint 1" +gdb_run_cmd +set test "Run to breakpoint 1" +gdb_test_multiple "" $test { + -re "event type: stop\r\nstop reason: breakpoint\r\nbreakpoint number: 1\r\nthread num: 1\r\n$gdb_prompt $" { + pass $test } - timeout { - fail "did not reach breakpoint 1" - } -} - -send_gdb "next\n" -gdb_expect { - -re "event type: stop.* -.*stop reason: breakpoint.* -.*breakpoint number: 2.* -.*thread num: 2.*" { - pass "reached breakpoint 2" + -re "The target does not support running in non-stop mode" { + unsupported "non-stop mode is unsupported" + return } - timeout { - fail "did not reach breakpoint 2" - } } -send_gdb "next\n" -gdb_expect { - -re "event type: stop.* -.*stop reason: breakpoint.* -.*breakpoint number: 3.* -.*thread num: 3.*" { - pass "reached breakpoint 3" - } - timeout { - fail "did not reach breakpoint 3" - } -} +gdb_test "next" "event type: stop\r\nstop reason: breakpoint\r\nbreakpoint number: 2\r\nthread num: 2" "reached breakpoint 2" -send_gdb "continue&\n" -gdb_expect { - -re ".*event type: continue.* -.*thread num: 1.*\r\n$gdb_prompt $" { - pass "continue thread 1" - } - timeout { - fail "continue thread 1 failed" - } -} +gdb_test "thread 2" {\[Switching to thread 2 .*} + +gdb_test "next" "event type: stop\r\nstop reason: breakpoint\r\nbreakpoint number: 3\r\nthread num: 3" "reached breakpoint 3" + +gdb_test "thread 3" {\[Switching to thread 3 .*} -gdb_test "thread 2" ".*Switching to thread 2.*" -send_gdb "continue&\n" -gdb_expect { - -re ".*event type: continue.* -.*thread num: 2.*" { - pass "continue thread 2" +set test "continue thread 1" +gdb_test_multiple "continue&" $test { + -re "event type: continue\r\nthread num: 3\r\n$gdb_prompt " { + # This expect string must not expect the end-of-buffer '$'. + pass $test } - timeout { - fail "continue thread 2 failed" - } } -send_gdb "continue -a\n" -gdb_expect { - -re ".*stop reason: signal.* -.*stop signal: SIGSEGV.* -.*thread num: 3.*" { - pass "thread 3 was signalled" +set test "thread 3 was signaled" +gdb_test_multiple "" $test { + -re "event type: stop\r\nstop reason: signal\r\nstop signal: SIGUSR1\r\nthread num: 3\r\nevent type: stop\r\n$" { + pass $test } - timeout { - fail "thread 3 was not signalled" - } } |