From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id 39/pLsucemoNJxwAWB0awg (envelope-from ) for ; Mon, 10 Aug 2026 23:53:47 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=sifive.com header.i=@sifive.com header.a=rsa-sha256 header.s=google header.b=lJ/QJfYs; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id AFC1F1E166; Mon, 10 Aug 2026 23:53:47 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [IPv6:2620:52:6:3111::32]) (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 CB5FC1E033 for ; Mon, 10 Aug 2026 23:53:45 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 9A3D54BB58B2 for ; Tue, 11 Aug 2026 03:53:44 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9A3D54BB58B2 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=sifive.com header.i=@sifive.com header.a=rsa-sha256 header.s=google header.b=lJ/QJfYs Received: from mail-pf1-x434.google.com (mail-pf1-x434.google.com [IPv6:2607:f8b0:4864:20::434]) by sourceware.org (Postfix) with ESMTPS id B7F4D4BB5897 for ; Tue, 11 Aug 2026 03:53:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B7F4D4BB5897 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=sifive.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=sifive.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org B7F4D4BB5897 Authentication-Results: sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::434 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1786420397; cv=none; b=VlMqXvxkkxXvqJWr+DdjH0iois28bg6PrWVD1qSxf8jvNGuXIXwaSIPQww7VKf4Q+N/CH6Tidz8zsVelhj7QQeabuPTY50/p4jqtONgMi3B1G8tiP248B3gC4bEtCbiTHz/6Kbrny4jRBAethOz/xyHv/+or+Nx1mMdwxt3AfEc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1786420397; c=relaxed/simple; bh=79HGujYHXP4lQfwOlQxWBMV7dqzn2hA41iiVy8g+Tk8=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=CMCwW0qlG3mktgp0H9m2BTiVPWvLmLLaXW0pVoCsydgGCdDKSrxK4bNK1wsI1Bb/RPhVva21eCI1nrmtkZKAFg9FrcBtsIkdqEVOpO6Cs8WUirfIkeXfBVF3D/wMbm0TAQQW7xeV9TEnYWdxqLKUkJLZ/zavonwHTATPjUeUQaQ= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=sifive.com header.i=@sifive.com header.a=rsa-sha256 header.s=google header.b=lJ/QJfYs DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B7F4D4BB5897 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-84a4d8fd6ecso2906171b3a.1 for ; Mon, 10 Aug 2026 20:53:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1786420395; x=1787025195; darn=sourceware.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=EpbzFMcXJH/y0HoZVwcEtINFL6tzufLJf6Guj7iD1Jo=; b=lJ/QJfYsHfLzgDtLXFTuei4yRceWDEh2L0k2CpgpY2po32FVGHC74p202CVfQfCeFV Fo1BoTsK7hGYGQ/reeTwlWtdsgUepgY9rqcHUYmHgIPySQKlcYkEOJNIdf4ADOBFYNbo QGLEoRN+j6p7AdkU6hbOPRCbEoRP7pqITrAv44y6P6FaKP9ktKhoZxlGf4aDPLSEay1I zwqK8JOgNRflppqW4bjeEfkE7BKfODkqp6i3ZfKfC4WlgJ61nGgXtRlm51YKxEUnC3zf rR+PWRaIowQ0lk239dbE94KpITi1FKZKWPx/VnsyN/zJwlYa8+KmQWSktr0JdzKlWp8v e9+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786420395; x=1787025195; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=EpbzFMcXJH/y0HoZVwcEtINFL6tzufLJf6Guj7iD1Jo=; b=KDweZ1sJaXIyBoNS/zFV/na1Atc4hnrDWLJ+juEogNUCLoXUWe1hyhEhyqEQpDlFDz rhXZ5YLrQ3jCaiL4DjtNfCE79IaypIB9WpcwMXBJ8PPQ+N+FW9dQu9BH57q8KUf5JYia mg9JVJKo7ykoh1LUtouVVTkHx63ArwzE/JwcjUstRipwpEUu71TDwzUlQd0rCrkzZDIb 6O/lv8J2Dp+TMNIAHWdG53InTFcPjpM9Bhpg73yCnA/ohWzHnYgXmfpalyC8zgwadR6H yVqH2+XF+Q3i2HsbdUREPyqVKKgms9aSxES3mvMSYYMJqrNNdjSnDZEbg6APWdo1OnSl zUqA== X-Gm-Message-State: AOJu0YwJBbQRTn1m2VfU5k7bBrW4Zq97abuIAktyx5MFQokuY4cgZ2dl R1eecI6/3+/XJEQ9qig/20foe0BJXXzPgGp9ViAxEc9y4QoQSq0j8gzSTqdjWmpCasqhK5/7APo pjwfL6R3Dq3E7Q+owfwIUPfOw9maPleZj4zv0aM1jQPLNoLPEtTJHkUYUUJvI/EbYE+tS8dx+br lJ4bgxwuNXEzNgcygXXVB8VtOwSlzpMqgqXE6GkxRFjH59ZA4kyvnuIb16Vw== X-Gm-Gg: AR+sD12q2LjaHFwzwYw2sTY44BVpJkDf++P2/injQcDGaUFxF0LLN3JqJjPGS+VmgRz sj1dWtcjZnvSjdJHV/ZOiPNJASkS+n0S5sTiOozgIDxn+aJEBurPkhF1LrJv/nHmshza8iSIj5l Nocpg8JMsk8Gf0lNz7N8GZWuTovzH+K3x81wvPEPR3Owq9YkYAMyNwZTy8FOQTUIOjqZYYmMio6 icLnwbhucbkdg8+sVGT5zAWY2UJWXqgtDP+EPxXB0uHi8su/mwFBNJiTqshh0xs4oOCJracEat3 ZhlIR8GuEZlq/tVt60r9XGGqxDwFGxIoyUENK1LpeXpOshg2k+uF/R3dQXRzd1OY28uRzKsRuwI 13mpGw/C7S7WftM9dAIk+72ye4xbff4vOLLfEfnAyQgTVVryBF3swuiRzHLN0q/LAo3nw2bNnTc KbY6QnGBzFToVDBQ+GXo9cgcqSqNuS9l8kCTOFou4hgG7iBoL3afsM63GmyvVo6SkpT122OFUyv MrzILrxSmf2 X-Received: by 2002:a05:6a00:b83:b0:84e:244a:98e8 with SMTP id d2e1a72fcca58-84fa88633b7mr223606b3a.30.1786420395364; Mon, 10 Aug 2026 20:53:15 -0700 (PDT) Received: from Mac.localdomain ([219.69.235.123]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbed97c359csm112819a12.1.2026.08.10.20.53.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Aug 2026 20:53:14 -0700 (PDT) From: Jerry Zhang Jian To: gdb-patches@sourceware.org, kito.cheng@sifive.com Cc: Jerry Zhang Jian Subject: [PATCH] gdb: invalidate register cache after monitor commands Date: Tue, 11 Aug 2026 11:52:05 +0800 Message-ID: <20260811035205.26485-1-jerry.zhangjian@sifive.com> X-Mailer: git-send-email 2.53.0 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 A monitor command is opaque to GDB: the stub can halt, resume, or reset the target behind GDB's back, even if it later reports an error, and the remote protocol has no way to tell GDB that happened. For example, "monitor reset halt" was leaving GDB reporting the pre-reset $pc until a later step/continue forced a refetch. Invalidate the register cache after every monitor command via SCOPE_EXIT, so it still runs on the error path. Scope it to the inferior's own process_stratum_target, matching registers_changed_thread() and the target_wait()/target_stop() lookup pattern elsewhere in this file, rather than wiping every inferior's cache with registers_changed(). Hold a strong reference to the target across the call in case it gets unpushed/detached, the same idiom used in target_detach(). Signed-off-by: Jerry Zhang Jian --- gdb/target.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/gdb/target.c b/gdb/target.c index 5d937f3ae85..5c4684d81b5 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -4262,6 +4262,18 @@ default_rcmd (struct target_ops *self, const char *command, static void do_monitor_command (const char *cmd, int from_tty) { + process_target_ops_ref proc_target_ref; + if (process_stratum_target *proc_target + = current_inferior ()->process_target ()) + proc_target_ref = process_target_ops_ref::new_reference (proc_target); + + /* Monitor commands may change target state behind GDB's back. */ + SCOPE_EXIT + { + if (proc_target_ref != nullptr) + registers_changed_ptid (proc_target_ref.get (), minus_one_ptid); + }; + target_rcmd (cmd, gdb_stdtarg); } -- 2.53.0