From nobody Wed Feb 11 00:58:56 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 ARC-Seal: i=1; a=rsa-sha256; t=1697254829; cv=none; d=zohomail.com; s=zohoarc; b=GBI1g+nFzaKgVT/wRLJiNx+FSgbxRVO5eMlAd1EDQKKkRbrrfjhtx3j9fVGIcROUdhQmVH2q8ivJqouoE3+rIWGF/+NrxjMk6RJEs4LFH0cRNAC+na60CljVqlDiFetj//3kE5cl8GSoXhAve58vbvSdQhXUKUGI2AW4Imh7IcM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1697254829; 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:Message-Id:Reply-To:To; bh=21Z173hVFszR8s4nfjM3OYWaOyCmfZYL9fagBQvy26Q=; b=QZaCjzOdXGrYbWpytS06p0XllXivTvYEO3XlorOrMyBL+LL0+bZI7gWrOI1j2AAKcDUteKf80yFBPsKZp7uMi77UZbmdNgLNhz+g4/Qth7Ii1HNHrbMB5DU4nvDAd9oWWH+CJUG59x6j3VyDL4osehEWuff9yJHuEIFgXcOGG5o= 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 169725482965085.38632521880277; Fri, 13 Oct 2023 20:40:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qrVVI-0001lp-Im; Fri, 13 Oct 2023 23:39:52 -0400 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 1qrVVG-0001lD-WE for qemu-devel@nongnu.org; Fri, 13 Oct 2023 23:39:51 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qrVVF-0004by-Gb for qemu-devel@nongnu.org; Fri, 13 Oct 2023 23:39:50 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-690fe10b6a4so2264756b3a.3 for ; Fri, 13 Oct 2023 20:39:49 -0700 (PDT) Received: from localhost ([2400:4050:a840:1e00:78d2:b862:10a7:d486]) by smtp.gmail.com with UTF8SMTPSA id w26-20020aa79a1a000000b0069b772c4325sm2034789pfj.87.2023.10.13.20.39.46 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 13 Oct 2023 20:39:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=daynix-com.20230601.gappssmtp.com; s=20230601; t=1697254788; x=1697859588; 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=21Z173hVFszR8s4nfjM3OYWaOyCmfZYL9fagBQvy26Q=; b=RH1wjgxFlXNt1qpZ7JXhd6DXCvZSRypf5Q51ElvkS7p0jneeGM0efa6978n6/e99fN EVaEMJx4+ACeHxzVbIKDEheae/GveIE21ZSqeSpNMtlDDsvQkoMkH82rF7GgNQ0REHji oD9SN0izuNer3AgpXTX/uwWNUoBO5M56boQSS4ua8DrjhyY9Nq4ieXS27RyEMB/3vOZP iOAwvfT/yiITdBytcetZrSXZ1lPwg4XOPl694KqZGwKRXsQ4F7tkbaIiRxBDG+0xpHCR 7ZxlCq+z4/2cBQpkUskuG1gPkcbs6g799KfAKWwr2mw1PZjFpA5lW74ZcCE1ya4AmvX2 LBnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697254788; x=1697859588; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=21Z173hVFszR8s4nfjM3OYWaOyCmfZYL9fagBQvy26Q=; b=PgkyC4uZvO6+JiIkAfxDpunq92WLZd3QiskEzWZ4PK3MKYz2QZrl7O5OwVOqx4uHGT niG6Hx1Ga30ylmKw6Qx97au+tY+5wYQtSWG58k7COm76/PC5Bj6ttwlnS6b+/uTl6Ds4 gsw/+CDyUKcM73cVqiUAdCY6gUMDr4jg85CR/oI96n4nmaRKwEatlFAD1Sz3cYLf6I47 PM6g223bMGLYDkfieUYkNesGDSZtqjX2e/5juVl66zVOTj+N8Qu2wAaPHTnFEA0WD3i6 7zViBq/ZucT2nxpL17PC58rkUyxEMdHB16/HcDOTmwNG6fXCnzhppCX0nkRG49/eA19L 7E/A== X-Gm-Message-State: AOJu0YxBZUx/BZIqc9vi/rG/4Au6sH6jFnQ7qX4WWFaYrsata+ZIB7VJ hY14PLSVQ45VRVLWcU5kMMNUGA== X-Google-Smtp-Source: AGHT+IEwnvWopOyhvITDPAoAOtkI5nMVIw7gX9uxiykRZDxg7bXPOniH5q0kwqSEdsNE88z/U9zV0w== X-Received: by 2002:a05:6a00:1506:b0:690:cd6e:8d38 with SMTP id q6-20020a056a00150600b00690cd6e8d38mr35871625pfu.25.1697254788156; Fri, 13 Oct 2023 20:39:48 -0700 (PDT) From: Akihiko Odaki To: Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , Mikhail Tyutin , Aleksandr Anenkov , qemu-devel@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Akihiko Odaki , John Snow , Cleber Rosa Subject: [PATCH v12 01/18] gdbstub: Add num_regs member to GDBFeature Date: Sat, 14 Oct 2023 12:39:20 +0900 Message-ID: <20231014033940.15679-2-akihiko.odaki@daynix.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231014033940.15679-1-akihiko.odaki@daynix.com> References: <20231014033940.15679-1-akihiko.odaki@daynix.com> 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: none client-ip=2607:f8b0:4864:20::432; envelope-from=akihiko.odaki@daynix.com; helo=mail-pf1-x432.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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 @daynix-com.20230601.gappssmtp.com) X-ZM-MESSAGEID: 1697254830438100003 Currently the number of registers exposed to GDB is written as magic numbers in code. Derive the number of registers GDB actually see from XML files to replace the magic numbers in code later. Signed-off-by: Akihiko Odaki Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alex Benn=C3=A9e --- include/exec/gdbstub.h | 1 + scripts/feature_to_c.py | 46 +++++++++++++++++++++++++++++++++++++++-- 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/include/exec/gdbstub.h b/include/exec/gdbstub.h index 1a01c35f8e..a43aa34dad 100644 --- a/include/exec/gdbstub.h +++ b/include/exec/gdbstub.h @@ -13,6 +13,7 @@ typedef struct GDBFeature { const char *xmlname; const char *xml; + int num_regs; } GDBFeature; =20 =20 diff --git a/scripts/feature_to_c.py b/scripts/feature_to_c.py index bcbcb83beb..e04d6b2df7 100755 --- a/scripts/feature_to_c.py +++ b/scripts/feature_to_c.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # SPDX-License-Identifier: GPL-2.0-or-later =20 -import os, sys +import os, sys, xml.etree.ElementTree =20 def writeliteral(indent, bytes): sys.stdout.write(' ' * indent) @@ -39,10 +39,52 @@ def writeliteral(indent, bytes): with open(input, 'rb') as file: read =3D file.read() =20 + parser =3D xml.etree.ElementTree.XMLPullParser(['start', 'end']) + parser.feed(read) + events =3D parser.read_events() + event, element =3D next(events) + if event !=3D 'start': + sys.stderr.write(f'unexpected event: {event}\n') + exit(1) + if element.tag !=3D 'feature': + sys.stderr.write(f'unexpected start tag: {element.tag}\n') + exit(1) + + regnum =3D 0 + regnums =3D [] + tags =3D ['feature'] + for event, element in events: + if event =3D=3D 'end': + if element.tag !=3D tags[len(tags) - 1]: + sys.stderr.write(f'unexpected end tag: {element.tag}\n') + exit(1) + + tags.pop() + if element.tag =3D=3D 'feature': + break + elif event =3D=3D 'start': + if len(tags) < 2 and element.tag =3D=3D 'reg': + if 'regnum' in element.attrib: + regnum =3D int(element.attrib['regnum']) + + regnums.append(regnum) + regnum +=3D 1 + + tags.append(element.tag) + else: + raise Exception(f'unexpected event: {event}\n') + + if len(tags): + sys.stderr.write('unterminated feature tag\n') + exit(1) + + base_reg =3D min(regnums) + num_regs =3D max(regnums) - base_reg + 1 if len(regnums) else 0 + sys.stdout.write(' {\n') writeliteral(8, bytes(os.path.basename(input), 'utf-8')) sys.stdout.write(',\n') writeliteral(8, read) - sys.stdout.write('\n },\n') + sys.stdout.write(f',\n {num_regs},\n }},\n') =20 sys.stdout.write(' { NULL }\n};\n') --=20 2.42.0