From nobody Wed Feb 11 00:56:40 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=1697116070; cv=none; d=zohomail.com; s=zohoarc; b=Ki/m3q44SSCi8WY5J0rfZ0V7w0ETnTSDiWr/HGJ71rgl9OfZlroDnmzzQeFe39trQ7Dgcn3pKVhDg4S3dbozeMeMq2F9hT9nlkpK7VnfPa92F/+eBDjT2u0ISIP8wtXuPHJl/NK2Yi/JvZFf5UZYQCiUYJUXkjm1lWe0Qe7hSDQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1697116070; 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=Rf+wxdqSUrGkvLwGOdXLWvktRELQ0iWVHkdiN9asnjZjMbCiLLnvnOQB47agvo5uFMnrLqEzJhpKkwH4PBJ+IFZDJQlewdqcOeVSzsYzcjPbq94cWCrdWFjC3AeLkZIupJHlDPu+zz89QwlTrvZScx4MP4cB7N6tiahaaSOvues= 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 16971160702061015.4691766652487; Thu, 12 Oct 2023 06:07:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qqvOc-0001aU-E4; Thu, 12 Oct 2023 09:06:34 -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 1qqvOZ-0001aG-MO for qemu-devel@nongnu.org; Thu, 12 Oct 2023 09:06:32 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qqvOY-00059k-3o for qemu-devel@nongnu.org; Thu, 12 Oct 2023 09:06:31 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-1bdf4752c3cso6774665ad.2 for ; Thu, 12 Oct 2023 06:06:29 -0700 (PDT) Received: from localhost ([2400:4050:a840:1e00:78d2:b862:10a7:d486]) by smtp.gmail.com with UTF8SMTPSA id l2-20020a170902ec0200b001b7fd27144dsm1930806pld.40.2023.10.12.06.06.26 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 12 Oct 2023 06:06:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=daynix-com.20230601.gappssmtp.com; s=20230601; t=1697115989; x=1697720789; 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=3IXAfbupxTulKdwanSrT9oWWed+Oa3WmEEo7Qoe3LUBfd1T5iWR/AG19u/MQFUVDPK C5FIrfawzVkqUG8nW9ZArL8tctM1W+KUpSRtdgJIPVmt/giH9TGunerEkIsy/CLCCd/q taq4P5d06dE8PO4SKak3H1OEWNeOXhJGbz7cNibAzoFicC7/FsVqeK9SSg7tkmBIppax 1ac60AZyhSTii/+cJKEyE3MzZh+aQfrPgDiwTCARKjr1a3y8J3iCWY58bbHlrj/Stv2X vJdZ5Ujk66vPUynxhMDXxYN3x2lRaf40q2S0PqcqLdgJdLLCfpvQRXoA5w8U/9w50ud0 0QoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697115989; x=1697720789; 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=uXGIceSwhP0bBPUVDzwO6yHzdfRoBkPaMroX8hAqdvZd7uhSrRFswAcOT6uQsZ6Ml5 PLbHQzv0GHG/Sg5jtbcbin6/K34R8p7poU4sdFRCJ2e3KHHhIO9mArTxRIDD/YHbjcc3 V5hKthd1VnOnX+8dNnrYL3+KjDEFkAUq49kYKpkF96vY80R8xc8vq4Mnd9VtzU1fb4hl emvYofTy8spg90JGujnk/fFRPC6D432PL3yMp5PFO99EReA7XC2CLsGAaSZyLHzAqcqk 0PcXFmI9GYn7XZa1cM8ZkYkc5c11hNS2yC45aedkJpRxRhBG8RVtpuGsqwLSp9vM5atZ 7NDg== X-Gm-Message-State: AOJu0YzhaY1Y/L68p7NftHKI60Vj1yH8+7rLLvjaoYyNhRL6tbHhzpYz A3mB/PmMC3V3EqRVVmpfehiwnw== X-Google-Smtp-Source: AGHT+IHNVJOCqTXTUaC1RMTB0b3u1ZL0bMNjeDZ+hLJBK+i7dfp9vqXN3FmxSTiHk/J/73du/V97Sw== X-Received: by 2002:a17:902:e888:b0:1c7:37e2:13fe with SMTP id w8-20020a170902e88800b001c737e213femr23759363plg.2.1697115988710; Thu, 12 Oct 2023 06:06:28 -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 v11 01/18] gdbstub: Add num_regs member to GDBFeature Date: Thu, 12 Oct 2023 22:05:55 +0900 Message-ID: <20231012130616.7941-2-akihiko.odaki@daynix.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231012130616.7941-1-akihiko.odaki@daynix.com> References: <20231012130616.7941-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::630; envelope-from=akihiko.odaki@daynix.com; helo=mail-pl1-x630.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: 1697116072386100009 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