Index: gdb/testsuite/gdb.trace/disconnected-tracing.exp |
diff --git a/gdb/testsuite/gdb.trace/disconnected-tracing.exp b/gdb/testsuite/gdb.trace/disconnected-tracing.exp |
index 79194f1b555c50662e8252a90d6663999513d0a6..2f443243fb4729b37adb7acde5998dbacf16be42 100644 |
--- a/gdb/testsuite/gdb.trace/disconnected-tracing.exp |
+++ b/gdb/testsuite/gdb.trace/disconnected-tracing.exp |
@@ -1,4 +1,4 @@ |
-# Copyright 2012 Free Software Foundation, Inc. |
+# Copyright 2012-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 @@ |
# Test of disconnected-tracing. |
-load_lib "trace-support.exp"; |
+load_lib "trace-support.exp" |
standard_testfile |
set executable $testfile |
@@ -40,35 +40,113 @@ if ![runto_main] { |
if ![gdb_target_supports_trace] { |
unsupported "target does not support trace" |
- return -1; |
+ return -1 |
} |
-delete_breakpoints |
-gdb_test_no_output "set confirm off" |
-gdb_test_no_output "set disconnected-tracing on" |
-gdb_test "trace main" ".*" |
-gdb_test_no_output "tstart" |
+# Disconnect in tracing. |
+ |
+proc disconnected_tracing { } { |
+ with_test_prefix "trace" { |
+ global executable |
+ global decimal |
+ global srcfile |
+ |
+ # Start with a fresh gdb. |
+ clean_restart ${executable} |
+ if ![runto_main] { |
+ fail "Can't run to main" |
+ return -1 |
+ } |
+ |
+ gdb_test_no_output "set confirm off" |
+ gdb_test_no_output "set disconnected-tracing on" |
+ gdb_test "trace start" ".*" |
+ gdb_trace_setactions "collect on tracepoint 2" "2" \ |
+ "collect foo" "^$" |
+ gdb_test "break end" "Breakpoint ${decimal} at .*" |
+ |
+ gdb_test_no_output "tstart" |
+ |
+ gdb_test "continue" "Continuing\\.\[ \r\n\]+Breakpoint.*" |
+ gdb_test_no_output "tstop" |
+ |
+ gdb_test "info tracepoints" ".*in start at.*" \ |
+ "first info tracepoints" |
+ |
+ gdb_test "disconnect" "Ending remote debugging\\." "first disconnect" |
+ if { [gdb_reconnect] == 0 } { |
+ pass "first reconnect after unload" |
+ } else { |
+ fail "first reconnect after unload" |
+ return 0 |
+ } |
+ gdb_test "info tracepoints" ".*in start at.*" \ |
+ "second info tracepoints" |
-gdb_test "info tracepoints" ".*in main at.*" "first info tracepoints" |
+ delete_breakpoints |
+ gdb_test "info tracepoints" ".*No tracepoints..*" \ |
+ "third info tracepoints" |
-gdb_test "disconnect" "Ending remote debugging\\." "first disconnect" |
-if { [gdb_reconnect] == 0 } { |
- pass "first reconnect after unload" |
-} else { |
- fail "first reconnect after unload" |
- return 0 |
+ gdb_test "disconnect" "Ending remote debugging\\." "second disconnect" |
+ if { [gdb_reconnect] == 0 } { |
+ pass "second reconnect after unload" |
+ } else { |
+ fail "second reconnect after unload" |
+ return 0 |
+ } |
+ gdb_test "tstatus" |
+ gdb_test "info tracepoints" \ |
+ "Num Type\[ \]+Disp Enb Address\[ \]+What.* |
+\[0-9\]+\[\t \]+tracepoint keep y.* in start at .*$srcfile:\[0-9\]+. |
+\[\t \]+tracepoint already hit 1 time. |
+\[\t \]+trace buffer usage ${decimal} bytes. |
+\[\t \]+collect foo.*" \ |
+ "fourth info tracepoints" |
+ } |
} |
-gdb_test "info tracepoints" ".*in main at.*" "second info tracepoints" |
-delete_breakpoints |
-gdb_test "info tracepoints" ".*No tracepoints..*" "third info tracepoints" |
+disconnected_tracing |
-gdb_test "disconnect" "Ending remote debugging\\." "second disconnect" |
-if { [gdb_reconnect] == 0 } { |
- pass "second reconnect after unload" |
-} else { |
- fail "second reconnect after unload" |
- return 0 |
+# Disconnected in tfind |
+ |
+proc disconnected_tfind { } { |
+ with_test_prefix "tfind" { |
+ global executable |
+ global decimal |
+ |
+ # Start with a fresh gdb. |
+ clean_restart ${executable} |
+ if ![runto_main] { |
+ fail "Can't run to main" |
+ return -1 |
+ } |
+ |
+ gdb_test_no_output "set confirm off" |
+ gdb_test_no_output "set disconnected-tracing on" |
+ gdb_test "trace start" ".*" |
+ gdb_test_no_output "tstart" |
+ |
+ gdb_test "break end" "Breakpoint ${decimal} at .*" |
+ gdb_test "continue" "Continuing\\.\[ \r\n\]+Breakpoint.*" |
+ gdb_test_no_output "tstop" |
+ |
+ gdb_test "tfind" "Found trace frame 0, tracepoint .*" "tfind frame 0" |
+ gdb_test "p \$trace_frame" ".*\\\$${decimal} = 0.*" \ |
+ "p \$trace_frame before disconnected" |
+ gdb_test "p \$tracepoint" ".*\\\$${decimal} = 2.*" \ |
+ "p \$tracepoint before disconnected" |
+ |
+ gdb_test "disconnect" "Ending remote debugging\\." "first disconnect" |
+ |
+ gdb_test "p \$trace_frame" ".*\\\$${decimal} = -1.*" |
+ gdb_test "p \$tracepoint" ".*\\\$${decimal} = -1.*" |
+ gdb_test "p \$trace_line" ".*\\\$${decimal} = -1.*" |
+ gdb_test "p \$trace_file" ".*\\\$${decimal} = void.*" |
+ gdb_test "p \$trace_func" ".*\\\$${decimal} = void.*" |
+ } |
} |
-gdb_test "info tracepoints" ".*in main at.*" "fourth info tracepoints" |
+disconnected_tfind |
+ |
+# Reconnect for a clean gdbserver shutdown. |
+gdb_reconnect |