From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1258 invoked by alias); 13 Aug 2013 07:41:07 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 1177 invoked by uid 89); 13 Aug 2013 07:41:07 -0000 X-Spam-SWARE-Status: No, score=-4.6 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL autolearn=ham version=3.3.2 Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Tue, 13 Aug 2013 07:41:06 +0000 Received: from svr-orw-fem-01.mgc.mentorg.com ([147.34.98.93]) by relay1.mentorg.com with esmtp id 1V99E0-00072G-Iw from Yao_Qi@mentor.com for gdb-patches@sourceware.org; Tue, 13 Aug 2013 00:41:04 -0700 Received: from SVR-ORW-FEM-03.mgc.mentorg.com ([147.34.97.39]) by svr-orw-fem-01.mgc.mentorg.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.4675); Tue, 13 Aug 2013 00:41:04 -0700 Received: from qiyao.dyndns.org (147.34.91.1) by svr-orw-fem-03.mgc.mentorg.com (147.34.97.39) with Microsoft SMTP Server id 14.2.247.3; Tue, 13 Aug 2013 00:41:03 -0700 From: Yao Qi To: Subject: [RFC 2/2] Test entry values in trace frame Date: Tue, 13 Aug 2013 07:41:00 -0000 Message-ID: <1376379586-24150-3-git-send-email-yao@codesourcery.com> In-Reply-To: <1376379586-24150-1-git-send-email-yao@codesourcery.com> References: <1376379586-24150-1-git-send-email-yao@codesourcery.com> MIME-Version: 1.0 Content-Type: text/plain X-SW-Source: 2013-08/txt/msg00329.txt.bz2 Hi, This is the test for "entry-values" when GDB is examining trace frames. In test, tracepoint action collects arguments i and j and global variable global1. Variable global2 is not collected. The GNU_call_site_parameter is faked that i's entry value is from global1, j's entry value is from global2. When GDB is examining trace frame, value of i, j and i@entry should be available, but value of j@entry is not. However, when I run this test, I find j@entry is something like, j@entry= instead of unavailable. I don't emit a fail for it because I am not very sure it is expected to be "unavailable". I am fine to kfail it. I looked into a little, and looks reading entry value doesn't use value availability-aware API. It is not an easy fix to me. gdb/testsuite: 2013-08-13 Yao Qi * gdb.trace/entry-values.c (end): New (main): Call end. * gdb.trace/entry-values.exp: Load trace-support.exp. Set tracepoint and collect data. Test entry value is unavailable. --- gdb/testsuite/gdb.trace/entry-values.c | 5 +++ gdb/testsuite/gdb.trace/entry-values.exp | 49 ++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 0 deletions(-) diff --git a/gdb/testsuite/gdb.trace/entry-values.c b/gdb/testsuite/gdb.trace/entry-values.c index 3f98615..e287203 100644 --- a/gdb/testsuite/gdb.trace/entry-values.c +++ b/gdb/testsuite/gdb.trace/entry-values.c @@ -32,6 +32,10 @@ bar (int i) int global1 = 1; int global2 = 2; +static void +end (void) +{} + int main (void) { @@ -41,5 +45,6 @@ main (void) global2++; ret = bar (0); + end (); return ret; } diff --git a/gdb/testsuite/gdb.trace/entry-values.exp b/gdb/testsuite/gdb.trace/entry-values.exp index ba95e4f..bf946c3 100644 --- a/gdb/testsuite/gdb.trace/entry-values.exp +++ b/gdb/testsuite/gdb.trace/entry-values.exp @@ -221,3 +221,52 @@ gdb_test_sequence "bt" "bt" { "\[\r\n\]#1 .* bar \\(i=, i@entry=\\)" "\[\r\n\]#2 .* main \\(\\)" } + +# Restart GDB and trace. + +clean_restart $binfile + +load_lib "trace-support.exp" + +if ![runto_main] { + fail "Can't run to main to check for trace support" + return -1 +} + +if ![gdb_target_supports_trace] { + unsupported "target does not support trace" + return -1 +} + +gdb_test "trace foo" "Tracepoint $decimal at .*" + +if [is_amd64_regs_target] { + set spreg "\$rsp" +} elseif [is_x86_like_target] { + set spreg "\$esp" +} else { + set spreg "\$sp" +} + +# Collect arguments i and j. Collect 'global1' which is entry value +# of argument i. Don't collect 'global2' to test the entry value of +# argument j. + +gdb_trace_setactions "set action for tracepoint 1" "" \ + "collect i, j, global1, \(\*\(void \*\*\) \($spreg\)\) @ 64" "^$" + +gdb_test_no_output "tstart" + +gdb_breakpoint "end" +gdb_continue_to_breakpoint "end" + +gdb_test_no_output "tstop" + +gdb_test "tfind" "Found trace frame 0, .*" "tfind start" + +# Since 'global2' is not collected, j@entry is expected to be 'unavailable', +# however, the current output is like: +# j@entry= +gdb_test "bt 1" "#0 .* foo \\(i=\[-\]?$decimal, i@entry=2, j=\[-\]?$decimal, j@entry=.*\\).*" + +gdb_test "tfind" "Target failed to find requested trace frame\..*" -- 1.7.7.6