Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: "Ulrich Weigand" <uweigand@de.ibm.com>
To: pedromfc@linux.vnet.ibm.com (Pedro Franco de Carvalho)
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH 3/4] Use get_remote_packet_size in download_tracepoint
Date: Mon, 25 Jun 2018 10:37:00 -0000	[thread overview]
Message-ID: <20180625103720.2F6DAD801CC@oc3748833570.ibm.com> (raw)
In-Reply-To: <20180620210855.6385-4-pedromfc@linux.vnet.ibm.com> from "Pedro Franco de Carvalho" at Jun 20, 2018 06:08:54 PM

Pedro Franco de Carvalho wrote:

> 	* remote.c (remote_target::download_tracepoint): Remove BUF_SIZE
> 	and pkt. Replace array buf with gdb::char_vector buf, of size
> 	get_remote_packet_size (). Replace references to buf and BUF_SIZE
> 	to buf.data () and buf.size (). Replace strcpy, strcat and
> 	pack_hex_byte with xsnprintf.

This makes sense in general, but I'm not sure it makes sense to use
a separate hex_byte buffer here:

>  	{
>  	  agent_expr_up aexpr = gen_eval_for_expr (tpaddr, loc->cond.get ());
> -	  xsnprintf (buf + strlen (buf), BUF_SIZE - strlen (buf), ":X%x,",
> +	  xsnprintf (buf.data () + strlen (buf.data ()),
> +		     buf.size () - strlen (buf.data ()), ":X%x,",
>  		     aexpr->len);
> -	  pkt = buf + strlen (buf);
> +
> +	  char *end = buf.data () + strlen (buf.data ());
> +	  long size_left = buf.size () - strlen (buf.data ());
> +	  char hex_byte[3];
> +	  hex_byte[2] = '\0';
> +
>  	  for (int ndx = 0; ndx < aexpr->len; ++ndx)
> -	    pkt = pack_hex_byte (pkt, aexpr->buf[ndx]);
> -	  *pkt = '\0';
> +	    {
> +	      pack_hex_byte (hex_byte, aexpr->buf[ndx]);
> +	      xsnprintf (end, size_left, hex_byte);
> +
> +	      size_left -= strlen (end);
> +	      end += strlen (end);
> +	    }
>  	}

You know from the beginning that the agent expression will take
(2 * aexpr->len) bytes, so it should be OK to only check this
once, ahead of time.  In fact, sending a partial agent expression
seems to be worse than sending none, so if the agent expression
is too long, I think it should be just omitted (and the user
warned).

Bye,
Ulrich

-- 
  Dr. Ulrich Weigand
  GNU/Linux compilers and toolchain
  Ulrich.Weigand@de.ibm.com


  reply	other threads:[~2018-06-25 10:37 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-20 21:09 [PATCH 0/4] Allow larger sizes for tracepoint register masks Pedro Franco de Carvalho
2018-06-20 21:09 ` [PATCH 1/4] Fix indentation in remote_target::download_tracepoint Pedro Franco de Carvalho
2018-06-25 10:32   ` Ulrich Weigand
2018-06-20 21:09 ` [PATCH 4/4] Variable size for regs mask in collection list Pedro Franco de Carvalho
2018-06-25 10:38   ` Ulrich Weigand
2018-06-26 16:58   ` Pedro Alves
2018-06-26 18:52     ` Pedro Franco de Carvalho
2018-06-20 21:09 ` [PATCH 3/4] Use get_remote_packet_size in download_tracepoint Pedro Franco de Carvalho
2018-06-25 10:37   ` Ulrich Weigand [this message]
2018-06-25 20:51     ` Pedro Franco de Carvalho
2018-06-26 10:52       ` Ulrich Weigand
2018-06-26 16:53       ` Pedro Alves
2018-06-26 18:49         ` Pedro Franco de Carvalho
2018-06-20 21:10 ` [PATCH 2/4] Remove trailing '-' from the last QTDP action packet Pedro Franco de Carvalho
2018-06-25 10:33   ` Ulrich Weigand

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180625103720.2F6DAD801CC@oc3748833570.ibm.com \
    --to=uweigand@de.ibm.com \
    --cc=gdb-patches@sourceware.org \
    --cc=pedromfc@linux.vnet.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox