gdb/testsuite/
* gdb.trace/strace.exp (strace_trace_on_same_addr): New. (strace_trace_on_diff_addr): New. * gdb.trace/strace.c: (main): Add two local variables.
This commit is contained in:
parent
f72429c5cc
commit
3c2d6aff67
|
@ -1,3 +1,9 @@
|
|||
2012-01-03 Yao Qi <yao@codesourcery.com>
|
||||
|
||||
* gdb.trace/strace.exp (strace_trace_on_same_addr): New.
|
||||
(strace_trace_on_diff_addr): New.
|
||||
* gdb.trace/strace.c: (main): Add two local variables.
|
||||
|
||||
2011-01-02 Ulrich Weigand <uweigand@de.ibm.com>
|
||||
|
||||
* gdb.cell/fork.exp: Delete breakpoints after reaching main.
|
||||
|
|
|
@ -24,6 +24,11 @@ end (void)
|
|||
int
|
||||
main (void)
|
||||
{
|
||||
/* Some code to make sure that breakpoints on `main' and `ust/bar' marker
|
||||
are set at different addresses. */
|
||||
int a = 0;
|
||||
int b = a;
|
||||
|
||||
trace_mark(ust, bar, "str %s", "FOOBAZ");
|
||||
trace_mark(ust, bar2, "number1 %d number2 %d", 53, 9800);
|
||||
|
||||
|
|
|
@ -114,5 +114,165 @@ proc strace_probe_marker { } {
|
|||
set pf_prefix $old_pf_prefix
|
||||
}
|
||||
|
||||
proc strace_trace_on_same_addr { type } {
|
||||
global executable
|
||||
global pf_prefix
|
||||
global expect_out
|
||||
global gdb_prompt
|
||||
global hex
|
||||
|
||||
set old_pf_prefix $pf_prefix
|
||||
lappend pf_prefix "trace_same_addr" "$type"
|
||||
|
||||
# Restart with a fresh gdb.
|
||||
clean_restart $executable
|
||||
if ![runto_main] {
|
||||
fail "Can't run to main"
|
||||
set pf_prefix $old_pf_prefix
|
||||
return -1
|
||||
}
|
||||
|
||||
set marker_bar_addr ""
|
||||
set marker_bar2_addr ""
|
||||
|
||||
# List the markers in program. They should be disabled.
|
||||
gdb_test_multiple "info static-tracepoint-markers" "info static-tracepoint-markers 1" {
|
||||
-re ".*ust/bar\[\t \]+n.*${gdb_prompt} $" {
|
||||
set ignore ""
|
||||
|
||||
regexp "ust/bar\[\t \]+n\[\t \]+($hex) .*ust/bar2\[\t \]+n\[\t \]+($hex) " \
|
||||
"$expect_out(0,string)" ignore marker_bar_addr marker_bar2_addr
|
||||
|
||||
pass "info static-tracepoint-markers 1"
|
||||
}
|
||||
-re ".*${gdb_prompt} $" {
|
||||
fail "info static-tracepoint-markers 1"
|
||||
}
|
||||
}
|
||||
|
||||
gdb_test "strace -m ust/bar" "Static tracepoint \[0-9\]+ at ${hex}: file.*"
|
||||
gdb_test "strace -m ust/bar2" "Static tracepoint \[0-9\]+ at ${hex}: file.*"
|
||||
# Two trace markers should be enabled.
|
||||
gdb_test "info static-tracepoint-markers" \
|
||||
"ust/bar\[\t \]+y\[\t \]+$hex .*ust/bar2\[\t \]+y\[\t \]+$hex.*" \
|
||||
"info static-tracepoint-markers 2"
|
||||
|
||||
# Set breapoints or tracepoints.
|
||||
set test "${type} on marker bar"
|
||||
gdb_test_multiple "${type} *${marker_bar_addr}" $test {
|
||||
-re "\(Fast trace|Trace|Break\)point \[0-9\]+ at ${hex}: file.*\r\n$gdb_prompt $" {
|
||||
pass $test
|
||||
}
|
||||
-re ".*\r\n$gdb_prompt $" {
|
||||
if [string equal $type "ftrace"] {
|
||||
# The instruction may be not long enough to set a fast tracepoint.
|
||||
# Skip the rest of this test.
|
||||
return -1;
|
||||
} else {
|
||||
fail $test
|
||||
}
|
||||
}
|
||||
}
|
||||
set test "${type} on marker bar2"
|
||||
gdb_test_multiple "${type} *${marker_bar2_addr}" $test {
|
||||
-re "\(Fast trace|Trace|Break\)point \[0-9\]+ at ${hex}: file.*" {
|
||||
pass $test
|
||||
}
|
||||
-re ".*\r\n$gdb_prompt $" {
|
||||
if [string equal $type "ftrace"] {
|
||||
# The instruction may be not long enough to set a fast tracepoint.
|
||||
# Skip the rest of this test.
|
||||
return -1;
|
||||
} else {
|
||||
fail $test
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
gdb_test "break end" "Breakpoint \[0-9\]+ at.*"
|
||||
|
||||
if [string equal $type "break"] {
|
||||
gdb_test "continue" "Continuing\\.\[ \r\n\]+Breakpoint.*" "continue to bar"
|
||||
gdb_test "continue" "Continuing\\.\[ \r\n\]+Breakpoint.*" "continue to bar2"
|
||||
gdb_test "continue" "Continuing\\.\[ \r\n\]+Breakpoint.*" "continue to end"
|
||||
} else {
|
||||
|
||||
gdb_test_no_output "tstart"
|
||||
gdb_test "continue" "Continuing\\.\[ \r\n\]+Breakpoint.*" "continue to end"
|
||||
gdb_test_no_output "tstop"
|
||||
|
||||
gdb_test "tfind" "Found trace frame 0, tracepoint .*" "tfind frame 0"
|
||||
gdb_test "tfind" "Found trace frame 1, tracepoint .*" "tfind frame 1"
|
||||
gdb_test "tfind" "Found trace frame 2, tracepoint .*" "tfind frame 2"
|
||||
gdb_test "tfind" "Found trace frame 3, tracepoint .*" "tfind frame 3"
|
||||
gdb_test "tfind" "Target failed to find requested trace frame\\..*"
|
||||
}
|
||||
set pf_prefix $old_pf_prefix
|
||||
}
|
||||
|
||||
proc strace_trace_on_diff_addr { } {
|
||||
global executable
|
||||
global pf_prefix
|
||||
global expect_out
|
||||
global gdb_prompt
|
||||
global hex
|
||||
|
||||
set old_pf_prefix $pf_prefix
|
||||
lappend pf_prefix "trace_diff_addr"
|
||||
|
||||
# Restart with a fresh gdb.
|
||||
clean_restart $executable
|
||||
if ![runto_main] {
|
||||
fail "Can't run to main"
|
||||
set pf_prefix $old_pf_prefix
|
||||
return -1
|
||||
}
|
||||
|
||||
set marker_bar_addr ""
|
||||
set marker_bar2_addr ""
|
||||
|
||||
# List the markers in program. They should be disabled.
|
||||
gdb_test_multiple "info static-tracepoint-markers" "info static-tracepoint-markers 1" {
|
||||
-re ".*ust/bar\[\t \]+n.*${gdb_prompt} $" {
|
||||
set ignore ""
|
||||
|
||||
regexp "ust/bar\[\t \]+n\[\t \]+($hex) .*ust/bar2\[\t \]+n\[\t \]+($hex) " \
|
||||
"$expect_out(0,string)" ignore marker_bar_addr marker_bar2_addr
|
||||
|
||||
pass "info static-tracepoint-markers 1"
|
||||
}
|
||||
-re ".*${gdb_prompt} $" {
|
||||
fail "info static-tracepoint-markers 1"
|
||||
}
|
||||
}
|
||||
|
||||
gdb_test "strace -m ust/bar" "Static tracepoint \[0-9\]+ at ${hex}: file.*"
|
||||
|
||||
gdb_test "info static-tracepoint-markers" \
|
||||
"ust/bar\[\t \]+y\[\t \]+$hex .*ust/bar2\[\t \]+n\[\t \]+$hex.*" \
|
||||
"info static-tracepoint-markers 2"
|
||||
|
||||
|
||||
# Set common tracepoint.
|
||||
gdb_test "trace *${marker_bar2_addr}" "Tracepoint \[0-9\]+ at ${hex}: file.*"
|
||||
|
||||
gdb_test "break end" "Breakpoint \[0-9\]+ at.*"
|
||||
|
||||
gdb_test_no_output "tstart"
|
||||
gdb_test "continue" "Continuing\\.\[ \r\n\]+Breakpoint.*" "continue to end"
|
||||
gdb_test_no_output "tstop"
|
||||
|
||||
gdb_test "tfind" "Found trace frame 0, tracepoint .*" "tfind frame 0"
|
||||
gdb_test "tfind" "Found trace frame 1, tracepoint .*" "tfind frame 1"
|
||||
gdb_test "tfind" "Target failed to find requested trace frame\\..*"
|
||||
|
||||
set pf_prefix $old_pf_prefix
|
||||
}
|
||||
|
||||
strace_info_marker
|
||||
strace_probe_marker
|
||||
|
||||
strace_trace_on_same_addr "trace"
|
||||
strace_trace_on_same_addr "ftrace"
|
||||
strace_trace_on_same_addr "break"
|
||||
strace_trace_on_diff_addr
|
||||
|
|
Loading…
Reference in New Issue