From patchwork Fri Jul 11 18:10:24 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 2040 Received: (qmail 18168 invoked by alias); 11 Jul 2014 18:10:34 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 18123 invoked by uid 89); 11 Jul 2014 18:10:30 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.1 required=5.0 tests=AWL, BAYES_00, RP_MATCHES_RCVD, SPF_HELO_PASS, SPF_PASS 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, 11 Jul 2014 18:10:27 +0000 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s6BIAQSo025795 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 11 Jul 2014 14:10:26 -0400 Received: from barimba (ovpn-113-95.phx2.redhat.com [10.3.113.95]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s6BIAOCS011652 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=NO); Fri, 11 Jul 2014 14:10:25 -0400 From: Tom Tromey To: Pedro Alves 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> <53B6BCFF.90703@redhat.com> <87r41xi3v2.fsf@fleche.redhat.com> <53BBB93B.9060207@redhat.com> <871ttr7qn7.fsf@fleche.redhat.com> <53C0276C.4030508@redhat.com> Date: Fri, 11 Jul 2014 12:10:24 -0600 In-Reply-To: <53C0276C.4030508@redhat.com> (Pedro Alves's message of "Fri, 11 Jul 2014 19:05:32 +0100") Message-ID: <877g3j6a27.fsf@fleche.redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 >> The use_gdb_stub check is there so that we skip the test on target >> remote, which I think shouldn't be expected to work, as you can't re-run >> there. But I think I must be missing something. Pedro> It was explained in the sentence just below: Ok. Somehow I didn't make this connection. Pedro> In general, if we can write a test in a way that runs against Pedro> any target, it's best to not restrict it, even if what is Pedro> tested against some target board isn't exactly the bug the Pedro> test was written for, as it gives us wider coverage. Fully agreed. New patch appended. Tom 2014-07-11 Tom Tromey * target.c (target_require_runnable): Also check record_stratum. Update comment. 2014-07-11 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 c9c5e4b..07d029a 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -2425,10 +2425,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..995577e --- /dev/null +++ b/gdb/testsuite/gdb.reverse/rerun-prec.exp @@ -0,0 +1,35 @@ +# 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 +} + +# The bug is a regression in the sequence "run; record; run". +runto main +gdb_test_no_output "record" "Turn on process record" + +gdb_run_cmd +gdb_test_multiple "" "restarting inferior" { + -re "Breakpoint .*${gdb_prompt} " { + pass "restarting inferior" + } +}