[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Build problems in kdd.c with xen-4.14.0-rc4



> -----Original Message-----
> From: Xen-devel <xen-devel-bounces@xxxxxxxxxxxxxxxxxxxx> On Behalf Of Olaf 
> Hering
> Sent: 02 July 2020 19:38
> To: Michael Young <m.a.young@xxxxxxxxxxxx>
> Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx; Tim Deegan <tim@xxxxxxx>
> Subject: Re: Build problems in kdd.c with xen-4.14.0-rc4
> 
> On Tue, Jun 30, Michael Young wrote:
> 
> > I get the following errors when trying to build xen-4.14.0-rc4
> 
> This happens to work for me.
> 
> Olaf
> 
> ---
>  tools/debugger/kdd/kdd.c | 8 ++++----
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> --- a/tools/debugger/kdd/kdd.c
> +++ b/tools/debugger/kdd/kdd.c
> @@ -742,25 +742,25 @@ static void kdd_tx(kdd_state *s)
>      int i;
> 
>      /* Fix up the checksum before we send */
>      for (i = 0; i < s->txp.h.len; i++)
>          sum += s->txp.payload[i];
>      s->txp.h.sum = sum;
> 
>      kdd_log_pkt(s, "TX", &s->txp);
> 
>      len = s->txp.h.len + sizeof (kdd_hdr);
>      if (s->txp.h.dir == KDD_DIR_PKT)
>          /* Append the mysterious 0xaa byte to each packet */
> -        s->txb[len++] = 0xaa;
> +        s->txp.payload[len++] = 0xaa;

That doesn't look quite right. I think you need [len++ - sizeof(kdd_hdr)] there.

> 
>      (void) blocking_write(s->fd, s->txb, len);
>  }
> 
> 
>  /* Send an acknowledgement to the client */
>  static void kdd_send_ack(kdd_state *s, uint32_t id, uint16_t type)
>  {
>      s->txp.h.dir = KDD_DIR_ACK;
>      s->txp.h.type = type;
>      s->txp.h.len = 0;
>      s->txp.h.id = id;
> @@ -775,25 +775,25 @@ static void kdd_send_cmd(kdd_state *s, uint32_t 
> subtype, size_t extra)
>      s->txp.h.type = KDD_PKT_CMD;
>      s->txp.h.len = sizeof (kdd_cmd) + extra;
>      s->txp.h.id = (s->next_id ^= 1);
>      s->txp.h.sum = 0;
>      s->txp.cmd.subtype = subtype;
>      kdd_tx(s);
>  }
> 
>  /* Cause the client to print a string */
>  static void kdd_send_string(kdd_state *s, char *fmt, ...)
>  {
>      uint32_t len = 0xffff - sizeof (kdd_msg);
> -    char *buf = (char *) s->txb + sizeof (kdd_hdr) + sizeof (kdd_msg);
> +    char *buf = (char *) &s->txp + sizeof (kdd_hdr) + sizeof (kdd_msg);
>      va_list ap;
> 
>      va_start(ap, fmt);
>      len = vsnprintf(buf, len, fmt, ap);
>      va_end(ap);
> 
>      s->txp.h.dir = KDD_DIR_PKT;
>      s->txp.h.type = KDD_PKT_MSG;
>      s->txp.h.len = sizeof (kdd_msg) + len;
>      s->txp.h.id = (s->next_id ^= 1);
>      s->txp.h.sum = 0;
>      s->txp.msg.subtype = KDD_MSG_PRINT;
> @@ -807,25 +807,25 @@ static void kdd_break(kdd_state *s)
>  {
>      uint16_t ilen;
>      KDD_LOG(s, "Break\n");
> 
>      if (s->running)
>          kdd_halt(s->guest);
>      s->running = 0;
> 
>      {
>          unsigned int i;
>          /* XXX debug pattern */
>          for (i = 0; i < 0x100 ; i++)
> -            s->txb[sizeof (kdd_hdr) + i] = i;
> +            s->txp.payload[sizeof (kdd_hdr) + i] = i;

Again, drop the sizeof(kdd_hdr) here I think.

  Paul

>      }
> 
>      /* Send a state-change message to the client so it knows we've stopped */
>      s->txp.h.dir = KDD_DIR_PKT;
>      s->txp.h.type = KDD_PKT_STC;
>      s->txp.h.len = sizeof (kdd_stc);
>      s->txp.h.id = (s->next_id ^= 1);
>      s->txp.stc.subtype = KDD_STC_STOP;
>      s->txp.stc.stop.cpu = s->cpuid;
>      s->txp.stc.stop.ncpus = kdd_count_cpus(s->guest);
>      s->txp.stc.stop.kthread = 0; /* Let the debugger figure it out */
>      s->txp.stc.stop.status = KDD_STC_STATUS_BREAKPOINT;




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.