Index: gdb/testsuite/gdb.btrace/enable.exp |
diff --git a/gdb/testsuite/gdb.btrace/enable.exp b/gdb/testsuite/gdb.btrace/enable.exp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2e23e41d1146f94016429ae397d1084b78232e89 |
--- /dev/null |
+++ b/gdb/testsuite/gdb.btrace/enable.exp |
@@ -0,0 +1,95 @@ |
+# This testcase is part of GDB, the GNU debugger. |
+# |
+# Copyright 2013 Free Software Foundation, Inc. |
+# |
+# Contributed by Intel Corp. <christian.himpel@intel.com> |
+# |
+# 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/>. |
+ |
+# check for btrace support |
+if { [skip_btrace_tests] } { return -1 } |
+ |
+# start fresh - without an executable |
+gdb_exit |
+gdb_start |
+ |
+# record cannot be stopped, if it was never active |
+gdb_test "record stop" "No record target is currently active\\..*" "record stop without target" |
+ |
+# btrace cannot be enabled without a running inferior |
+gdb_test "record btrace" "The program is not being run\\." "record btrace without running program" |
+ |
+# no function and no instruction history without btrace enabled |
+gdb_test "record function-call-history" "No record target is currently active\\..*" "record function-call-history without target" |
+gdb_test "record instruction-history" "No record target is currently active\\..*" "record instruction-history without target" |
+gdb_test "info record" "No record target is currently active\\." "info record without target" |
+ |
+# start inferior |
+standard_testfile |
+if [prepare_for_testing $testfile.exp $testfile {} {debug}] { |
+ return -1 |
+} |
+if ![runto_main] { |
+ return -1 |
+} |
+ |
+# enable btrace |
+gdb_test_no_output "record btrace" "record btrace" |
+gdb_test "record function-call-history" "No trace\\." "record function-call-history without trace" |
+gdb_test "record instruction-history" "No trace\\." "record instruction-history without trace" |
+ |
+# btrace cannot be enabled twice |
+gdb_test "record btrace" "The process is already being recorded\\." "record btrace the second time" |
+ |
+# full record cannot be activated as long as btrace is active |
+gdb_test "record full" "Process record target already running\\. Use \"record stop\" to stop record target first\\." "record full cannot be enabled" |
+ |
+# no trace recorded yet |
+gdb_test "info record" "Active record target: record-btrace\r\nRecorded 0 instructions in 0 functions for thread 1.*\\." "info record without trace" |
+ |
+# stop btrace record |
+gdb_test "record stop" "Process record is stopped and all execution logs are deleted\\." "record stop" |
+gdb_test "record stop" "No record target is currently active\\..*" "record stop the second time" |
+ |
+# enable btrace again |
+gdb_test_no_output "record btrace" "record btrace re-enable" |
+gdb_test "record btrace" "The process is already being recorded\\." "record btrace re-enable twice" |
+ |
+# continue to the end and make sure we don't die |
+gdb_test "continue" ".*Inferior.*exited.*" "continue to end" |
+ |
+# skip the rerun test when using gdbserver |
+# otherwise rerun twice, target should be automatically disabled |
+load_lib gdbserver-support.exp |
+if [skip_gdbserver_tests] { |
+ return 0 |
+} |
+clean_restart $testfile |
+if ![runto_main] { |
+ return -1 |
+} |
+if ![runto_main] { |
+ return -1 |
+} |
+ |
+# make sure record-btrace can be enabled after re-run |
+clean_restart $testfile |
+if ![runto_main] { |
+ return -1 |
+} |
+gdb_test_no_output "record btrace" |
+if ![runto_main] { |
+ return -1 |
+} |
+gdb_test_no_output "record btrace" "enable after re-run" |