diff options
author | Yao Qi <yao@codesourcery.com> | 2013-06-07 00:29:19 +0000 |
---|---|---|
committer | Yao Qi <yao@codesourcery.com> | 2013-06-07 00:29:19 +0000 |
commit | 8cb5cc78eb33afcccfc5ce623273e07336c0c049 (patch) | |
tree | 935270921a2c74f0dedafc48ddeac087b5496afd /gdb/testsuite/gdb.trace/mi-trace-unavailable.exp | |
parent | aef525cb15cdf95759c015cf237d6337407aa47a (diff) | |
download | gdb-8cb5cc78eb33afcccfc5ce623273e07336c0c049.zip gdb-8cb5cc78eb33afcccfc5ce623273e07336c0c049.tar.gz gdb-8cb5cc78eb33afcccfc5ce623273e07336c0c049.tar.bz2 |
gdb/testsuite/
* gdb.trace/mi-trace-unavailable.exp: New.
* gdb.trace/trace-unavailable.c: New.
Diffstat (limited to 'gdb/testsuite/gdb.trace/mi-trace-unavailable.exp')
-rw-r--r-- | gdb/testsuite/gdb.trace/mi-trace-unavailable.exp | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.trace/mi-trace-unavailable.exp b/gdb/testsuite/gdb.trace/mi-trace-unavailable.exp new file mode 100644 index 0000000..3098f9a --- /dev/null +++ b/gdb/testsuite/gdb.trace/mi-trace-unavailable.exp @@ -0,0 +1,134 @@ +# Copyright 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 +# 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 + +standard_testfile trace-unavailable.c + +if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} {debug}] } { + return -1 +} + +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 + +load_lib mi-support.exp +set MIFLAGS "-i=mi" + +if [mi_gdb_start] { + return +} +mi_run_to_main + +mi_gdb_test "-break-insert marker" \ + "\\^done,bkpt=\{number=\"${decimal}\",type=\"breakpoint\".*\"\}" \ + "insert tracepoint on marker" +mi_gdb_test "-break-insert -a bar" \ + "\\^done,bkpt=\{number=\"${decimal}\",type=\"tracepoint\".*\"\}" \ + "insert tracepoint on bar" + +# Define an action. +mi_gdb_test "-break-commands 3 \"collect array\" \"collect j\" \"end\" " \ + {\^done} "set action" + +mi_gdb_test "-trace-start" {.*\^done} "trace start" +mi_send_resuming_command "exec-continue" "continuing to marker" +mi_expect_stop \ + "breakpoint-hit" "marker" ".*" ".*" ".*" {"" "disp=\"keep\""} \ + "stop at marker" +mi_gdb_test "-trace-stop" {.*} "trace stop" + +# Save trace frames to tfile. +set tracefile [standard_output_file ${testfile}] +mi_gdb_test "-trace-save ${tracefile}.tf" ".*\\^done" \ + "save tfile trace file" +# Save trace frames to ctf. +mi_gdb_test "-trace-save -ctf ${tracefile}.ctf" ".*\\^done" \ + "save ctf trace file" + +mi_gdb_test "-gdb-set print entry-values no" {\^done} \ + "-gdb-set print entry-values no" + +proc test_trace_unavailable { data_source } { + global decimal + + with_test_prefix "$data_source" { + + # Test MI commands '-stack-list-locals', '-stack-list-arguments', + # and '-stack-list-variables'. + mi_gdb_test "-trace-find frame-number 0" \ + ".*\\^done,found=\"1\",tracepoint=\"${decimal}\",traceframe=\"0\",frame=\{.*" \ + "-trace-find frame-number 0" + + # Test MI command '-stack-list-locals'. + mi_gdb_test "-stack-list-locals --simple-values" \ + ".*\\^done,locals=\\\[\{name=\"array\",type=\"unsigned char \\\[2\\\]\"\},\{name=\"i\",type=\"int\",value=\"<unavailable>\"\}\\\]" \ + "-stack-list-locals --simple-values" + + # Test MI command '-stack-list-arguments'. + mi_gdb_test "-stack-list-arguments --simple-values" \ + ".*\\^done,stack-args=\\\[frame=\{level=\"0\",args=\\\[\{name=\"j\",type=\"int\",value=\"4\"\},\{name=\"s\",type=\"char \\\*\",value=\"<unavailable>\"\}\\\]\},.*\}.*" \ + "-stack-list-arguments --simple-values" + + # Test MI command '-stack-list-variables'. + mi_gdb_test "-stack-list-variables --simple-values" \ + ".*\\^done,variables=\\\[\{name=\"j\",arg=\"1\",type=\"int\",value=\"4\"\},\{name=\"s\",arg=\"1\",type=\"char \\\*\",value=\"<unavailable>\"\},\{name=\"array\",type=\"unsigned char \\\[2\\\]\"\},\{name=\"i\",type=\"int\",value=\"<unavailable>\"\}\\\]" \ + "-stack-list-variables --simple-values" + + # Don't issue command '-trace-find none' to return from + # tfind mode (examining trace frames) on purpose, in order + # to test that GDB is able to clear its tracing-related local state + # in the next -target-select. + # mi_gdb_test "-trace-find none" ".*\\^done,found=\"0\".*" "-trace-find none" + } +} + +test_trace_unavailable "live" + +# Change target to ctf if GDB supports it. +set msg "-target-select ctf" +send_gdb "-target-select ctf ${tracefile}.ctf\n" +gdb_expect { + -re ".*\\^connected.*${mi_gdb_prompt}$" { + # GDB supports ctf, do the test. + test_trace_unavailable "ctf" + } + -re ".*\\^error,msg=\"Undefined target command.*${mi_gdb_prompt}$" { + # GDB doesn't support ctf, skip the test. + unsupported "gdb does not support ctf target" + } + -re ".*$mi_gdb_prompt$" { + fail "$msg" + } + timeout { + fail "$msg (timeout)" + } +} + +# Change target to tfile. +mi_gdb_test "-target-select tfile ${tracefile}.tf" ".*\\^connected.*" \ + "-target-select tfile" +test_trace_unavailable "tfile" + +mi_gdb_exit |