From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13869 invoked by alias); 11 Apr 2013 12:53:50 -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 13819 invoked by uid 89); 11 Apr 2013 12:53:49 -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.1 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; Thu, 11 Apr 2013 12:53:48 +0000 Received: from svr-orw-exc-10.mgc.mentorg.com ([147.34.98.58]) by relay1.mentorg.com with esmtp id 1UQH0d-0006Kv-4Z from Yao_Qi@mentor.com for gdb-patches@sourceware.org; Thu, 11 Apr 2013 05:53:47 -0700 Received: from SVR-ORW-FEM-03.mgc.mentorg.com ([147.34.97.39]) by SVR-ORW-EXC-10.mgc.mentorg.com with Microsoft SMTPSVC(6.0.3790.4675); Thu, 11 Apr 2013 05:53:47 -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.1.289.1; Thu, 11 Apr 2013 05:53:45 -0700 Message-ID: <5166B259.10704@codesourcery.com> Date: Thu, 11 Apr 2013 22:59:00 -0000 From: Yao Qi User-Agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130110 Thunderbird/17.0.2 MIME-Version: 1.0 To: Hui Zhu CC: gdb-patches ml Subject: Re: [PATCH] store trace default-collect to target [3/6] tfile References: <51665508.5050706@mentor.com> <5166558B.90201@mentor.com> In-Reply-To: <5166558B.90201@mentor.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-SW-Source: 2013-04/txt/msg00329.txt.bz2 On 04/11/2013 02:17 PM, Hui Zhu wrote: > /* This is the implementation of trace_file_write_ops method > + write_default_collect. */ > + > +static void > +ctf_write_default_collect (struct trace_file_writer *self, > + char *collect) > +{ > + /* It is not supported yet to write default collect > + into CTF trace data. */ > +} > + It is pity to see "default-collect" is not written to CTF in this patch. The patch below is about teaching GDB to write "default-collect" action in CTF and read "default-collect" action from CTF. Do you mind incorporating the patch below into your patch series, so that your series is more complete. -- Yao (齐尧) gdb: 2013-04-11 Yao Qi * ctf.c (CTF_EVENT_ID_DEFAULT_COLLECT): New macro. (ctf_write_header): Write metadata for "default-collect" action. (ctf_write_default_collect): Write "default-collect" action in CTF. (ctf_read_default_collect): New. (ctf_open): Call ctf_read_default_collect. --- gdb/ctf.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 57 insertions(+), 2 deletions(-) diff --git a/gdb/ctf.c b/gdb/ctf.c index 2dd2ed8..5757b47 100644 --- a/gdb/ctf.c +++ b/gdb/ctf.c @@ -74,6 +74,7 @@ #define CTF_EVENT_ID_STATUS 4 #define CTF_EVENT_ID_TSV_DEF 5 #define CTF_EVENT_ID_TP_DEF 6 +#define CTF_EVENT_ID_DEFAULT_COLLECT 7 /* The state kept while writing the CTF datastream file. */ @@ -428,6 +429,16 @@ ctf_write_header (struct trace_file_writer *self) "\t};\n" "};\n", CTF_EVENT_ID_TP_DEF); + ctf_save_write_metadata (&writer->tcs, "\n"); + ctf_save_write_metadata (&writer->tcs, + "event {\n\tname = \"default_collect\";\n" + "\tid = %u;\n" + "\tfields := struct { \n" + "\t\tchars contents;\n" + "\t};\n" + "};\n", + CTF_EVENT_ID_DEFAULT_COLLECT); + gdb_assert (writer->tcs.content_size == 0); gdb_assert (writer->tcs.packet_start == 0); @@ -622,8 +633,17 @@ static void ctf_write_default_collect (struct trace_file_writer *self, char *collect) { - /* It is not supported yet to write default collect - into CTF trace data. */ + struct ctf_trace_file_writer *writer + = (struct ctf_trace_file_writer *) self; + int32_t int32; + + /* Event Id. */ + int32 = CTF_EVENT_ID_DEFAULT_COLLECT; + ctf_save_align_write (&writer->tcs, (gdb_byte *) &int32, 4, 4); + + /* Contents. */ + ctf_save_write (&writer->tcs, collect, strlen (collect) + 1); + } /* This is the implementation of trace_file_write_ops method @@ -1149,6 +1169,39 @@ ctf_read_tp (struct uploaded_tp **uploaded_tps) } } +/* Read a CTF event on "default-collect" and update the + "default-collect" action. */ + +static void +ctf_read_default_collect (void) +{ + struct bt_ctf_event *event; + const struct bt_definition *scope; + uint32_t u32; + char *default_collect; + + event = bt_ctf_iter_read_event (ctf_iter); + scope = bt_ctf_get_top_level_scope (event, + BT_STREAM_EVENT_HEADER); + u32 = bt_ctf_get_uint64 (bt_ctf_get_field (event, scope, + "id")); + + if (u32 != CTF_EVENT_ID_DEFAULT_COLLECT) + error (_("Wrong event id!")); + + default_collect + = bt_ctf_get_string (bt_ctf_get_field (event, scope, "contents")); + + if (default_collect == NULL) + default_collect = xstrdup (""); + else + default_collect = xstrdup (default_collect); + + trace_set_default_collect (default_collect); + + bt_iter_next (bt_ctf_get_iter (ctf_iter)); +} + /* This is the implementation of target_ops method to_open. Open CTF trace data, read trace status, trace state variables and tracepoint definitions from the first packet. Set the start position at the @@ -1190,6 +1243,8 @@ ctf_open (char *dirname, int from_tty) ctf_read_tp (&uploaded_tps); + ctf_read_default_collect (); + event = bt_ctf_iter_read_event (ctf_iter); /* EVENT can be NULL if we've already gone to the end of stream of events. */ -- 1.7.7.6