From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 119814 invoked by alias); 10 Feb 2016 13:02:58 -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 119793 invoked by uid 89); 10 Feb 2016 13:02:57 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.1 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=grow, xfree, Grow, payload X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Wed, 10 Feb 2016 13:02:56 +0000 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (Postfix) with ESMTPS id 95E3F91351; Wed, 10 Feb 2016 13:02:55 +0000 (UTC) Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u1AD2sAD017472; Wed, 10 Feb 2016 08:02:54 -0500 Message-ID: <56BB34FE.8040108@redhat.com> Date: Wed, 10 Feb 2016 13:02:00 -0000 From: Pedro Alves User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: =?UTF-8?B?TWFyY2luIEtvxZtjaWVsbmlja2k=?= , gdb-patches@sourceware.org Subject: Re: [PATCH 2/4] gdb.trace: Read XML target description from tfile. References: <1454773157-31569-1-git-send-email-koriakin@0x04.net> <1454773157-31569-3-git-send-email-koriakin@0x04.net> In-Reply-To: <1454773157-31569-3-git-send-email-koriakin@0x04.net> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-SW-Source: 2016-02/txt/msg00279.txt.bz2 On 02/06/2016 03:39 PM, Marcin Kościelnicki wrote: > > +static void tfile_append_tdesc_line (const char *line); > static void tfile_interp_line (char *line, > struct uploaded_tp **utpp, > struct uploaded_tsv **utsvp); > @@ -457,6 +462,12 @@ tfile_open (const char *arg, int from_tty) > trace_filename = xstrdup (filename); > trace_fd = scratch_chan; > > + /* Make sure this is clear. */ > + xfree (trace_tdesc); > + trace_tdesc = NULL; > + trace_tdesc_alloc = 0; > + trace_tdesc_len = 0; > + > bytes = 0; > /* Read the file header and test for validity. */ > tfile_read ((gdb_byte *) &header, TRACE_HEADER_SIZE); > @@ -505,6 +516,9 @@ tfile_open (const char *arg, int from_tty) > error (_("Excessively long lines in trace file")); > } > > + /* We should have fetched tdesc by now. */ > + target_find_description (); The comment makes it sounds like the call isn't needed. ITYM that the loop above should have read in the tdesc, if there was one, right? Could you reword the comment, please? > > static enum target_xfer_status > +tfile_xfer_partial_features (struct target_ops *ops, const char *annex, > + gdb_byte *readbuf, const gdb_byte *writebuf, > + ULONGEST offset, ULONGEST len, > + ULONGEST *xfered_len) > +{ > + if (strcmp (annex, "target.xml")) > + return TARGET_XFER_E_IO; > + > + if (readbuf == NULL) > + error (_("tfile_xfer_partial: tdesc is read-only")); > + > + if (!trace_tdesc) > + return TARGET_XFER_E_IO; if (trace_tdesc == NULL) return TARGET_XFER_E_IO; > > +/* Handles tdesc lines from tfile by appending the payload to > + a global trace_tdesc variable. */ > + > +static void > +tfile_append_tdesc_line (const char *line) > +{ > + int llen = strlen (line); > + > + /* 2 chars for "\n\0". */ > + while (trace_tdesc_len + llen + 2 > trace_tdesc_alloc) > + { > + /* Grow the buffer. */ > + if (!trace_tdesc_alloc) > + trace_tdesc_alloc = 4096; > + else > + trace_tdesc_alloc *= 2; > + trace_tdesc = xrealloc(trace_tdesc, trace_tdesc_alloc); > + } > + > + strcpy (trace_tdesc + trace_tdesc_len, line); > + trace_tdesc_len += llen; > + strcpy (trace_tdesc + trace_tdesc_len, "\n"); > + trace_tdesc_len++; > +} Please use "struct buffer" instead of the manual xreallocing. See similar examples here: https://sourceware.org/ml/gdb-patches/2016-02/msg00070.html Thanks, Pedro Alves