From nobody Sun Apr 12 07:21:51 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1771282433; cv=none; d=zohomail.com; s=zohoarc; b=WhpeO2f26Ya23geVPq4UA2GIc90KuVDbDoXCrmxPOYpBJEuP+absDlIhjTyUMyx9JJvM398tGnca9FB9Y3YK0AXOpyXBj2h39rs6QeQdxeiFAUNv8lzhyKIBjbydPnYHgYco/8khetGK/SQZ6S1s0ANJunyR8WGjdZx9iCCmc+0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771282433; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=vJoFwYWGmCgQKszD1zzpvRarXGHFGfsi9ungJP2eo5s=; b=iGs7RWwy36kpunhmq9e4CJAmk4fw1QjpjaB2Wm3tfC64DU6y8KWiB8AnMwDJBY5ThRbXpspt1Hd0ju77h5afjPh5AVetj6QzP21kvCeKAZMbeZHUeqHfBb3aOgJz/P97ezHt3f+cF+rgtcuPn45z6JuFpxZLrUqq7KzWqXuSlqo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177128243316284.99982402715852; Mon, 16 Feb 2026 14:53:53 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vs7T6-0002jv-AM; Mon, 16 Feb 2026 17:53:28 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vs7T4-0002jJ-RM for qemu-devel@nongnu.org; Mon, 16 Feb 2026 17:53:26 -0500 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vs7T3-0006Y8-6S for qemu-devel@nongnu.org; Mon, 16 Feb 2026 17:53:26 -0500 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-483770e0b25so31191095e9.0 for ; Mon, 16 Feb 2026 14:53:24 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4834d82a4c4sm762581625e9.10.2026.02.16.14.53.21 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 16 Feb 2026 14:53:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1771282403; x=1771887203; darn=nongnu.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=vJoFwYWGmCgQKszD1zzpvRarXGHFGfsi9ungJP2eo5s=; b=J4kdCcNAJ7BxpaTIWncQRh/9nxFU2g4E18+Tf1PC25V5g2UYd6mBVyHpEzAmUMPGq1 7ju1uPsrVXyV+MJXXi8TtC0V/K4erEOqlVo6DSOzjydVyQl6/+JQj0Zj96Awe7QMuRHI cYvXardVSzYHMgLh37QEX6L5FY885LE0puii/4ZZ9+Cm7rsvtEsPRV8rub2CBm9U6t8i EZ25Egx/G0SsqM9DXJmwoB3fdtx3tU/iWA8lEMsVnNECL+RZoDIpuxcPzsFUDndmQKgI leCr1hN5IGtaSdIKfNxG1J914+uNho/IU0tG4DBfS6jmeLQdrkzx5yGj1dytiAtg1LsU d4jA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771282403; x=1771887203; 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=vJoFwYWGmCgQKszD1zzpvRarXGHFGfsi9ungJP2eo5s=; b=b2x1BNhdLEHeJl0DEmtnFIU7S7tppe8Neb3kZpxZOh67tsg1n4lHTt7aMXqUdC8hTf FILc5zhCWEIbLpUNynhuv0wVMTQCcPP9GWefytoltSLxfsNIsLi+tSQdP6p4FsFnRpK+ XlQ8u/I3dfkE38Eqe4zgDjhGyY3kbCl6tqCxWt+NnuDdfBI3poVyrP4/85YJayiFAFDK FeTrrWH5TzundGu73ANnkUjvGJ7tK4MV0hs27RNlmp4SzokHJljgB/XKsVz+Nib1JD5T oUPmL0I6ic97d/edIXNUHCVREWEabwNo15vuNpEDYncLyLdkXoHxbhxCmcwB7tKuEG6y ZcUQ== X-Gm-Message-State: AOJu0YzsMAEXsedO6mpgHfaLSslmBkmfPwIpzI2FV+uuNDWNz9l3H0u+ UbhMLy1pd6QAK+UKk6ul7Fny0TdD2pHVd1ODpOeVGNF37XZsxSLfBUsHNLrh8JDUogqWA7WgTKu aXdUVL2Q= X-Gm-Gg: AZuq6aI31Gb/YEIKHHoIA4CA+wNqsh5jFcIymZaDndaT5pAIlwOhdFrFxUR5JSSsRI4 UOVzFZbEbrgciVIJJ6dQ1oOAKbMaameCrFot0qVeJDb6NMQCQr0j1qzz/IrWJ7CrZ1l1pOM6/fk bRE/ydpjy7uTH8K2aVLH5fyOAnPkj7pI6EzxJX7m6tLJ0ThMqz0V5/YEWFkpSCFOaD+BW6VlRca 8liEUChleveDfv6+Rycde+d9WuronEwNjhcGD87rekIyA0KNKifEhqkd1FXMuljOhwEX9DxBbg7 0D8B+FtlPsHyEIYYHGQKs3ySLthMCc5GavIhmGr0dvU2AkJulr5IP9V8uNeEaZsB/dYoao8s07v d+DjJQ4K0IJyp3e96TwgVRMx2fE6abfWqc9QSCy2vmLv06FNDzQTWEmpnByNHamg4uJyVbkLRke YvoG1AV/iZDC4pGseTmdcUYz+fZ88ifv1hToTYwzwf05V7VFeaCv243UXxWVYhTYH55XVjvRKTn EwiPTgWdlw= X-Received: by 2002:a05:600c:c0ca:b0:483:78c5:d743 with SMTP id 5b1f17b1804b1-48378c5d9fcmr134497795e9.28.1771282403164; Mon, 16 Feb 2026 14:53:23 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Laurent Vivier , "Dr. David Alan Gilbert" , Nicholas Piggin , Chinmay Rath , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Zhao Liu , Mark Cave-Ayland , Pierrick Bouvier , Artyom Tarasenko , Akihiko Odaki , Gustavo Romero , Paolo Bonzini , unisono@quyllur.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-ppc@nongnu.org Subject: [PATCH 07/11] monitor/hmp: Handle gdb-xml exposed registers via gdb_get_register() Date: Mon, 16 Feb 2026 23:52:23 +0100 Message-ID: <20260216225228.53959-8-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260216225228.53959-1-philmd@linaro.org> References: <20260216225228.53959-1-philmd@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32d; envelope-from=philmd@linaro.org; helo=mail-wm1-x32d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1771282436057154100 Implement the gdb_get_register() helper and call it before the regular get_monitor_def() one. Registers is exposed via the GDB XML files will be directly handled, possibily allowing new registers added to XML files to be automatically accessible in QEMU monitor. All targets having GDB XML files can now be used within the monitor. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Dr. David Alan Gilbert --- monitor/hmp.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/monitor/hmp.c b/monitor/hmp.c index 0a5bbf82197..0e5913fabb1 100644 --- a/monitor/hmp.c +++ b/monitor/hmp.c @@ -27,14 +27,18 @@ #include "hw/core/qdev.h" #include "monitor-internal.h" #include "monitor/hmp.h" +#include "monitor/hmp-target.h" #include "qobject/qdict.h" #include "qobject/qnum.h" +#include "qemu/bswap.h" #include "qemu/config-file.h" #include "qemu/ctype.h" #include "qemu/cutils.h" #include "qemu/log.h" #include "qemu/option.h" +#include "qemu/target-info.h" #include "qemu/units.h" +#include "exec/gdbstub.h" #include "system/block-backend.h" #include "trace.h" =20 @@ -306,6 +310,46 @@ void hmp_help_cmd(Monitor *mon, const char *name) free_cmdline_args(args, nb_args); } =20 +/* + * Set @pval to the value in the register identified by @name. + * return %true if the register is found, %false otherwise. + */ +static bool gdb_get_register(Monitor *mon, int64_t *pval, const char *name) +{ + g_autoptr(GArray) regs =3D NULL; + CPUState *cs =3D mon_get_cpu(mon); + + if (cs =3D=3D NULL) { + return false; + } + + regs =3D gdb_get_register_list(cs); + + for (int i =3D 0; i < regs->len; i++) { + GDBRegDesc *reg =3D &g_array_index(regs, GDBRegDesc, i); + g_autoptr(GByteArray) buf =3D NULL; + int reg_size; + + if (!reg->name || g_strcmp0(name, reg->name)) { + continue; + } + + buf =3D g_byte_array_new(); + reg_size =3D gdb_read_register(cs, buf, reg->gdb_reg); + if (reg_size > sizeof(*pval)) { + return false; + } + + if (target_big_endian()) { + *pval =3D ldn_be_p(buf->data, reg_size); + } else { + *pval =3D ldn_le_p(buf->data, reg_size); + } + return true; + } + return false; +} + /*******************************************************************/ =20 static const char *pch; @@ -338,7 +382,6 @@ static int64_t expr_unary(Monitor *mon) { int64_t n; char *p; - int ret; =20 switch (*pch) { case '+': @@ -393,8 +436,8 @@ static int64_t expr_unary(Monitor *mon) pch++; } *q =3D 0; - ret =3D get_monitor_def(mon, ®, buf); - if (ret < 0) { + if (!gdb_get_register(mon, ®, buf) + && get_monitor_def(mon, ®, buf) < 0) { expr_error(mon, "unknown register"); } n =3D reg; --=20 2.52.0