From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29545 invoked by alias); 3 Feb 2010 17:44:32 -0000 Received: (qmail 29531 invoked by uid 22791); 3 Feb 2010 17:44:32 -0000 X-SWARE-Spam-Status: No, hits=-0.8 required=5.0 tests=AWL,BAYES_00,NO_DNS_FOR_FROM X-Spam-Check-By: sourceware.org Received: from mga06.intel.com (HELO orsmga101.jf.intel.com) (134.134.136.21) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 03 Feb 2010 17:44:28 +0000 Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP; 03 Feb 2010 09:42:51 -0800 X-ExtLoop1: 1 Received: from gnu-6.sc.intel.com ([10.3.194.107]) by orsmga002.jf.intel.com with ESMTP; 03 Feb 2010 09:43:58 -0800 Received: by gnu-6.sc.intel.com (Postfix, from userid 500) id 60B38812344; Wed, 3 Feb 2010 09:44:14 -0800 (PST) Date: Wed, 03 Feb 2010 17:44:00 -0000 From: "H.J. Lu" To: GDB Subject: PATCH: gdbserver: Clear regcache if buf is NULL Message-ID: <20100203174414.GA29948@lucon.org> Reply-To: "H.J. Lu" MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.20 (2009-08-17) 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: 2010-02/txt/msg00079.txt.bz2 If xstate_bv bits are zero, XSAVE extended state is in init state and gdbserver should treat XMM/YMM registers as 0. This patch clears regcache if buf is NULL. OK to install? Thanks. H.J. --- 2010-02-03 H.J. Lu * regcache.c (supply_register): Clear regcache if buf is NULL. diff --git a/gdb/gdbserver/regcache.c b/gdb/gdbserver/regcache.c index 2082604..d6cdc46 100644 --- a/gdb/gdbserver/regcache.c +++ b/gdb/gdbserver/regcache.c @@ -215,7 +215,10 @@ register_data (struct regcache *regcache, int n, int fetch) void supply_register (struct regcache *regcache, int n, const void *buf) { - memcpy (register_data (regcache, n, 0), buf, register_size (n)); + if (buf) + memcpy (register_data (regcache, n, 0), buf, register_size (n)); + else + memset (register_data (regcache, n, 0), 0, register_size (n)); } void