summaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.trace/mi-trace-unavailable.exp
diff options
context:
space:
mode:
authorqiyao <qiyao>2013-06-20 00:39:10 +0000
committerqiyao <qiyao>2013-06-20 00:39:10 +0000
commit63a1873ab1963c9f60c495a297711aebb538b15c (patch)
tree4c699294f7ecc6ca3e842268d7caa47b87b55057 /gdb/testsuite/gdb.trace/mi-trace-unavailable.exp
parent7980062fe95e0138ef29beb5e496885f071a8b38 (diff)
downloadgdb-63a1873ab1963c9f60c495a297711aebb538b15c.tar.gz
Teach -data-list-register-values to not include unavailable registers
This patch adds an option --skip-unavailable to MI command -data-list-register-values, so that unavailable registers are not displayed (on the context of traceframes). The old -data-list-register-values command behaves like -data-list-register-values x 0 8 ^done,register-values=[{number="0",value="<unavailable>"},{number="8",value="0x80483de"}] With this patch, an option --skip-unavailable is added, -data-list-register-values --skip-unavailable x 0 8 ^done,register-values=[{number="8",value="0x80483de"}] gdb: 2013-06-20 Pedro Alves <pedro@codesourcery.com> Yao Qi <yao@codesourcery.com> * NEWS: Mention the new option '--skip-unavailable' of command -data-list-register-values. * mi/mi-main.c (mi_cmd_data_list_register_values): Accept the --skip-unavailable option. Adjust to use output_register. (output_register): Add new 'skip_unavailable' parameter. Handle it. gdb/doc: 2013-06-20 Pedro Alves <pedro@codesourcery.com> * gdb.texinfo (GDB/MI Data Manipulation) <-data-list-register-values>: Document the --skip-unavailable option. gdb/testsuite: 2013-06-20 Yao Qi <yao@codesourcery.com> * gdb.trace/mi-trace-unavailable.exp: Set tracepoint on 'foo' and set an action. (test_trace_unavailable): Test command -data-list-register-values in the context of traceframe and with option --skip-unavailable. * gdb.trace/trace-unavailable.c (foo): New. (main): Call it. * gdb.mi/gdb2549.exp: Update matching pattern.
Diffstat (limited to 'gdb/testsuite/gdb.trace/mi-trace-unavailable.exp')
-rw-r--r--gdb/testsuite/gdb.trace/mi-trace-unavailable.exp36
1 files changed, 36 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.trace/mi-trace-unavailable.exp b/gdb/testsuite/gdb.trace/mi-trace-unavailable.exp
index 3098f9aa5fc..42f6e326c2e 100644
--- a/gdb/testsuite/gdb.trace/mi-trace-unavailable.exp
+++ b/gdb/testsuite/gdb.trace/mi-trace-unavailable.exp
@@ -52,6 +52,14 @@ mi_gdb_test "-break-insert -a bar" \
mi_gdb_test "-break-commands 3 \"collect array\" \"collect j\" \"end\" " \
{\^done} "set action"
+mi_gdb_test "-break-insert -a foo" \
+ "\\^done,bkpt=\{number=\"${decimal}\",type=\"tracepoint\".*\"\}" \
+ "insert tracepoint on foo"
+
+# Collect 'main' to make sure no registers are collected except PC.
+mi_gdb_test "-break-commands 4 \"collect main\" \"end\" " \
+ {\^done} "set action on tracepoint 4"
+
mi_gdb_test "-trace-start" {.*\^done} "trace start"
mi_send_resuming_command "exec-continue" "continuing to marker"
mi_expect_stop \
@@ -96,6 +104,34 @@ proc test_trace_unavailable { data_source } {
".*\\^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"
+ mi_gdb_test "-trace-find frame-number 1" \
+ ".*\\^done,found=\"1\",tracepoint=\"${decimal}\",traceframe=\"1\",frame=\{.*" \
+ "-trace-find frame-number 1"
+
+ set pcnum 0
+ if [is_amd64_regs_target] {
+ set pcnum 16
+ } elseif [is_x86_like_target] {
+ set pcnum 8
+ } else {
+ # Other ports support tracepoint should define the number
+ # of its own pc register.
+ }
+
+ if { $pcnum != 0 } {
+ global hex
+ # Test that register 0 and PC are displayed, and register
+ # 0 is unavailable.
+ mi_gdb_test "-data-list-register-values x 0 ${pcnum}" \
+ ".*\\^done,register-values=\\\[\{number=\"0\",value=\"<unavailable>\"\},\{number=\"${pcnum}\",value=\"${hex}\"\}\\\]" \
+ "-data-list-register-values x"
+
+ # Test that only available register PC is displayed.
+ mi_gdb_test "-data-list-register-values --skip-unavailable x 0 ${pcnum}" \
+ ".*\\^done,register-values=\\\[\{number=\"${pcnum}\",value=\"${hex}\"\}\\\]" \
+ "-data-list-register-values --skip-unavailable x"
+ }
+
# 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