From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id 4rFbHpbBIGkTdBwAWB0awg (envelope-from ) for ; Fri, 21 Nov 2025 14:46:30 -0500 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=KKd+TBX6; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 6AF741E0B6; Fri, 21 Nov 2025 14:46:30 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 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 811891E048 for ; Fri, 21 Nov 2025 14:46:29 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 1ED4E384CBA7 for ; Fri, 21 Nov 2025 19:46:29 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1ED4E384CBA7 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=KKd+TBX6 Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com [IPv6:2a00:1450:4864:20::12f]) by sourceware.org (Postfix) with ESMTPS id 95EBE384CB86 for ; Fri, 21 Nov 2025 19:45:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 95EBE384CB86 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 95EBE384CB86 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::12f ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1763754353; cv=none; b=BX6zY/yLsNSRDZ5Fi0cuGjRjvcWp2VKAXUYnxJEbYxIGTAssIUr9imqKqarS5fvJYv0EzrpZ38hHTPbeFKqH6Zy9TNYzxS/fi+MxwJQgmV6sPEICErYL1u+4DW2AKMgsMH/UCIvky8QchFJWdjA5quDIrtpSH5FTyJarMH0E7pk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1763754353; c=relaxed/simple; bh=Vv1DcZLgGo+Mzv+r/w9Bv1v8KlUmeu9rLJCrGIO3yZI=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=Ltb2VEN/if1kIg+CUPcrugk4LKIPwz0/eSWXXbQapmY2JiqNQK3myK0sk1VflyufP0In2yDVE7+lHQdEPDIJXNoNU2PTZYjhrxOCO8/k3QQ+SgUE+EjLcJLyZDHa84u4fndEG6x6VAEpR30BguI1fhbzT2kDc+nYEC8oKgqIo9w= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 95EBE384CB86 Received: by mail-lf1-x12f.google.com with SMTP id 2adb3069b0e04-5957db5bdedso2374633e87.2 for ; Fri, 21 Nov 2025 11:45:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763754352; x=1764359152; darn=sourceware.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6ngbZmx7GGHytKS/9gnlIiGeW5uO8nYl17WwPUcFI9w=; b=KKd+TBX6exN8A3bZuP+7HZ1O5RpuYr+lKssiKmBMSwCdMGv3fkecp8JC1sKeKEwZFT 7IQdgid8jrysNazpS0EWZ9CCigQf2KXV7Wtzzt2jbZRBYvd4JKvKuXQvNHxK9WGeOwlS XJTmrCvA1Ca6IhPvWpqbiYjtjh+KsSy8fRcGVZQFuPAzGOg8Bl6ylJuVhuPGiNCJuPm6 2cfaoYWnCenVhV+U0olh/qi/7rjriERYinr+6MS1q/8/LEb64rXoOTeg6ch+KbYERUhu UOQzDsze3BwZ67e7pMs/48bFY2HBdEtBva3q3dswYarjcEtWJRo6+J7QL5A12X7NYkMi +xRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763754352; x=1764359152; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=6ngbZmx7GGHytKS/9gnlIiGeW5uO8nYl17WwPUcFI9w=; b=bgkF8kbAYTuPDFbbKvs59rdea67+GKtR+RmBtTscDvHXVBc8UAO1zUxlRHJ+/qSmZu y/4VR7wFK4pJRm1GOGCy7W0yBQTfyv1IVT5RlE8t+xlQECWYTM/sTr+LzYeWAD9HXjSw lqA5BZTUHPabd3XgREN3d/Yn9RuZPlw2obB0MuvJk4Qk5T87vPbrqQ0MNQCyhULUU26s rtNgRoyULqoLPwjXqFjyIh37AOJWkLTuurtJp4TBa/7OiyBrRg9cgIdssdr6oCvns8bE f4/tjsRkNIwmmtjEVQvV9k5rlyH8eJkdZVHDWm6B26WO+ry2M59rzbyWP5DNlyoF31+O Vqgg== X-Forwarded-Encrypted: i=1; AJvYcCXLLomznEv0KKV2dXbN8ldbC5p/5PbxBPI3sjz4FKl4/T2afanXAtp09E9rzjefwknGNVqOL6tJwaIKZw==@sourceware.org X-Gm-Message-State: AOJu0YzKUJ8tPPk6JhhI91VnmeQJKrv3nwPaHIgGiCl2y+eLLjX4QSm3 LFtdDZtBAl0qvT+XLNnsCBvR2iLcJLOYmqlV1LZM/6bHD/34RxMWuq693KAXjN0q3TU= X-Gm-Gg: ASbGncvqdIZfzpRFKT5BIPP3Ibo+8QQEmsw4wDlFfpZawi1nTYpoobdDwuGEKqjBo+G /HUW7GWggbozSocRjyBeZHNTI/Ft5Sh0EUU0sirUn7So2NFyVpDrGwWWMZzSN6OKHL7ZK7qK2wx L1tjm9NdGMaROd58vrn2tAyFpx6cuis6nxHol3OhTl3Q4+9V8Qj4lt84mNBf7tB+rsepkBvPC3T FptTjMIDB8jb+/bnTEKbm/IxN8cidHT14D++md53PEzeHUefG+8FkE0NXcHlLhXaLV6DMPRVHZV 1fv+PweY19/hkBgWParwhXOPA2X8SLfDEYaUmVqVrxn+Iz6BawDCVuMuHLv2csGTseOeguaRt35 YyFL+sAIhzqANSmZoZNIDMzDPdt1axGhzZqH3A4jiVuA74ndQ4ohQcTZ4b7s2YFptR5gDRIGvG/ gGWgbNSViK7mQtpO9xEVDx/zxyjScpSI6khZoA3Ifg/uttLsyY+4ez+LrY7xoT1uZizutqIoAve wFTxbS+67ft6v9f X-Google-Smtp-Source: AGHT+IGZ3B5432SaPNyqFqHB8qmhvQ++xERCGkXNxQPpuc/WnJ4RkP797P+fFEz20VG7/sAZqlgjBQ== X-Received: by 2002:a05:6512:3f18:b0:595:8200:9f8f with SMTP id 2adb3069b0e04-596a3ebb042mr1044821e87.18.1763754351764; Fri, 21 Nov 2025 11:45:51 -0800 (PST) Received: from timur-HP-ProBook-440-14-inch-G9-Notebook-PC.. ([37.214.32.240]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5969dbd095dsm1852270e87.97.2025.11.21.11.45.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Nov 2025 11:45:51 -0800 (PST) From: timurgol007 To: tom@tromey.com, gdb-patches@sourceware.org Cc: timurgol007 Subject: [PATCH] gdb/record: Support fense.tso, zicond, bitmanip, sinval and zihintntl in RISC-V Date: Fri, 21 Nov 2025 22:45:44 +0300 Message-Id: <20251121194544.200440-1-timurgol007@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <87jz0bdkjf.fsf@tromey.com> References: <87jz0bdkjf.fsf@tromey.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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 Added record-full support for these extensions. As binutils part was merged, I think that this patch can be merged too, especially as Tom Tromey wrote: > I would normally approve this on the basis that (1) RISC-V reviews don't > really seem to be happening, (2) you think it is ok, and (3) it only > affects record/replay. But to have piece of mind, I want to explicitly get an "Approved-by" tag. --- gdb/riscv-tdep.c | 83 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 80 insertions(+), 3 deletions(-) diff --git a/gdb/riscv-tdep.c b/gdb/riscv-tdep.c index 76d10a3b298..e8745f143cc 100644 --- a/gdb/riscv-tdep.c +++ b/gdb/riscv-tdep.c @@ -5002,11 +5002,19 @@ class riscv_recorded_insn final || is_bge_insn (ival) || is_bltu_insn (ival) || is_bgeu_insn (ival) || is_fence_insn (ival) || is_pause_insn (ival) || is_fence_i_insn (ival) || is_wfi_insn (ival) - || is_sfence_vma_insn (ival)); + || is_sfence_vma_insn (ival) || is_fence_tso_insn (ival) + /* svinval */ + || is_sfence_inval_ir_insn (ival) || is_sfence_w_inval_insn (ival) + || is_sinval_vma_insn (ival) || is_hinval_gvma_insn (ival) + || is_hinval_vvma_insn (ival) || is_hfence_gvma_insn (ival) + || is_hfence_vvma_insn (ival) + /* zihintntl */ + || is_ntl_p1_insn (ival) || is_ntl_pall_insn (ival) + || is_ntl_s1_insn (ival) || is_ntl_all_insn (ival)); } /* Returns true if instruction needs only saving pc and rd. */ - static bool + bool need_save_rd (ULONGEST ival) noexcept { return (is_lui_insn (ival) || is_auipc_insn (ival) || is_jal_insn (ival) @@ -5039,7 +5047,47 @@ class riscv_recorded_insn final || is_flt_d_insn (ival) || is_fle_d_insn (ival) || is_fclass_d_insn (ival) || is_fcvt_w_d_insn (ival) || is_fcvt_wu_d_insn (ival) || is_fcvt_l_d_insn (ival) - || is_fcvt_lu_d_insn (ival) || is_fmv_x_d_insn (ival)); + || is_fcvt_lu_d_insn (ival) || is_fmv_x_d_insn (ival) + /* zicond */ + || is_czero_eqz_insn (ival) || is_czero_nez_insn (ival) + /* bitmanip */ + || (m_xlen == 8 && is_add_uw_insn (ival)) || is_andn_insn (ival) + || is_bclr_insn (ival) || (m_xlen == 8 && is_bclri_insn (ival)) + || (m_xlen == 4 && is_bclri_rv32_insn (ival)) || is_bext_insn (ival) + || (m_xlen == 8 && is_bexti_insn (ival)) + || (m_xlen == 4 && is_bexti_rv32_insn (ival)) || is_binv_insn (ival) + || (m_xlen == 8 && is_binvi_insn (ival)) + || (m_xlen == 4 && is_binvi_rv32_insn (ival)) + || is_brev8_insn (ival) || is_bset_insn (ival) + || (m_xlen == 8 && is_bseti_insn (ival)) + || (m_xlen == 4 && is_bseti_rv32_insn (ival)) + || is_clmul_insn (ival) || is_clmulh_insn (ival) + || is_clmulr_insn (ival) || is_clz_insn (ival) + || (m_xlen == 8 && is_clzw_insn (ival)) || is_cpop_insn (ival) + || (m_xlen == 8 && is_cpopw_insn (ival)) || is_ctz_insn (ival) + || (m_xlen == 8 && is_ctzw_insn (ival)) || is_max_insn (ival) + || is_maxu_insn (ival) || is_min_insn (ival) || is_minu_insn (ival) + || is_orc_b_insn (ival) || is_orn_insn (ival) || is_pack_insn (ival) + || is_packh_insn (ival) || (m_xlen == 8 && is_packw_insn (ival)) + || (m_xlen == 8 && is_rev8_insn (ival)) + || (m_xlen == 4 && is_rev8_rv32_insn (ival)) || is_rol_insn (ival) + || (m_xlen == 8 && is_rolw_insn (ival)) || is_ror_insn (ival) + || (m_xlen == 8 && is_rori_insn (ival)) + || (m_xlen == 4 && is_rori_rv32_insn (ival)) + || (m_xlen == 8 && is_roriw_insn (ival)) + || (m_xlen == 8 && is_rorw_insn (ival)) || is_sext_b_insn (ival) + || is_sext_h_insn (ival) || is_sh1add_insn (ival) + || (m_xlen == 8 && is_sh1add_uw_insn (ival)) + || is_sh2add_insn (ival) + || (m_xlen == 8 && is_sh2add_uw_insn (ival)) + || is_sh3add_insn (ival) + || (m_xlen == 8 && is_sh3add_uw_insn (ival)) + || (m_xlen == 8 && is_slli_uw_insn (ival)) + || (m_xlen == 4 && is_unzip_insn (ival)) || is_xnor_insn (ival) + || is_xperm4_insn (ival) || is_xperm8_insn (ival) + || is_zext_h_insn (ival) + || (m_xlen == 4 && is_zext_h_rv32_insn (ival)) + || (m_xlen == 4 && is_zip_insn (ival))); } /* Returns true if instruction successfully saved rd. */ @@ -5315,6 +5363,35 @@ class riscv_recorded_insn final && save_mem (addr + offset, 4)); } + /* c.zihintntl */ + if (is_c_ntl_p1_insn (ival) || is_c_ntl_pall_insn (ival) + || is_c_ntl_s1_insn (ival) || is_c_ntl_all_insn (ival)) + return true; + + /* c.bitmanip */ + if (is_c_lbu_insn (ival) || is_c_lhu_insn (ival) || is_c_lh_insn (ival)) + return save_reg (decode_crs2_short (ival)); + + if (is_c_sb_insn (ival)) + { + offset = ULONGEST{EXTRACT_ZCB_BYTE_UIMM (ival)}; + return (read_reg (decode_crs1_short (ival), addr) + && save_mem (addr + offset, 1)); + } + + if (is_c_sh_insn (ival)) + { + offset = ULONGEST{EXTRACT_ZCB_HALFWORD_UIMM (ival)}; + return (read_reg (decode_crs1_short (ival), addr) + && save_mem (addr + offset, 2)); + } + + if (is_c_zext_b_insn (ival) || is_c_sext_b_insn (ival) + || is_c_zext_h_insn (ival) || is_c_sext_h_insn (ival) + || is_c_not_insn (ival) || is_c_mul_insn (ival) + || (m_xlen == 8 && is_c_zext_w_insn (ival))) + return save_reg (decode_crs1_short (ival)); + warning (_("Currently this instruction with len 2(%s) is unsupported"), hex_string (ival)); return false; -- 2.34.1