diff options
author | Yao Qi <yao@codesourcery.com> | 2012-09-18 12:09:28 +0000 |
---|---|---|
committer | Yao Qi <yao@codesourcery.com> | 2012-09-18 12:09:28 +0000 |
commit | bb25a15c8fdacbdab231bba159894942cdfece2b (patch) | |
tree | a124eea8f88e821de7fefbb8c6beb1758f3dde6b /gdb/testsuite | |
parent | 201b4506b3d34c274cdc5ec5ffb8f6e43fc982a9 (diff) | |
download | gdb-bb25a15c8fdacbdab231bba159894942cdfece2b.zip gdb-bb25a15c8fdacbdab231bba159894942cdfece2b.tar.gz gdb-bb25a15c8fdacbdab231bba159894942cdfece2b.tar.bz2 |
gdb/doc:
* gdb.texinfo (GDB/MI Async Records): Document new MI
notifications '=tsv-created' and '=tsv-deleted'.
* observer.texi (GDB Observers): New observer tsv_created and
tsv_deleted.
gdb:
* mi/mi-interp.c: Declare mi_tsv_created and mi_tsv_deleted.
(mi_interpreter_init): Call observer_attach_tsv_created and
observer_attach_tsv_deleted.
(mi_tsv_created, mi_tsv_deleted): New.
* tracepoint.c (delete_trace_state_variable): Call
observer_notify_tsv_deleted.
(trace_variable_command): Call observer_notify_tsv_created.
(delete_trace_variable_command): Call
observer_notify_tsv_deleted.
(create_tsv_from_upload): Call observer_notify_tsv_created.
* NEWS: Mention it.
gdb/testsuite:
gdb.trace/mi-tsv-changed.exp: New.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/testsuite/gdb.trace/mi-tsv-changed.exp | 171 |
2 files changed, 175 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index cba29fb..21e048a 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,9 @@ 2012-09-18 Yao Qi <yao@codesourcery.com> + * gdb.trace/mi-tsv-changed.exp: New. + +2012-09-18 Yao Qi <yao@codesourcery.com> + * gdb.trace/mi-traceframe-changed.exp: New. 2012-09-17 Yao Qi <yao@codesourcery.com> diff --git a/gdb/testsuite/gdb.trace/mi-tsv-changed.exp b/gdb/testsuite/gdb.trace/mi-tsv-changed.exp new file mode 100644 index 0000000..411efad --- /dev/null +++ b/gdb/testsuite/gdb.trace/mi-tsv-changed.exp @@ -0,0 +1,171 @@ +# Copyright 2012 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/>. + +load_lib trace-support.exp +load_lib mi-support.exp + +standard_testfile actions.c +if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \ + executable {debug nowarnings}] != "" } { + untested mi-tsv-changed.exp + return -1 +} + +# Test notifications on creating and deleting TSV. + +proc test_create_delete_tsv { } {with_test_prefix "create delete" { + global binfile + global decimal + + if [mi_gdb_start] { + return + } + mi_gdb_load ${binfile} + + mi_gdb_test "tvariable \$tvar1" \ + ".*=tsv-created,name=\"tvar1\",value=\"0\"\\\\n.*\\^done" \ + "tvariable \$tvar1" + mi_gdb_test "tvariable \$tvar2 = 45" \ + ".*=tsv-created,name=\"tvar2\",value=\"45\"\\\\n.*\\^done" \ + "tvariable \$tvar2" + + mi_gdb_test "delete tvariable \$tvar2" \ + ".*=tsv-deleted,name=\"tvar2\"\\\\n.*\\^done" \ + "delete tvariable \$tvar2" + + mi_gdb_test "delete tvariable" \ + ".*=tsv-deleted\\\\n.*\\^done" \ + "delete all tvariables" + +}} + + +# Test when GDB connects to a disconnected stub, existing TSVs in +# remote stub can be uploaded to GDB, and GDB emits MI notification +# for new uploaded TSVs. + +proc test_upload_tsv { } { with_test_prefix "upload" { + + global gdbserver_reconnect_p + global gdb_prompt + global testfile + global decimal + + set gdbserver_reconnect_p 1 + if { [info proc gdb_reconnect] == "" } { + return 0 + } + + clean_restart $testfile + if ![runto_main] then { + fail "Can't run to main" + return 0 + } + + gdb_test "tvariable \$tvar1" \ + "Trace state variable \\\$tvar1 created, with initial value 0." \ + "Create a trace state variable" + + gdb_test "tvariable \$tvar2 = 45" \ + "Trace state variable \\\$tvar2 created, with initial value 45." \ + "Create a trace state variable with initial value" + # Define a tracepoint otherwise tracing cannot be started. + gdb_test "trace main" "Tracepoint $decimal at .*" + gdb_test_no_output "tstart" "start trace experiment" + + set test "disconnect" + gdb_test_multiple "disconnect" $test { + -re "Trace is running but will stop on detach; detach anyway\\? \\(y or n\\) $" { + pass $test + + set test "disconnected" + gdb_test_multiple "y" $test { + -re "$gdb_prompt $" { + pass "$test" + } + } + } + } + + gdb_exit + + if [mi_gdb_start] { + return + } + + global srcdir + global subdir + global binfile + + mi_gdb_reinitialize_dir $srcdir/$subdir + mi_gdb_load ${binfile} + + global gdbserver_protocol + global gdbserver_gdbport + + send_gdb "47-target-select $gdbserver_protocol $gdbserver_gdbport\n" + + global mi_gdb_prompt + set tsv1_created 0 + set tsv2_created 0 + gdb_expect { + -re "=tsv-created,name=\"tvar1\",value=\"0\"" { + set tsv1_created 1 + exp_continue + } + -re "=tsv-created,name=\"tvar2\",value=\"45\"" { + set tsv2_created 1 + exp_continue + } + -re ".*${mi_gdb_prompt}" { + + } + } + + if $tsv1_created { + pass "tsv1 created" + } else { + fail "tsv1 created" + } + if $tsv2_created { + pass "tsv2 created" + } else { + fail "tsv2 created" + } + + set gdbserver_reconnect_p 0 +}} + + test_create_delete_tsv + +# Test target supports tracepoints or not. + +clean_restart $testfile + +if ![runto_main] { + fail "Can't run to main to check for trace support" + return -1 +} + +if ![gdb_target_supports_trace] { + unsupported "Current target does not support trace" + return -1; +} + +gdb_exit + +test_upload_tsv + +return 0 |