From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id uHdwFH40YWfkLB4AWB0awg (envelope-from ) for ; Tue, 17 Dec 2024 03:21:18 -0500 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=S9LYz3cB; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 501CA1E097; Tue, 17 Dec 2024 03:21:18 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=unavailable autolearn_force=no version=4.0.0 Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id C89E81E05C for ; Tue, 17 Dec 2024 03:21:17 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 7EB303858401 for ; Tue, 17 Dec 2024 08:21:17 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7EB303858401 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=S9LYz3cB Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) by sourceware.org (Postfix) with ESMTPS id D8D403858D26 for ; Tue, 17 Dec 2024 08:18:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D8D403858D26 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D8D403858D26 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=192.198.163.16 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1734423535; cv=none; b=Lkgh1zPUUqkJtmHyVuk4xRiHfYWePutpE9nhzez6nsvjkRRim66Xz8R/7zEZ4lE8dmttun2TIV7xck1r9J/Mi3BmIw1pozIbNVbHDtTitnXW7u7hnxIBOdtx0hn25bb69//3RWyVcusVcFwru4zahl59QowKLGd/CmtY3FbpRvA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1734423535; c=relaxed/simple; bh=LQhBmv3kd2c0sZ9ZLhGGOnEEcazTkZyoKVw45Q4owus=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=mKGc5+86/GddyD+4+S3ptrWm0uLlOKK+t1SJ/rPTUNst8HLtOOrttFfQsD7YvRc3WvxuM6kpenzNgrZaGv4NAT1TPdSde3ENFv/gxMD/T9l3WZOLP+wm6ZvHPCpM7OpV5zP72vZvjxQXW3ZyfxGtdQyLGBRtUmUSto34DSBJL1w= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D8D403858D26 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1734423535; x=1765959535; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=LQhBmv3kd2c0sZ9ZLhGGOnEEcazTkZyoKVw45Q4owus=; b=S9LYz3cB84HCJXRxck+lXTyxjsMQK6NaqezrK4vCHdh1c0p/zkLLENB0 ZzVLHc1MSncPgjLzufc2m5lXNW8VNGNz2dtgaCYvZCjcQBIdjoyH1hdtu anPpbe5M7WQeHL7tXrjmFgURSg+yh5m52QPx0B8O2W4cNe/jAAqL4R5Me lWryTrVjYSHvL8S/L0IgCnLfbhwDB48uFcnjygQYy1VhZU5xGL7J+A14m L0YXYeRmFrWRWSYNqLdWcdBgnDKZ/A4TMAVVR50Kn3IMxqEdlVvNNu2+k nvciJsVRPTzyZzHurPutcdTfJgESkSfdKLd4lAYd8Um6B93USMVoxc3C8 w==; X-CSE-ConnectionGUID: tu2caVgvTvm1K5xZ43X9ZA== X-CSE-MsgGUID: Y1DM2VzhRg27Vgdhagb/yg== X-IronPort-AV: E=McAfee;i="6700,10204,11288"; a="22427814" X-IronPort-AV: E=Sophos;i="6.12,241,1728975600"; d="scan'208";a="22427814" Received: from fmviesa007.fm.intel.com ([10.60.135.147]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Dec 2024 00:18:54 -0800 X-CSE-ConnectionGUID: n98jR03KQ92JJpqxH2F9nQ== X-CSE-MsgGUID: +TvCmipMSha3vxdoJc38mw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.12,241,1728975600"; d="scan'208";a="97346333" Received: from gkldtt-dev-004.igk.intel.com (HELO localhost) ([10.123.221.202]) by fmviesa007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Dec 2024 00:18:53 -0800 From: Tankut Baris Aktemur To: gdb-patches@sourceware.org Cc: simon.marchi@efficios.com Subject: [PUSHED 1/8] gdbserver: by-pass regcache to access tdesc only Date: Tue, 17 Dec 2024 09:18:23 +0100 Message-Id: <2903d618081ac1897beca4ef5cfdb0550f2569e1.1734422729.git.tankut.baris.aktemur@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org The `get_thread_regcache` function has a `fetch` option to skip fetching the registers from the target. It seems this option is set to false only at uses where we just need to access the tdesc through the regcache of the current thread, as in struct regcache *regcache = get_thread_regcache (current_thread, 0); ... regcache->tdesc ... Since the tdesc of a regcache is set from the process of the thread that owns the regcache, we can simplify the code to access the tdesc via the process, as in ... current_process ()->tdesc ... This is intended to be a refactoring with no behavioral change. Tested only for the linux-x86-low target. Approved-By: Simon Marchi --- gdbserver/linux-ppc-low.cc | 10 +++------- gdbserver/linux-s390-low.cc | 14 ++++---------- gdbserver/linux-x86-low.cc | 7 ++----- 3 files changed, 9 insertions(+), 22 deletions(-) diff --git a/gdbserver/linux-ppc-low.cc b/gdbserver/linux-ppc-low.cc index b9d00b1b67f..d3c86671148 100644 --- a/gdbserver/linux-ppc-low.cc +++ b/gdbserver/linux-ppc-low.cc @@ -1607,8 +1607,7 @@ ppc_target::install_fast_tracepoint_jump_pad (CORE_ADDR tpoint, const CORE_ADDR entryaddr = *jump_entry; int rsz, min_frame, frame_size, tp_reg; #ifdef __powerpc64__ - struct regcache *regcache = get_thread_regcache (current_thread, 0); - int is_64 = register_size (regcache->tdesc, 0) == 8; + int is_64 = register_size (current_process ()->tdesc, 0) == 8; int is_opd = is_64 && !is_elfv2_inferior (); #else int is_64 = 0, is_opd = 0; @@ -3379,9 +3378,7 @@ emit_ops * ppc_target::emit_ops () { #ifdef __powerpc64__ - struct regcache *regcache = get_thread_regcache (current_thread, 0); - - if (register_size (regcache->tdesc, 0) == 8) + if (register_size (current_process ()->tdesc, 0) == 8) { if (is_elfv2_inferior ()) return &ppc64v2_emit_ops_impl; @@ -3397,8 +3394,7 @@ ppc_target::emit_ops () int ppc_target::get_ipa_tdesc_idx () { - struct regcache *regcache = get_thread_regcache (current_thread, 0); - const struct target_desc *tdesc = regcache->tdesc; + const target_desc *tdesc = current_process ()->tdesc; #ifdef __powerpc64__ if (tdesc == tdesc_powerpc_64l) diff --git a/gdbserver/linux-s390-low.cc b/gdbserver/linux-s390-low.cc index a91c77f66c9..cd874f6d89c 100644 --- a/gdbserver/linux-s390-low.cc +++ b/gdbserver/linux-s390-low.cc @@ -796,9 +796,7 @@ s390_target::low_get_thread_area (int lwpid, CORE_ADDR *addrp) { CORE_ADDR res = ptrace (PTRACE_PEEKUSER, lwpid, (long) PT_ACR0, (long) 0); #ifdef __s390x__ - struct regcache *regcache = get_thread_regcache (current_thread, 0); - - if (register_size (regcache->tdesc, 0) == 4) + if (register_size (current_process ()->tdesc, 0) == 4) res &= 0xffffffffull; #endif *addrp = res; @@ -1286,8 +1284,7 @@ s390_target::install_fast_tracepoint_jump_pad unsigned char jbuf[6] = { 0xc0, 0xf4, 0, 0, 0, 0 }; /* jg ... */ CORE_ADDR buildaddr = *jump_entry; #ifdef __s390x__ - struct regcache *regcache = get_thread_regcache (current_thread, 0); - int is_64 = register_size (regcache->tdesc, 0) == 8; + int is_64 = register_size (current_process ()->tdesc, 0) == 8; int is_zarch = is_64 || have_hwcap_s390_high_gprs; int has_vx = have_hwcap_s390_vx; #else @@ -1451,8 +1448,7 @@ s390_target::get_min_fast_tracepoint_insn_len () int s390_target::get_ipa_tdesc_idx () { - struct regcache *regcache = get_thread_regcache (current_thread, 0); - const struct target_desc *tdesc = regcache->tdesc; + const target_desc *tdesc = current_process ()->tdesc; #ifdef __s390x__ if (tdesc == tdesc_s390x_linux64) @@ -2839,9 +2835,7 @@ emit_ops * s390_target::emit_ops () { #ifdef __s390x__ - struct regcache *regcache = get_thread_regcache (current_thread, 0); - - if (register_size (regcache->tdesc, 0) == 8) + if (register_size (current_process ()->tdesc, 0) == 8) return &s390x_emit_ops; else #endif diff --git a/gdbserver/linux-x86-low.cc b/gdbserver/linux-x86-low.cc index d955a7187b7..ad7ed1ce0ad 100644 --- a/gdbserver/linux-x86-low.cc +++ b/gdbserver/linux-x86-low.cc @@ -284,9 +284,7 @@ static /*const*/ int i386_regmap[] = static int is_64bit_tdesc (thread_info *thread) { - struct regcache *regcache = get_thread_regcache (thread, 0); - - return register_size (regcache->tdesc, 0) == 8; + return register_size (thread->process ()->tdesc, 0) == 8; } #endif @@ -2876,8 +2874,7 @@ x86_target::low_supports_range_stepping () int x86_target::get_ipa_tdesc_idx () { - struct regcache *regcache = get_thread_regcache (current_thread, 0); - const struct target_desc *tdesc = regcache->tdesc; + const target_desc *tdesc = current_process ()->tdesc; if (!use_xml) { -- 2.34.1 Intel Deutschland GmbH Registered Address: Am Campeon 10, 85579 Neubiberg, Germany Tel: +49 89 99 8853-0, www.intel.de Managing Directors: Sean Fennelly, Jeffrey Schneiderman, Tiffany Doon Silva Chairperson of the Supervisory Board: Nicole Lau Registered Office: Munich Commercial Register: Amtsgericht Muenchen HRB 186928