From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by sourceware.org (Postfix) with ESMTPS id 4A9973858D1E for ; Tue, 8 Feb 2022 09:14:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 4A9973858D1E X-IronPort-AV: E=McAfee;i="6200,9189,10251"; a="246496893" X-IronPort-AV: E=Sophos;i="5.88,352,1635231600"; d="scan'208";a="246496893" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Feb 2022 01:14:55 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,352,1635231600"; d="scan'208";a="525475369" Received: from ultl2604.iul.intel.com ([172.28.49.61]) by orsmga007.jf.intel.com with ESMTP; 08 Feb 2022 01:14:55 -0800 From: Tankut Baris Aktemur To: gdb-patches@sourceware.org Subject: [PATCH v2 1/2] gdb/regcache: return REG_UNAVAILABLE if raw_update raises NOT_AVAILABLE_ERROR Date: Tue, 8 Feb 2022 10:15:01 +0100 Message-Id: X-Mailer: git-send-email 2.33.1 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Feb 2022 09:14:58 -0000 In regcache's raw_read, it is possible that 'raw_update' fails with an exception. Catch this exception and return REG_UNAVAILABLE if the error is of kind NOT_AVAILABLE_ERROR. This makes clients' lives easier. Regression-tested on X86_64-Linux. --- gdb/regcache.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/gdb/regcache.c b/gdb/regcache.c index 00d7a10e289..0379e6a8d0f 100644 --- a/gdb/regcache.c +++ b/gdb/regcache.c @@ -598,7 +598,16 @@ enum register_status readable_regcache::raw_read (int regnum, gdb_byte *buf) { gdb_assert (buf != NULL); - raw_update (regnum); + try + { + raw_update (regnum); + } + catch (const gdb_exception_error &ex) + { + if (ex.error == NOT_AVAILABLE_ERROR) + return REG_UNAVAILABLE; + throw; + } if (m_register_status[regnum] != REG_VALID) memset (buf, 0, m_descr->sizeof_register[regnum]); -- 2.33.1 Intel Deutschland GmbH Registered Address: Am Campeon 10, 85579 Neubiberg, Germany Tel: +49 89 99 8853-0, www.intel.de Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva Chairperson of the Supervisory Board: Nicole Lau Registered Office: Munich Commercial Register: Amtsgericht Muenchen HRB 186928