From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7844 invoked by alias); 27 Jun 2016 14:50:15 -0000 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 Received: (qmail 7783 invoked by uid 89); 27 Jun 2016 14:50:15 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=3.6 required=5.0 tests=AWL,BAYES_00,GARBLED_SUBJECT,RCVD_IN_DNSWL_NONE,RP_MATCHES_RCVD,SPF_PASS autolearn=no version=3.3.2 spammy=Hx-languages-length:1625 X-HELO: mailapp01.imgtec.com Received: from mailapp01.imgtec.com (HELO mailapp01.imgtec.com) (195.59.15.196) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 27 Jun 2016 14:50:09 +0000 Received: from hhmail02.hh.imgtec.org (unknown [10.100.10.20]) by Forcepoint Email with ESMTPS id CD34863BAEC5E for ; Mon, 27 Jun 2016 15:50:03 +0100 (IST) Received: from pudesk170.pu.imgtec.org (192.168.93.65) by hhmail02.hh.imgtec.org (10.100.10.20) with Microsoft SMTP Server (TLS) id 14.3.294.0; Mon, 27 Jun 2016 15:50:06 +0100 From: Bhushan Attarde To: CC: , , , , , Bhushan Attarde Subject: [PATCH 03/24] regcache: handle invalidated regcache Date: Mon, 27 Jun 2016 14:50:00 -0000 Message-ID: <1467038991-6600-3-git-send-email-bhushan.attarde@imgtec.com> In-Reply-To: <1467038991-6600-1-git-send-email-bhushan.attarde@imgtec.com> References: <1467038991-6600-1-git-send-email-bhushan.attarde@imgtec.com> MIME-Version: 1.0 Content-Type: text/plain X-SW-Source: 2016-06/txt/msg00426.txt.bz2 When registers are marked as change, set a new regcache_invalidated variable which is used by get_thread_regcache to decide whether to recreate the gdbarch. gdb/ChangeLog: * regcache.c (regcache_invalidated): New variable. (set_current_thread_ptid_arch): Use regcache_invalidated to set registers_changed_p. (get_thread_regcache): Reset regcache_invalidated to 0. (registers_changed_ptid): Set regcache_invalidated to 1. --- gdb/regcache.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gdb/regcache.c b/gdb/regcache.c index c3405b6..3cbec6e 100644 --- a/gdb/regcache.c +++ b/gdb/regcache.c @@ -489,6 +489,7 @@ struct regcache_list }; static struct regcache_list *current_regcache; +static int regcache_invalidated = 1; struct regcache * get_thread_arch_aspace_regcache (ptid_t ptid, struct gdbarch *gdbarch, @@ -547,7 +548,7 @@ set_current_thread_ptid_arch (ptid_t ptid) struct regcache * get_thread_regcache (ptid_t ptid) { - int registers_changed_p = current_regcache == NULL; + int registers_changed_p = current_regcache == NULL || regcache_invalidated; struct regcache *new_regcache; set_current_thread_ptid_arch (ptid); @@ -560,6 +561,7 @@ get_thread_regcache (ptid_t ptid) registers_changed (); set_current_thread_ptid_arch (ptid); new_regcache = get_thread_arch_regcache (ptid, current_thread_arch); + regcache_invalidated = 0; } return new_regcache; @@ -646,6 +648,7 @@ registers_changed_ptid (ptid_t ptid) forget about any frames we have cached, too. */ reinit_frame_cache (); } + regcache_invalidated = 1; } void -- 1.9-rc2