From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10464 invoked by alias); 13 Sep 2011 21:42:08 -0000 Received: (qmail 10444 invoked by uid 22791); 13 Sep 2011 21:42:05 -0000 X-SWARE-Spam-Status: No, hits=-6.8 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,SPF_HELO_PASS X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 13 Sep 2011 21:41:10 +0000 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p8DLf7IN014893 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 13 Sep 2011 17:41:07 -0400 Received: from host1.jankratochvil.net (ovpn-116-38.ams2.redhat.com [10.36.116.38]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id p8DLf4jT027511 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 13 Sep 2011 17:41:06 -0400 Received: from host1.jankratochvil.net (localhost [127.0.0.1]) by host1.jankratochvil.net (8.14.4/8.14.4) with ESMTP id p8DLf44P017783; Tue, 13 Sep 2011 23:41:04 +0200 Received: (from jkratoch@localhost) by host1.jankratochvil.net (8.14.4/8.14.4/Submit) id p8DLf3co017782; Tue, 13 Sep 2011 23:41:03 +0200 Date: Tue, 13 Sep 2011 21:45:00 -0000 From: Jan Kratochvil To: sami wagiaalla Cc: Pedro Alves , gdb-patches@sourceware.org, Tom Tromey Subject: Re: [patch] Support inferior events in python Message-ID: <20110913214103.GA23161@host1.jankratochvil.net> References: <20110209163022.GA16069@host1.dyn.jankratochvil.net> <4D55559B.1090004@redhat.com> <201102111556.42026.pedro@codesourcery.com> <4D59662D.30101@redhat.com> <20110216111054.GA3594@host1.dyn.jankratochvil.net> <20110706193742.GA4463@host1.jankratochvil.net> <4E15B86A.1090701@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4E15B86A.1090701@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-IsSubscribed: yes 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 X-SW-Source: 2011-09/txt/msg00239.txt.bz2 On Thu, 07 Jul 2011 15:45:14 +0200, sami wagiaalla wrote: > On 07/06/2011 03:37 PM, Jan Kratochvil wrote: > >I will check it in in some time without any comments. > > Please do, and thank you for taking care of this :) Checked in, with a technical re-diff. Thanks, Jan http://sourceware.org/ml/gdb-cvs/2011-09/msg00076.html --- src/gdb/testsuite/ChangeLog 2011/09/12 21:24:50 1.2851 +++ src/gdb/testsuite/ChangeLog 2011/09/13 21:39:58 1.2852 @@ -1,3 +1,21 @@ +2011-09-13 Sami Wagiaalla + Jan Kratochvil + + * 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 Pedro Alves --- src/gdb/testsuite/gdb.python/py-evsignal.exp +++ src/gdb/testsuite/gdb.python/py-evsignal.exp 2011-09-13 21:40:18.445023000 +0000 @@ -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 . + +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" + } +} --- src/gdb/testsuite/gdb.python/py-events.exp 2011/02/05 05:27:23 1.1 +++ src/gdb/testsuite/gdb.python/py-events.exp 2011/09/13 21:39:59 1.2 @@ -13,11 +13,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -# 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 } --- src/gdb/testsuite/gdb.python/py-evthreads.c 2011/02/05 05:27:23 1.1 +++ src/gdb/testsuite/gdb.python/py-evthreads.c 2011/09/13 21:39:59 1.2 @@ -19,37 +19,35 @@ #include #include #include +#include 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; } --- src/gdb/testsuite/gdb.python/py-evthreads.exp 2011/07/18 04:14:21 1.4 +++ src/gdb/testsuite/gdb.python/py-evthreads.exp 2011/09/13 21:39:59 1.5 @@ -13,15 +13,16 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -# 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 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 "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" - } }