Move trace conditions tests from ftrace.exp to trace-condition.exp

This patch moves conditional tests that were done in ftrace.exp to
trace-condition.exp.

Note that emit_ref is now tested by the anarg local variable there is no
need to test the register directly.

All emit calls have been tested using asserts before / after the move, to
ensure that the tests cover the same functions.

Note that these function were not covered before and are still not:
emit_gt_goto, emit_lt_goto, emit_pop, emit_unsigned_less.

gdb/testsuite/ChangeLog:

	* gdb.trace/ftrace.exp (test_ftrace_condition): Remove.
	Move condition tests...
	* gdb.trace/trace-condition.exp: Here.
This commit is contained in:
Antoine Tremblay 2016-05-30 11:24:44 -04:00
parent 7faeb45ae3
commit 0d33646690
3 changed files with 12 additions and 74 deletions

View File

@ -1,3 +1,9 @@
2016-05-30 Antoine Tremblay <antoine.tremblay@ericsson.com>
* gdb.trace/ftrace.exp (test_ftrace_condition): Remove.
Move condition tests...
* gdb.trace/trace-condition.exp: Here.
2016-05-30 Antoine Tremblay <antoine.tremblay@ericsson.com>
* gdb.trace/trace-condition.exp: Add counter-case tests.

View File

@ -174,43 +174,6 @@ 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 "cond $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\]+(Thread .* hit )?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" ".*${remote_libipa}.*" "IPA loaded"] != 0 } {
@ -219,40 +182,3 @@ if { [gdb_test "info sharedlibrary" ".*${remote_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)"
} elseif { [istarget "aarch64*-*-*"] } {
set arg0exp "\$x0"
} elseif [istarget "powerpc*-*-*"] {
set arg0exp "\$r3"
} elseif { [istarget "s390x-*-*"] } {
set arg0exp "\$r2"
} elseif { [istarget "s390-*-*"] } {
# On targets with 64-bit GPRs, avoid the high part.
set arg0exp "(\$r2 & 0xffffffff)"
} else {
set arg0exp ""
}
if { "$arg0exp" != "" } {
test_ftrace_condition "($arg0exp > 500)" "globvar" { 6 7 8 9 10 }
}

View File

@ -137,6 +137,12 @@ foreach trace_command { "trace" "ftrace" } {
test_tracepoints $trace_command "anarg == 100 && globvar == 1" 1 18955_x86_64_failure
# Test various operations to cover as many opcodes as possible.
test_tracepoints $trace_command "21 == 21" 10
test_tracepoints $trace_command "11 == 21" 0
test_tracepoints $trace_command "21 != 42" 10
test_tracepoints $trace_command "42 != 42" 0
test_tracepoints $trace_command "21 + 21 == 42" 10
test_tracepoints $trace_command "21 + 21 == 11" 0