public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [patch, testsuite]  static tracepoint on the same address with other tracepoints/breakpoints
@ 2011-12-20 16:40 Yao Qi
  2012-01-02 15:09 ` [ping]: " Yao Qi
  2012-01-02 16:41 ` Pedro Alves
  0 siblings, 2 replies; 3+ messages in thread
From: Yao Qi @ 2011-12-20 16:40 UTC (permalink / raw)
  To: gdb-patches

[-- Attachment #1: Type: text/plain, Size: 539 bytes --]

Hi,
This patch completes gdb.trace/strace.exp to cover the situation that
tracepoints or breakpoints are set at the same address with static
tracepoints.

This case reveals a bug on double collect of static tracepoint

  FAIL: gdb.trace/strace.exp: trace_same_addr trace tfind

I've posted a fix to this bug.

  [patch] Fix a double collect of static tracepoint
  http://sourceware.org/ml/gdb-patches/2011-12/msg00682.html

With this fix applied, no fails any more.

		=== gdb Summary ===

# of expected passes		62

-- 
Yao (齐尧)

[-- Attachment #2: 0002-strace-trace-on-the-same-different-address.patch --]
[-- Type: text/x-patch, Size: 6273 bytes --]


2011-12-20  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.
---
 gdb/testsuite/gdb.trace/strace.c   |    5 +
 gdb/testsuite/gdb.trace/strace.exp |  160 ++++++++++++++++++++++++++++++++++++
 2 files changed, 165 insertions(+), 0 deletions(-)

diff --git a/gdb/testsuite/gdb.trace/strace.c b/gdb/testsuite/gdb.trace/strace.c
index cec4c14..5e1e120 100644
--- a/gdb/testsuite/gdb.trace/strace.c
+++ b/gdb/testsuite/gdb.trace/strace.c
@@ -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);
 
diff --git a/gdb/testsuite/gdb.trace/strace.exp b/gdb/testsuite/gdb.trace/strace.exp
index 51a9f56..3992410 100644
--- a/gdb/testsuite/gdb.trace/strace.exp
+++ b/gdb/testsuite/gdb.trace/strace.exp
@@ -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
-- 
1.7.0.4


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [ping]: [patch, testsuite]  static tracepoint on the same address with other tracepoints/breakpoints
  2011-12-20 16:40 [patch, testsuite] static tracepoint on the same address with other tracepoints/breakpoints Yao Qi
@ 2012-01-02 15:09 ` Yao Qi
  2012-01-02 16:41 ` Pedro Alves
  1 sibling, 0 replies; 3+ messages in thread
From: Yao Qi @ 2012-01-02 15:09 UTC (permalink / raw)
  To: gdb-patches

On 12/21/2011 12:37 AM, Yao Qi wrote:
> 2011-12-20  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.

Ping.  http://sourceware.org/ml/gdb-patches/2011-12/msg00683.html

-- 
Yao (齐尧)

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [patch, testsuite]  static tracepoint on the same address with other tracepoints/breakpoints
  2011-12-20 16:40 [patch, testsuite] static tracepoint on the same address with other tracepoints/breakpoints Yao Qi
  2012-01-02 15:09 ` [ping]: " Yao Qi
@ 2012-01-02 16:41 ` Pedro Alves
  1 sibling, 0 replies; 3+ messages in thread
From: Pedro Alves @ 2012-01-02 16:41 UTC (permalink / raw)
  To: Yao Qi; +Cc: gdb-patches

On 12/20/2011 04:37 PM, Yao Qi wrote:
> Hi,
> This patch completes gdb.trace/strace.exp to cover the situation that
> tracepoints or breakpoints are set at the same address with static
> tracepoints.
>
> This case reveals a bug on double collect of static tracepoint
>
>    FAIL: gdb.trace/strace.exp: trace_same_addr trace tfind
>
> I've posted a fix to this bug.
>
>    [patch] Fix a double collect of static tracepoint
>    http://sourceware.org/ml/gdb-patches/2011-12/msg00682.html
>
> With this fix applied, no fails any more.
>
> 		=== gdb Summary ===
>
> # of expected passes		62
>

Okay, thanks.

-- 
Pedro Alves

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2012-01-02 16:41 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-12-20 16:40 [patch, testsuite] static tracepoint on the same address with other tracepoints/breakpoints Yao Qi
2012-01-02 15:09 ` [ping]: " Yao Qi
2012-01-02 16:41 ` Pedro Alves

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).