diff options
author | Tom Tromey <tromey@redhat.com> | 2014-07-01 11:43:00 -0600 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2014-07-14 08:33:05 -0600 |
commit | 548740d6bdd115da2c9c17b194016c2c4c0a4c69 (patch) | |
tree | c6d07c4fc8f734c515bdd150d9b6e68d95c6c218 /gdb | |
parent | 0ed82684efcb5243b66f918552403ff4ec1d7ee1 (diff) | |
download | gdb-548740d6bdd115da2c9c17b194016c2c4c0a4c69.zip gdb-548740d6bdd115da2c9c17b194016c2c4c0a4c69.tar.gz gdb-548740d6bdd115da2c9c17b194016c2c4c0a4c69.tar.bz2 |
fix record "run" regression
This fixes the record "run" regression pointed out by Marc Khouzam:
https://sourceware.org/ml/gdb/2014-06/msg00096.html
The bug is that target_require_runnable must agree with the handling
of the "run" target, but currently it is out of sync. This patch
fixes the problem by changing target_require_runnable to also ignore
the record_stratum.
Built and regtested on x86-64 Fedora 20.
New test case included.
2014-07-14 Tom Tromey <tromey@redhat.com>
* target.c (target_require_runnable): Also check record_stratum.
Update comment.
2014-07-14 Tom Tromey <tromey@redhat.com>
* gdb.reverse/rerun-prec.c: New file.
* gdb.reverse/rerun-prec.exp: New file.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/target.c | 3 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.reverse/rerun-prec.c | 21 | ||||
-rw-r--r-- | gdb/testsuite/gdb.reverse/rerun-prec.exp | 35 |
5 files changed, 68 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 1ccacd3..c917718 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2014-07-14 Tom Tromey <tromey@redhat.com> + + * target.c (target_require_runnable): Also check record_stratum. + Update comment. + 2014-07-11 Yao Qi <yao@codesourcery.com> * arm-tdep.c (thumb_analyze_prologue): Break the loop if 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/ChangeLog b/gdb/testsuite/ChangeLog index 0652230..71987a7 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-07-14 Tom Tromey <tromey@redhat.com> + + * gdb.reverse/rerun-prec.c: New file. + * gdb.reverse/rerun-prec.exp: New file. + 2014-07-12 Maciej W. Rozycki <macro@mips.com> Maciej W. Rozycki <macro@codesourcery.com> 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 <http://www.gnu.org/licenses/>. */ + +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 <http://www.gnu.org/licenses/>. */ + +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" + } +} |