diff options
author | qiyao <qiyao> | 2013-06-20 00:39:10 +0000 |
---|---|---|
committer | qiyao <qiyao> | 2013-06-20 00:39:10 +0000 |
commit | 63a1873ab1963c9f60c495a297711aebb538b15c (patch) | |
tree | 4c699294f7ecc6ca3e842268d7caa47b87b55057 /gdb/testsuite/gdb.trace/mi-trace-unavailable.exp | |
parent | 7980062fe95e0138ef29beb5e496885f071a8b38 (diff) | |
download | gdb-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.exp | 36 |
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 |