From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20122 invoked by alias); 4 Jul 2014 14:41:15 -0000 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 Received: (qmail 20062 invoked by uid 89); 4 Jul 2014 14:41:11 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS,SPF_PASS,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Fri, 04 Jul 2014 14:41:07 +0000 Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s64Ef61n010933 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 4 Jul 2014 10:41:06 -0400 Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx14.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s64Ef4xi028403; Fri, 4 Jul 2014 10:41:05 -0400 Message-ID: <53B6BCFF.90703@redhat.com> Date: Fri, 04 Jul 2014 14:41:00 -0000 From: Pedro Alves User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 To: Tom Tromey CC: gdb-patches@sourceware.org Subject: Re: [PATCH] fix record "run" regression References: <1404251135-2427-1-git-send-email-tromey@redhat.com> <53B3D640.2060807@redhat.com> <87ha2ynwez.fsf@fleche.redhat.com> In-Reply-To: <87ha2ynwez.fsf@fleche.redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-SW-Source: 2014-07/txt/msg00093.txt.bz2 On 07/03/2014 07:12 PM, Tom Tromey wrote: > Pedro> The test should first probe whether "start" with without > Pedro> record actually worked. I think you'll get an error > Pedro> with --target_board=native-gdbserver as is, because > Pedro> the first runto main will use something like > Pedro> "target remote ...; tb main; c" instead of "run/start", while the target > Pedro> really does not support "run". I'd replace the first runto main > Pedro> with explicit "start", and issue unsupported if "does not support" > Pedro> comes out then. > > I ended up having it check $use_gdb_stub. Thanks, that works too. > > I think this version addresses all your comments. > Let me know what you think. > > Tom > > 2014-07-03 Tom Tromey > > * target.c (target_require_runnable): Also check record_stratum. > Update comment. > > 2014-07-03 Tom Tromey > > * gdb.reverse/rerun-prec.c: New file. > * gdb.reverse/rerun-prec.exp: New file. > > diff --git a/gdb/target.c b/gdb/target.c > index ece59e6..180ec26 100644 > --- a/gdb/target.c > +++ b/gdb/target.c > @@ -2423,10 +2423,11 @@ target_require_runnable (void) > if (t->to_create_inferior != NULL) > return; > > - /* Do not worry about thread_stratum targets that can not > + /* Do not worry about targets at certain strata that can not > create inferiors. Assume they will be pushed again if > necessary, and continue to the process_stratum. */ > if (t->to_stratum == thread_stratum > + || t->to_stratum == record_stratum > || t->to_stratum == arch_stratum) > continue; > > diff --git a/gdb/testsuite/gdb.reverse/rerun-prec.c b/gdb/testsuite/gdb.reverse/rerun-prec.c > new file mode 100644 > index 0000000..c0f90cb > --- /dev/null > +++ b/gdb/testsuite/gdb.reverse/rerun-prec.c > @@ -0,0 +1,21 @@ > +/* This testcase is part of GDB, the GNU debugger. > + > + Copyright 2014 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 . */ > + > +int main (int argc, char **argv) > +{ > + return 0; > +} > diff --git a/gdb/testsuite/gdb.reverse/rerun-prec.exp b/gdb/testsuite/gdb.reverse/rerun-prec.exp > new file mode 100644 > index 0000000..cd2305b > --- /dev/null > +++ b/gdb/testsuite/gdb.reverse/rerun-prec.exp > @@ -0,0 +1,47 @@ > +# Copyright 2014 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 {![supports_reverse] || ![supports_process_record]} { > + return > +} > + > +standard_testfile > + > +if {[prepare_for_testing $testfile.exp $testfile [list $srcfile]]} { > + return -1 > +} > + > +if {$use_gdb_stub} { > + unsupported "re-running not supported on this board" > + return > +} > + > +# The bug is a regression in the sequence "run; record; run". > +runto main > +gdb_test_no_output "record" "Turn on process record" > + > +# We can't use gdb_run_cmd or the like since we need to detect errors. Hmm, I think you should be able to. gdb_run_cmd explicitly does not consume the prompt (using -notransfer) exactly for these cases. # N.B. This function does not wait for gdb to return to the prompt, # that is the caller's responsibility. proc gdb_run_cmd {args} { So we should be able to do: gdb_run_cmd gdb_test_multiple "" "restarting inferior" { ... > +gdb_test_multiple start "restarting inferior" { > + -re "The program .* has been started already.*y or n. $" { > + send_gdb "y\n" > + exp_continue > + } > + -re "does not support \"run\"" { > + fail "restarting inferior" > + } > + -re "Starting program: \[^\r\n\]*" { > + pass "restarting inferior" > + } You've removed the -notransfer, but any reason you didn't add the $gdb_prompt matching? -- Pedro Alves