From: "Alex Bennée" <alex.bennee@linaro.org>
To: qemu-devel@nongnu.org
Cc: "Zhao Liu" <zhao1.liu@intel.com>,
"Eduardo Habkost" <eduardo@habkost.net>,
"Pierrick Bouvier" <pierrick.bouvier@linaro.org>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Yanan Wang" <wangyanan55@huawei.com>,
"John Snow" <jsnow@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
devel@lists.libvirt.org, "Marcelo Tosatti" <mtosatti@redhat.com>,
"Riku Voipio" <riku.voipio@iki.fi>,
"Wainer dos Santos Moschetta" <wainersm@redhat.com>,
"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Mahmoud Mandour" <ma.mandourr@gmail.com>,
"Laurent Vivier" <laurent@vivier.eu>,
"Jiaxun Yang" <jiaxun.yang@flygoat.com>,
"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Alexandre Iooss" <erdnaxe@crans.org>,
qemu-arm@nongnu.org, "Daniel P. Berrangé" <berrange@redhat.com>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Cleber Rosa" <crosa@redhat.com>,
kvm@vger.kernel.org, "Beraldo Leal" <bleal@redhat.com>,
"Thomas Huth" <thuth@redhat.com>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Gustavo Romero" <gustavo.romero@linaro.org>
Subject: [PATCH v3 15/18] testing: Enhance gdb probe script
Date: Wed, 23 Oct 2024 12:34:03 +0100 [thread overview]
Message-ID: <20241023113406.1284676-16-alex.bennee@linaro.org> (raw)
In-Reply-To: <20241023113406.1284676-1-alex.bennee@linaro.org>
From: Gustavo Romero <gustavo.romero@linaro.org>
Use list and set comprehension to simplify code. Also, gently handle
invalid gdb filenames.
Signed-off-by: Gustavo Romero <gustavo.romero@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-Id: <20241022105614.839199-16-alex.bennee@linaro.org>
Message-Id: <20241015145848.387281-1-gustavo.romero@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
scripts/probe-gdb-support.py | 75 +++++++++++++++++++-----------------
1 file changed, 39 insertions(+), 36 deletions(-)
diff --git a/scripts/probe-gdb-support.py b/scripts/probe-gdb-support.py
index 6dc58d06c7..6bcadce150 100644
--- a/scripts/probe-gdb-support.py
+++ b/scripts/probe-gdb-support.py
@@ -19,58 +19,61 @@
import argparse
import re
-from subprocess import check_output, STDOUT
+from subprocess import check_output, STDOUT, CalledProcessError
+import sys
-# mappings from gdb arch to QEMU target
-mappings = {
- "alpha" : "alpha",
+# Mappings from gdb arch to QEMU target
+MAP = {
+ "alpha" : ["alpha"],
"aarch64" : ["aarch64", "aarch64_be"],
- "armv7": "arm",
+ "armv7": ["arm"],
"armv8-a" : ["aarch64", "aarch64_be"],
- "avr" : "avr",
+ "avr" : ["avr"],
# no hexagon in upstream gdb
- "hppa1.0" : "hppa",
- "i386" : "i386",
- "i386:x86-64" : "x86_64",
- "Loongarch64" : "loongarch64",
- "m68k" : "m68k",
- "MicroBlaze" : "microblaze",
+ "hppa1.0" : ["hppa"],
+ "i386" : ["i386"],
+ "i386:x86-64" : ["x86_64"],
+ "Loongarch64" : ["loongarch64"],
+ "m68k" : ["m68k"],
+ "MicroBlaze" : ["microblaze"],
"mips:isa64" : ["mips64", "mips64el"],
- "or1k" : "or1k",
- "powerpc:common" : "ppc",
+ "or1k" : ["or1k"],
+ "powerpc:common" : ["ppc"],
"powerpc:common64" : ["ppc64", "ppc64le"],
- "riscv:rv32" : "riscv32",
- "riscv:rv64" : "riscv64",
- "s390:64-bit" : "s390x",
+ "riscv:rv32" : ["riscv32"],
+ "riscv:rv64" : ["riscv64"],
+ "s390:64-bit" : ["s390x"],
"sh4" : ["sh4", "sh4eb"],
- "sparc": "sparc",
- "sparc:v8plus": "sparc32plus",
- "sparc:v9a" : "sparc64",
+ "sparc": ["sparc"],
+ "sparc:v8plus": ["sparc32plus"],
+ "sparc:v9a" : ["sparc64"],
# no tricore in upstream gdb
"xtensa" : ["xtensa", "xtensaeb"]
}
+
def do_probe(gdb):
- gdb_out = check_output([gdb,
- "-ex", "set architecture",
- "-ex", "quit"], stderr=STDOUT)
+ try:
+ gdb_out = check_output([gdb,
+ "-ex", "set architecture",
+ "-ex", "quit"], stderr=STDOUT, encoding="utf-8")
+ except (OSError) as e:
+ sys.exit(e)
+ except CalledProcessError as e:
+ sys.exit(f'{e}. Output:\n\n{e.output}')
+
+ found_gdb_archs = re.search(r'Valid arguments are (.*)', gdb_out)
- m = re.search(r"Valid arguments are (.*)",
- gdb_out.decode("utf-8"))
+ targets = set()
+ if found_gdb_archs:
+ gdb_archs = found_gdb_archs.group(1).split(", ")
+ mapped_gdb_archs = [arch for arch in gdb_archs if arch in MAP]
- valid_arches = set()
+ targets = {target for arch in mapped_gdb_archs for target in MAP[arch]}
- if m.group(1):
- for arch in m.group(1).split(", "):
- if arch in mappings:
- mapping = mappings[arch]
- if isinstance(mapping, str):
- valid_arches.add(mapping)
- else:
- for entry in mapping:
- valid_arches.add(entry)
+ # QEMU targets
+ return targets
- return valid_arches
def main() -> None:
parser = argparse.ArgumentParser(description='Probe GDB Architectures')
--
2.39.5
next prev parent reply other threads:[~2024-10-23 11:45 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-23 11:33 [PATCH v3 00/18] maintainer updates (testing, gdbstub, plugins) pre-PR Alex Bennée
2024-10-23 11:33 ` [PATCH v3 01/18] tests/docker: Fix microblaze atomics Alex Bennée
2024-10-23 11:33 ` [PATCH v3 02/18] tests/docker: add NOFETCH env variable for testing Alex Bennée
2024-10-23 11:33 ` [PATCH v3 03/18] MAINTAINERS: mention my testing/next tree Alex Bennée
2024-10-23 11:33 ` [PATCH v3 04/18] meson: hide tsan related warnings Alex Bennée
2024-10-23 11:33 ` [PATCH v3 05/18] docs/devel: update tsan build documentation Alex Bennée
2024-10-23 11:33 ` [PATCH v3 06/18] scripts/ci: remove architecture checks for build-environment updates Alex Bennée
2024-10-23 11:33 ` [PATCH v3 07/18] tests/tcg/x86_64: Add cross-modifying code test Alex Bennée
2024-10-23 11:33 ` [PATCH v3 08/18] accel/tcg: add tracepoints for cpu_loop_exit_atomic Alex Bennée
2024-10-23 11:33 ` [PATCH v3 09/18] dockerfiles: fix default targets for debian-loongarch-cross Alex Bennée
2024-10-23 11:33 ` [PATCH v3 10/18] gitlab: make check-[dco|patch] a little more verbose Alex Bennée
2024-10-23 13:14 ` Daniel P. Berrangé
2024-10-23 11:33 ` [PATCH v3 11/18] MAINTAINERS: mention my gdbstub/next tree Alex Bennée
2024-10-23 11:34 ` [PATCH v3 12/18] config/targets: update aarch64_be-linux-user gdb XML list Alex Bennée
2024-10-23 11:34 ` [PATCH v3 13/18] tests/tcg: enable basic testing for aarch64_be-linux-user Alex Bennée
2024-10-23 11:34 ` [PATCH v3 14/18] tests/tcg/aarch64: Use raw strings for regexes in test-mte.py Alex Bennée
2024-10-23 11:34 ` Alex Bennée [this message]
2024-10-23 11:34 ` [PATCH v3 16/18] MAINTAINERS: mention my plugins/next tree Alex Bennée
2024-10-23 11:34 ` [PATCH v3 17/18] contrib/plugins: remove Makefile for contrib/plugins Alex Bennée
2024-10-23 11:34 ` [PATCH v3 18/18] plugins: fix qemu_plugin_reset Alex Bennée
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241023113406.1284676-16-alex.bennee@linaro.org \
--to=alex.bennee@linaro.org \
--cc=berrange@redhat.com \
--cc=bleal@redhat.com \
--cc=crosa@redhat.com \
--cc=devel@lists.libvirt.org \
--cc=edgar.iglesias@gmail.com \
--cc=eduardo@habkost.net \
--cc=erdnaxe@crans.org \
--cc=gustavo.romero@linaro.org \
--cc=jiaxun.yang@flygoat.com \
--cc=jsnow@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=laurent@vivier.eu \
--cc=ma.mandourr@gmail.com \
--cc=marcandre.lureau@redhat.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=mtosatti@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@linaro.org \
--cc=pierrick.bouvier@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=riku.voipio@iki.fi \
--cc=thuth@redhat.com \
--cc=wainersm@redhat.com \
--cc=wangyanan55@huawei.com \
--cc=zhao1.liu@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).