[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 08/23] gdbstub: Add num_regs member to GDBFeature
|
From: |
Alex Bennée |
|
Subject: |
[PULL 08/23] gdbstub: Add num_regs member to GDBFeature |
|
Date: |
Tue, 7 Nov 2023 14:23:39 +0000 |
From: Akihiko Odaki <akihiko.odaki@daynix.com>
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 <akihiko.odaki@daynix.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20231025093128.33116-2-akihiko.odaki@daynix.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20231106185112.2755262-9-alex.bennee@linaro.org>
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;
diff --git a/scripts/feature_to_c.py b/scripts/feature_to_c.py
index bcbcb83beb..e04d6b2df7 100644
--- 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
-import os, sys
+import os, sys, xml.etree.ElementTree
def writeliteral(indent, bytes):
sys.stdout.write(' ' * indent)
@@ -39,10 +39,52 @@ def writeliteral(indent, bytes):
with open(input, 'rb') as file:
read = file.read()
+ parser = xml.etree.ElementTree.XMLPullParser(['start', 'end'])
+ parser.feed(read)
+ events = parser.read_events()
+ event, element = next(events)
+ if event != 'start':
+ sys.stderr.write(f'unexpected event: {event}\n')
+ exit(1)
+ if element.tag != 'feature':
+ sys.stderr.write(f'unexpected start tag: {element.tag}\n')
+ exit(1)
+
+ regnum = 0
+ regnums = []
+ tags = ['feature']
+ for event, element in events:
+ if event == 'end':
+ if element.tag != tags[len(tags) - 1]:
+ sys.stderr.write(f'unexpected end tag: {element.tag}\n')
+ exit(1)
+
+ tags.pop()
+ if element.tag == 'feature':
+ break
+ elif event == 'start':
+ if len(tags) < 2 and element.tag == 'reg':
+ if 'regnum' in element.attrib:
+ regnum = int(element.attrib['regnum'])
+
+ regnums.append(regnum)
+ regnum += 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 = min(regnums)
+ num_regs = 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')
sys.stdout.write(' { NULL }\n};\n')
--
2.39.2
- [PULL 00/23] Final test, gdbstub, plugin and gitdm updates for 8.2, Alex Bennée, 2023/11/07
- [PULL 04/23] target/arm: hide all versions of DBGD[RS]AR from gdbstub, Alex Bennée, 2023/11/07
- [PULL 03/23] target/arm: mark the 32bit alias of PAR when LPAE enabled, Alex Bennée, 2023/11/07
- [PULL 02/23] gdb-xml: fix duplicate register in arm-neon.xml, Alex Bennée, 2023/11/07
- [PULL 01/23] default-configs: Add TARGET_XML_FILES definition, Alex Bennée, 2023/11/07
- [PULL 05/23] target/arm: hide aliased MIDR from gdbstub, Alex Bennée, 2023/11/07
- [PULL 10/23] gdbstub: Introduce GDBFeatureBuilder, Alex Bennée, 2023/11/07
- [PULL 08/23] gdbstub: Add num_regs member to GDBFeature,
Alex Bennée <=
- [PULL 12/23] configure: tell meson and contrib_plugins about DLLTOOL, Alex Bennée, 2023/11/07
- [PULL 06/23] tests/tcg: add an explicit gdbstub register tester, Alex Bennée, 2023/11/07
[PULL 14/23] plugins: make test/example plugins work on windows, Alex Bennée, 2023/11/07
[PULL 13/23] plugins: add dllexport and dllimport to api funcs, Alex Bennée, 2023/11/07
[PULL 15/23] plugins: disable lockstep plugin on windows, Alex Bennée, 2023/11/07
[PULL 11/23] cpu: Call plugin hooks only when ready, Alex Bennée, 2023/11/07