diff options
author | Wei-cheng Wang <cole945@gmail.com> | 2015-09-16 16:20:51 +0100 |
---|---|---|
committer | Yao Qi <yao.qi@linaro.org> | 2015-09-16 17:17:50 +0100 |
commit | d78908cff50f281dab6390646fb1b7c58236d83e (patch) | |
tree | ec0632444f5315d915af22b6716f357576fd9413 /gdb/testsuite | |
parent | 1ed415e2b9b985aac087c35949d0e1e489ab496d (diff) | |
download | gdb-d78908cff50f281dab6390646fb1b7c58236d83e.zip gdb-d78908cff50f281dab6390646fb1b7c58236d83e.tar.gz gdb-d78908cff50f281dab6390646fb1b7c58236d83e.tar.bz2 |
Fix argument to compiled_cond, and add cases for compiled-condition.
This patch fixes the argument passed to compiled_cond. It should be
regs buffer instead of tracepoint_hit_ctx. Test case is added as
well for testing compiled-cond.
gdb/gdbserver/ChangeLog
2015-09-16 Wei-cheng Wang <cole945@gmail.com>
* tracepoint.c (eval_result_type): Change prototype.
(condition_true_at_tracepoint): Fix argument to compiled_cond.
gdb/testsuite/ChangeLog
2015-09-16 Wei-cheng Wang <cole945@gmail.com>
* gdb.trace/ftrace.exp: (test_ftrace_condition) New function
for testing bytecode compilation.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.trace/ftrace.exp | 64 |
2 files changed, 69 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 2e9a605..a0ac2ca 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-09-16 Wei-cheng Wang <cole945@gmail.com> + + * gdb.trace/ftrace.exp: (test_ftrace_condition) New function + for testing bytecode compilation. + 2015-09-16 Pedro Alves <palves@redhat.com> Sandra Loosemore <sandra@codesourcery.com> diff --git a/gdb/testsuite/gdb.trace/ftrace.exp b/gdb/testsuite/gdb.trace/ftrace.exp index f2d8002..a8eb515 100644 --- a/gdb/testsuite/gdb.trace/ftrace.exp +++ b/gdb/testsuite/gdb.trace/ftrace.exp @@ -178,6 +178,42 @@ proc test_fast_tracepoints {} { } } +# Test compiled-condition +# CONDEXP is the condition expression to be compiled. +# VAR is the variable to be collected for testing. +# LIST is a list of expected values of VAR should be collected +# based on the CONDEXP. +proc test_ftrace_condition { condexp var list } \ +{ with_test_prefix "ond $condexp" \ +{ + global executable + global hex + + clean_restart ${executable} + if ![runto_main] { + fail "Can't run to main to check for trace support" + return -1 + } + + gdb_test "break end" ".*" "" + gdb_test "tvariable \$tsv = 0" + gdb_test "ftrace set_point if $condexp" "Fast tracepoint .*" + gdb_trace_setactions "set action for tracepoint .*" "" \ + "collect $var" "^$" + + gdb_test_no_output "tstart" "" + gdb_test "continue" "Continuing\\.\[ \r\n\]+Breakpoint.*" "" + gdb_test_no_output "tstop" "" + + set i 0 + foreach expval $list { + gdb_test "tfind" "Found trace frame $i, tracepoint .*" "tfind frame $i" + gdb_test "print $var" "\\$\[0-9\]+ = $expval\[\r\n\]" "expect $expval" + set i [expr $i + 1] + } + gdb_test "tfind" "Target failed to find requested trace frame\." +}} + gdb_reinitialize_dir $srcdir/$subdir if { [gdb_test "info sharedlibrary" ".*${libipa}.*" "IPA loaded"] != 0 } { @@ -186,3 +222,31 @@ if { [gdb_test "info sharedlibrary" ".*${libipa}.*" "IPA loaded"] != 0 } { } test_fast_tracepoints + +# Test conditional goto and simple expression. +test_ftrace_condition "globvar > 7" "globvar" { 8 9 10 } +test_ftrace_condition "globvar < 4" "globvar" { 1 2 3 } +test_ftrace_condition "globvar >= 7" "globvar" { 7 8 9 10 } +test_ftrace_condition "globvar <= 4" "globvar" { 1 2 3 4 } +test_ftrace_condition "globvar == 5" "globvar" { 5 } +test_ftrace_condition "globvar != 5" "globvar" { 1 2 3 4 6 7 8 9 10 } +test_ftrace_condition "globvar > 3 && globvar < 7" "globvar" { 4 5 6 } +test_ftrace_condition "globvar < 3 || globvar > 7" "globvar" { 1 2 8 9 10 } +test_ftrace_condition "(globvar << 2) + 1 == 29" "globvar" { 7 } +test_ftrace_condition "(globvar >> 2) == 2" "globvar" { 8 9 10 } + +# Test emit_call by accessing trace state variables. +test_ftrace_condition "(\$tsv = \$tsv + 2) > 10" "globvar" { 6 7 8 9 10 } + +# This expression is used for testing emit_reg. +if [is_amd64_regs_target] { + set arg0exp "\$rdi" +} elseif [is_x86_like_target] { + set arg0exp "*(int *) (\$ebp + 8)" +} else { + set arg0exp "" +} + +if { "$arg0exp" != "" } { + test_ftrace_condition "($arg0exp > 500)" "globvar" { 6 7 8 9 10 } +} |