From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23831 invoked by alias); 17 Dec 2004 22:37:44 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 23818 invoked from network); 17 Dec 2004 22:37:36 -0000 Received: from unknown (HELO mx1.redhat.com) (66.187.233.31) by sourceware.org with SMTP; 17 Dec 2004 22:37:36 -0000 Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11/8.12.11) with ESMTP id iBHMbQZB007464 for ; Fri, 17 Dec 2004 17:37:36 -0500 Received: from zenia.home.redhat.com (sebastian-int.corp.redhat.com [172.16.52.221]) by int-mx1.corp.redhat.com (8.11.6/8.11.6) with ESMTP id iBHMbOr19184; Fri, 17 Dec 2004 17:37:25 -0500 To: Daniel Jacobowitz Cc: gdb-patches@sources.redhat.com Subject: Re: RFA: Recognize 'x' in response to 'p' packet References: <20041217193240.GA19185@nevyn.them.org> From: Jim Blandy Date: Fri, 17 Dec 2004 22:45:00 -0000 In-Reply-To: <20041217193240.GA19185@nevyn.them.org> Message-ID: User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-SW-Source: 2004-12/txt/msg00405.txt.bz2 Daniel Jacobowitz writes: > I know this came up a bit already, but could you elaborate on why you > had to silently provide a value of 0? We do have a defined interface > for 'currently not available', though we do not use it well. This > isn't support for the xx response, just a workaround. I just missed it. Is this (untested!) what you're looking for? 2004-12-17 Jim Blandy * remote.c (fetch_register_using_p): Recognize a register value starting with 'x' as indicating an unfetchable register. Index: gdb/remote.c =================================================================== RCS file: /cvs/src/src/gdb/remote.c,v retrieving revision 1.155 diff -c -p -r1.155 remote.c *** gdb/remote.c 17 Dec 2004 22:19:51 -0000 1.155 --- gdb/remote.c 17 Dec 2004 22:31:09 -0000 *************** fetch_register_using_p (int regnum) *** 3192,3213 **** p += hexnumstr (p, regnum); *p++ = '\0'; remote_send (buf, rs->remote_packet_size); ! if (buf[0] != 0 && buf[0] != 'E') { ! p = buf; ! i = 0; ! while (p[0] != 0) { ! if (p[1] == 0) { ! error("fetch_register_using_p: early buf termination"); ! return 0; ! } ! regp[i++] = fromhex (p[0]) * 16 + fromhex (p[1]); ! p += 2; } - regcache_raw_supply (current_regcache, regnum, regp); - return 1; - } ! return 0; } static void --- 3192,3224 ---- p += hexnumstr (p, regnum); *p++ = '\0'; remote_send (buf, rs->remote_packet_size); ! ! /* If the stub didn't recognize the packet, or if we got an error, ! tell our caler. */ ! if (buf[0] == '\0' || buf[0] == 'E') ! return 0; ! ! /* If this register is unfetchable, tell the regcache. */ ! if (buf[0] == 'x') ! { ! regcache_raw_supply (current_regcache, regnum, NULL); ! set_register_cached (regnum, -1); } ! /* Otherwise, parse and supply the value. */ ! p = buf; ! i = 0; ! while (p[0] != 0) { ! if (p[1] == 0) { ! error("fetch_register_using_p: early buf termination"); ! return 0; ! } ! ! regp[i++] = fromhex (p[0]) * 16 + fromhex (p[1]); ! p += 2; ! } ! regcache_raw_supply (current_regcache, regnum, regp); ! return 1; } static void