From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10298 invoked by alias); 31 Jul 2009 21:34:45 -0000 Received: (qmail 10289 invoked by uid 22791); 31 Jul 2009 21:34:44 -0000 X-SWARE-Spam-Status: No, hits=-2.4 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from smtp-outbound-2.vmware.com (HELO smtp-outbound-2.vmware.com) (65.115.85.73) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 31 Jul 2009 21:34:38 +0000 Received: from mailhost2.vmware.com (mailhost2.vmware.com [10.16.67.167]) by smtp-outbound-2.vmware.com (Postfix) with ESMTP id 245CC35003 for ; Fri, 31 Jul 2009 14:34:34 -0700 (PDT) Received: from [10.20.94.141] (msnyder-server.eng.vmware.com [10.20.94.141]) by mailhost2.vmware.com (Postfix) with ESMTP id 033FE8E78F; Fri, 31 Jul 2009 14:34:34 -0700 (PDT) Message-ID: <4A736363.104@vmware.com> Date: Fri, 31 Jul 2009 22:13:00 -0000 From: Michael Snyder User-Agent: Thunderbird 1.5.0.12 (X11/20080411) MIME-Version: 1.0 To: Michael Snyder , "gdb-patches@sourceware.org" Subject: Re: [RFC] small change for better error reporting in remote.c References: <4A70E268.6010401@vmware.com> <20090730213019.GB3955@caradoc.them.org> <4A735491.4040006@vmware.com> <20090731205526.GA29107@caradoc.them.org> In-Reply-To: <20090731205526.GA29107@caradoc.them.org> Content-Type: multipart/mixed; boundary="------------020208060000010704090207" X-IsSubscribed: yes 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 X-SW-Source: 2009-07/txt/msg00773.txt.bz2 This is a multi-part message in MIME format. --------------020208060000010704090207 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-length: 580 Daniel Jacobowitz wrote: > On Fri, Jul 31, 2009 at 01:31:13PM -0700, Michael Snyder wrote: >> You may not realize it, but you're asking for a much bigger change. >> There is no struct packet_config for the 'G' packet. I'll have to >> change set_registers_using_G from void to int, so that it can >> return failure if the 'G' packet is unsupported. >> >> But I'll begin working on it, unles I hear "never mind" >> from you... ;-) > > Bah... no, don't bother with that. What I actually wanted is > just packet_check_result. Is that easier? :-) Yep, checked in as attached. --------------020208060000010704090207 Content-Type: text/plain; name="errmsg.txt" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="errmsg.txt" Content-length: 1997 2009-07-29 Michael Snyder * remote.c (store_register_using_P): Call putpkt and getpkt directly instead of calling remote_send. (store_register_using_G): Ditto. (fetch_register_using_p): Ditto. Index: remote.c =================================================================== RCS file: /cvs/src/src/gdb/remote.c,v retrieving revision 1.364 diff -u -p -r1.364 remote.c --- remote.c 14 Jul 2009 21:40:30 -0000 1.364 +++ remote.c 31 Jul 2009 21:31:34 -0000 @@ -4873,7 +4873,8 @@ fetch_register_using_p (struct regcache *p++ = 'p'; p += hexnumstr (p, reg->pnum); *p++ = '\0'; - remote_send (&rs->buf, &rs->buf_size); + putpkt (rs->buf); + getpkt (&rs->buf, &rs->buf_size, 0); buf = rs->buf; @@ -5121,7 +5122,8 @@ remote_prepare_to_store (struct regcache packet was not recognized. */ static int -store_register_using_P (const struct regcache *regcache, struct packet_reg *reg) +store_register_using_P (const struct regcache *regcache, + struct packet_reg *reg) { struct gdbarch *gdbarch = get_regcache_arch (regcache); struct remote_state *rs = get_remote_state (); @@ -5141,7 +5143,8 @@ store_register_using_P (const struct reg p = buf + strlen (buf); regcache_raw_collect (regcache, reg->regnum, regp); bin2hex (regp, p, register_size (gdbarch, reg->regnum)); - remote_send (&rs->buf, &rs->buf_size); + putpkt (rs->buf); + getpkt (&rs->buf, &rs->buf_size, 0); switch (packet_ok (rs->buf, &remote_protocol_packets[PACKET_P])) { @@ -5189,7 +5192,10 @@ store_registers_using_G (const struct re /* remote_prepare_to_store insures that rsa->sizeof_g_packet gets updated. */ bin2hex (regs, p, rsa->sizeof_g_packet); - remote_send (&rs->buf, &rs->buf_size); + putpkt (rs->buf); + getpkt (&rs->buf, &rs->buf_size, 0); + if (packet_check_result (rs->buf) == PACKET_ERROR) + error (_("Could not write registers")); } /* Store register REGNUM, or all registers if REGNUM == -1, from the contents --------------020208060000010704090207--