Index: gdb/testsuite/gdb.trace/while-stepping.exp |
diff --git a/gdb/testsuite/gdb.trace/while-stepping.exp b/gdb/testsuite/gdb.trace/while-stepping.exp |
index 5d8e06660506a49c24b5585818fdcddb9826f821..3e605875a87c92e0482e45666eefe2e3b1facaa6 100644 |
--- a/gdb/testsuite/gdb.trace/while-stepping.exp |
+++ b/gdb/testsuite/gdb.trace/while-stepping.exp |
@@ -1,4 +1,4 @@ |
-# Copyright 1998, 2007-2012 Free Software Foundation, Inc. |
+# Copyright 1998-2013 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 |
@@ -15,7 +15,7 @@ |
# This file was written by Michael Snyder (msnyder@cygnus.com) |
-load_lib "trace-support.exp"; |
+load_lib "trace-support.exp" |
gdb_exit |
@@ -42,14 +42,15 @@ gdb_delete_tracepoints |
set trcpt1 [gdb_gettpnum gdb_c_test] |
if { $trcpt1 <= 0 } then { |
fail "Could not find gdb_c_test function" |
- return; |
+ return |
} |
# 5.12 basic while-stepping command (collect regs) |
gdb_test "info tracepoints" \ |
"Num Type\[ \]+Disp Enb Address\[ \]+What.* |
-\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+" \ |
+\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+. |
+\[\t \]+not installed on target." \ |
"5.12: set a tracepoint, stepcount is zero" |
set stepcount 12 |
@@ -70,7 +71,7 @@ gdb_test "info tracepoints" \ |
# [deferred to dynamic test section] |
proc while_stepping_bogus_arg { bogus msgstring } { |
- global gdb_prompt; |
+ global gdb_prompt |
gdb_trace_setactions "$msgstring" \ |
"" \ |
@@ -98,3 +99,73 @@ gdb_test "info tracepoints" \ |
.*end.*" \ |
"5.16: confirm actions, step without collecting anything" |
+gdb_test "break main" |
+gdb_run_cmd |
+gdb_test "" "Breakpoint .*" |
+if ![gdb_target_supports_trace] { |
+ unsupported "target does not support trace" |
+ return -1 |
+} |
+ |
+gdb_trace_setactions "set stepcount to $stepcount" \ |
+ "" \ |
+ "while-stepping $stepcount" "" \ |
+ "collect \$regs " "^$" \ |
+ "collect \$locals " "^$" \ |
+ "end" "" |
+ |
+proc check_tracepoint { data_source } { |
+ with_test_prefix "$data_source" { |
+ global srcfile |
+ global stepcount |
+ |
+ gdb_test "info tracepoints" \ |
+ "Num Type\[ \]+Disp Enb Address\[ \]+What.* |
+\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+. |
+\[\t \]+while-stepping $stepcount.* |
+\[\t \]+collect \\\$regs.* |
+\[\t \]+collect \\\$locals.* |
+\[\t \]+end.*" |
+ } |
+} |
+ |
+gdb_test_no_output "tstart" |
+check_tracepoint "live" |
+gdb_test_no_output "tstop" |
+set tracefile [standard_output_file ${testfile}] |
+gdb_test "tsave ${tracefile}.tf" \ |
+ "Trace data saved to file '${tracefile}.tf'\.\\r" \ |
+ "save tfile trace file" |
+gdb_test "tsave -ctf ${tracefile}.ctf" \ |
+ "Trace data saved to directory '${tracefile}.ctf'\.\\r" \ |
+ "save ctf trace file" |
+ |
+# Restart GDB and read the trace data in tfile target. |
+gdb_exit |
+gdb_start |
+gdb_reinitialize_dir $srcdir/$subdir |
+gdb_file_cmd $binfile |
+gdb_test "target tfile ${tracefile}.tf" ".*" \ |
+ "change to tfile target" |
+check_tracepoint "tfile" |
+ |
+# Try to read ctf data if GDB supports. |
+set gdb_can_read_ctf_data 0 |
+gdb_test_multiple "target ctf" "" { |
+ -re "Undefined target command: \"ctf\"\. Try \"help target\"\.\r\n$gdb_prompt $" { |
+ set gdb_can_read_ctf_data 0 |
+ } |
+ -re "No CTF directory specified.*\r\n$gdb_prompt $" { |
+ set gdb_can_read_ctf_data 1 |
+ } |
+} |
+ |
+if { $gdb_can_read_ctf_data } { |
+ gdb_exit |
+ gdb_start |
+ gdb_reinitialize_dir $srcdir/$subdir |
+ gdb_file_cmd $binfile |
+ gdb_test "target ctf ${tracefile}.ctf" ".*" \ |
+ "change to ctf target" |
+ check_tracepoint "ctf" |
+} |