From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23611 invoked by alias); 6 Feb 2002 02:33:47 -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 23542 invoked from network); 6 Feb 2002 02:33:43 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sources.redhat.com with SMTP; 6 Feb 2002 02:33:43 -0000 Received: from reddwarf.cygnus.com (reddwarf.sfbay.redhat.com [205.180.231.12]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id SAA00663; Tue, 5 Feb 2002 18:33:42 -0800 (PST) Received: (from msnyder@localhost) by reddwarf.cygnus.com (8.11.2/8.11.2) id g162QY120181; Tue, 5 Feb 2002 18:26:34 -0800 Date: Tue, 05 Feb 2002 18:33:00 -0000 From: Michael Snyder Message-Id: <200202060226.g162QY120181@reddwarf.cygnus.com> To: cagney@redhat.com, gdb-patches@sources.redhat.com Subject: [RFA] regcache pseudo-reg tweak X-SW-Source: 2002-02/txt/msg00149.txt.bz2 Andrew, I think you left out an "else" when you made this change in december. We must not call target_[fetch/store]_register with a pseudo-register, or they will choke. By definition, a pseudo-register is one that cannot be fetched from the target. Remote_fetch_register, for instance, aborts on this. Michael 2002-02-05 Michael Snyder * regcache.c (fetch_register): Don't call target_fetch_register for a pseudo_register. (store_register): Don't call target_store_register for a pseudo_register. Index: regcache.c =================================================================== RCS file: /cvs/src/src/gdb/regcache.c,v retrieving revision 1.31 diff -c -3 -p -r1.31 regcache.c *** regcache.c 2002/01/29 20:24:27 1.31 --- regcache.c 2002/02/06 02:30:46 *************** fetch_register (int regnum) *** 125,131 **** if (FETCH_PSEUDO_REGISTER_P () && pseudo_register (regnum)) FETCH_PSEUDO_REGISTER (regnum); ! target_fetch_registers (regnum); } /* Write register REGNUM cached value to the target. */ --- 125,132 ---- if (FETCH_PSEUDO_REGISTER_P () && pseudo_register (regnum)) FETCH_PSEUDO_REGISTER (regnum); ! else if (real_register (regnum)) ! target_fetch_registers (regnum); } /* Write register REGNUM cached value to the target. */ *************** store_register (int regnum) *** 140,146 **** if (STORE_PSEUDO_REGISTER_P () && pseudo_register (regnum)) STORE_PSEUDO_REGISTER (regnum); ! target_store_registers (regnum); } /* Low level examining and depositing of registers. --- 141,148 ---- if (STORE_PSEUDO_REGISTER_P () && pseudo_register (regnum)) STORE_PSEUDO_REGISTER (regnum); ! else if (real_register (regnum)) ! target_store_registers (regnum); } /* Low level examining and depositing of registers.