* [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins)
@ 2023-10-09 16:40 Alex Bennée
2023-10-09 16:40 ` [PATCH 01/25] tests/avocado: update firmware to enable OpenBSD test on sbsa-ref Alex Bennée
` (24 more replies)
0 siblings, 25 replies; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:40 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé
Hi,
This wraps up my current testing, gdbstub and plugin trees in an
attempt to do my part to reduce the qemu-devel fire hose. It is pretty
much the same as the September tree except:
- dropped RFC patches
- dropped CRIS deprecation patches
- dropped makefile dependency tweaks
- tweaked RUNC as per Paolo's suggestion
- used later version of Marcin's sbsa-ref changes
- added a FLAKY_TEST removal
- added tags as appropriate
Now I'm using the pre-PR subject to give people a last chance to
object before I roll a proper pull request later this week.
The following still could do with review:
contrib/plugins: fix coverity warning in hotblocks
contrib/plugins: fix coverity warning in lockstep
contrib/plugins: fix coverity warning in cache
configure: remove gcc version suffixes
configure: allow user to override docker engine
tests/docker: make docker engine choice entirely configure driven
tests/avocado: remove flaky test marking for test_sbsaref_edk2_firmware
Akihiko Odaki (12):
gdbstub: Fix target_xml initialization
gdbstub: Fix target.xml response
plugins: Check if vCPU is realized
contrib/plugins: Use GRWLock in execlog
gdbstub: Introduce GDBFeature structure
target/arm: Move the reference to arm-core.xml
hw/core/cpu: Return static value with gdb_arch_name()
gdbstub: Use g_markup_printf_escaped()
target/arm: Remove references to gdb_has_xml
target/ppc: Remove references to gdb_has_xml
gdbstub: Remove gdb_has_xml variable
gdbstub: Replace gdb_regs with an array
Alex Bennée (9):
tests/avocado: remove flaky test marking for
test_sbsaref_edk2_firmware
tests/lcitool: add swtpm to the package list
gitlab: shuffle some targets and reduce avocado noise
tests/docker: make docker engine choice entirely configure driven
configure: allow user to override docker engine
configure: remove gcc version suffixes
contrib/plugins: fix coverity warning in cache
contrib/plugins: fix coverity warning in lockstep
contrib/plugins: fix coverity warning in hotblocks
Marcin Juszkiewicz (1):
tests/avocado: update firmware to enable OpenBSD test on sbsa-ref
Matt Borgerson (1):
plugins: Set final instruction count in plugin_gen_tb_end
Richard Henderson (2):
accel/tcg: Add plugin_enabled to DisasContextBase
target/sh4: Disable decode_gusa when plugins enabled
MAINTAINERS | 2 +-
configure | 13 ++-
meson.build | 2 +-
gdbstub/internals.h | 2 -
include/exec/gdbstub.h | 17 ++--
include/exec/plugin-gen.h | 4 +-
include/exec/translator.h | 2 +
include/hw/core/cpu.h | 4 +-
target/ppc/internal.h | 2 +-
accel/tcg/plugin-gen.c | 6 +-
accel/tcg/translator.c | 3 +-
contrib/plugins/cache.c | 18 ++--
contrib/plugins/execlog.c | 16 ++--
contrib/plugins/hotblocks.c | 2 +-
contrib/plugins/lockstep.c | 13 ++-
gdbstub/gdbstub.c | 95 +++++++++----------
gdbstub/softmmu.c | 2 +-
plugins/core.c | 2 +-
stubs/gdbstub.c | 6 +-
target/arm/cpu.c | 9 +-
target/arm/cpu64.c | 4 +-
target/arm/gdbstub.c | 32 +------
target/i386/cpu.c | 6 +-
target/loongarch/cpu.c | 8 +-
target/ppc/gdbstub.c | 24 +----
target/riscv/cpu.c | 6 +-
target/s390x/cpu.c | 4 +-
target/sh4/translate.c | 41 +++++---
target/tricore/cpu.c | 4 +-
.gitlab-ci.d/buildtest.yml | 15 ++-
.gitlab-ci.d/cirrus/macos-12.vars | 2 +-
scripts/feature_to_c.py | 48 ++++++++++
scripts/feature_to_c.sh | 69 --------------
tests/avocado/machine_aarch64_sbsaref.py | 71 +++++++++++---
tests/docker/Makefile.include | 9 +-
tests/docker/dockerfiles/alpine.docker | 1 +
tests/docker/dockerfiles/centos8.docker | 1 +
.../dockerfiles/debian-amd64-cross.docker | 1 +
tests/docker/dockerfiles/debian-amd64.docker | 1 +
.../dockerfiles/debian-arm64-cross.docker | 1 +
.../dockerfiles/debian-armhf-cross.docker | 1 +
.../dockerfiles/debian-ppc64el-cross.docker | 1 +
.../dockerfiles/debian-s390x-cross.docker | 1 +
.../dockerfiles/fedora-win32-cross.docker | 1 +
.../dockerfiles/fedora-win64-cross.docker | 1 +
tests/docker/dockerfiles/fedora.docker | 1 +
tests/docker/dockerfiles/opensuse-leap.docker | 1 +
tests/docker/dockerfiles/ubuntu2204.docker | 1 +
tests/lcitool/libvirt-ci | 2 +-
tests/lcitool/projects/qemu.yml | 1 +
50 files changed, 305 insertions(+), 274 deletions(-)
create mode 100755 scripts/feature_to_c.py
delete mode 100644 scripts/feature_to_c.sh
--
2.39.2
^ permalink raw reply [flat|nested] 37+ messages in thread
* [PATCH 01/25] tests/avocado: update firmware to enable OpenBSD test on sbsa-ref
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
@ 2023-10-09 16:40 ` Alex Bennée
2023-10-09 16:40 ` [PATCH 02/25] tests/avocado: remove flaky test marking for test_sbsaref_edk2_firmware Alex Bennée
` (23 subsequent siblings)
24 siblings, 0 replies; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:40 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé
From: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
Update prebuilt firmware images:
- Neoverse V1/N2 cpu support
- non-secure EL2 virtual timer
- XHCI controller in DSDT
With those changes we can now run OpenBSD as part of sbsa-ref tests.
Signed-off-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
Message-Id: <20230927120050.210187-2-marcin.juszkiewicz@linaro.org>
[AJB: fix whitespace and longline]
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
tests/avocado/machine_aarch64_sbsaref.py | 70 ++++++++++++++++++++----
1 file changed, 60 insertions(+), 10 deletions(-)
diff --git a/tests/avocado/machine_aarch64_sbsaref.py b/tests/avocado/machine_aarch64_sbsaref.py
index a794245e7e..b272053eaf 100644
--- a/tests/avocado/machine_aarch64_sbsaref.py
+++ b/tests/avocado/machine_aarch64_sbsaref.py
@@ -28,33 +28,33 @@ def fetch_firmware(self):
"""
Flash volumes generated using:
- - Fedora GNU Toolchain version 13.1.1 20230511 (Red Hat 13.1.1-2)
+ - Fedora GNU Toolchain version 13.2.1 20230728 (Red Hat 13.2.1-1)
- Trusted Firmware-A
- https://github.com/ARM-software/arm-trusted-firmware/tree/c0d8ee38
+ https://github.com/ARM-software/arm-trusted-firmware/tree/7c3ff62d
- Tianocore EDK II
https://github.com/tianocore/edk2/tree/0f9283429dd4
- https://github.com/tianocore/edk2-non-osi/tree/f0bb00937ad6
- https://github.com/tianocore/edk2-platforms/tree/7880b92e2a04
+ https://github.com/tianocore/edk2/tree/ad1c0394b177
+ https://github.com/tianocore/edk2-platforms/tree/d03a60523a60
"""
# Secure BootRom (TF-A code)
fs0_xz_url = (
- "https://fileserver.linaro.org/s/HrYMCjP7MEccjRP/"
+ "https://fileserver.linaro.org/s/rE43RJyTfxPtBkc/"
"download/SBSA_FLASH0.fd.xz"
)
- fs0_xz_hash = "447eff64a90b84ce47703c6ec41fbfc25befaaea"
+ fs0_xz_hash = "cdb8e4ffdaaa79292b7b465693f9e5fae6b7062d"
tar_xz_path = self.fetch_asset(fs0_xz_url, asset_hash=fs0_xz_hash)
archive.extract(tar_xz_path, self.workdir)
fs0_path = os.path.join(self.workdir, "SBSA_FLASH0.fd")
# Non-secure rom (UEFI and EFI variables)
fs1_xz_url = (
- "https://fileserver.linaro.org/s/t8foNnMPz74DZZy/"
+ "https://fileserver.linaro.org/s/AGWPDXbcqJTKS4R/"
"download/SBSA_FLASH1.fd.xz"
)
- fs1_xz_hash = "13a9a262953787c7fc5a9155dfaa26e703631e02"
+ fs1_xz_hash = "411155ae6984334714dff08d5d628178e790c875"
tar_xz_path = self.fetch_asset(fs1_xz_url, asset_hash=fs1_xz_hash)
archive.extract(tar_xz_path, self.workdir)
fs1_path = os.path.join(self.workdir, "SBSA_FLASH1.fd")
@@ -144,7 +144,7 @@ def test_sbsaref_alpine_linux_cortex_a57(self):
def test_sbsaref_alpine_linux_neoverse_n1(self):
"""
- :avocado: tags=cpu:max
+ :avocado: tags=cpu:neoverse-n1
"""
self.boot_alpine_linux("neoverse-n1")
@@ -152,4 +152,54 @@ def test_sbsaref_alpine_linux_max(self):
"""
:avocado: tags=cpu:max
"""
- self.boot_alpine_linux("max,pauth-impdef=on")
+ self.boot_alpine_linux("max")
+
+
+ # This tests the whole boot chain from EFI to Userspace
+ # We only boot a whole OS for the current top level CPU and GIC
+ # Other test profiles should use more minimal boots
+ def boot_openbsd73(self, cpu):
+ self.fetch_firmware()
+
+ img_url = (
+ "https://cdn.openbsd.org/pub/OpenBSD/7.3/arm64/miniroot73.img"
+ )
+
+ img_hash = "7fc2c75401d6f01fbfa25f4953f72ad7d7c18650056d30755c44b9c129b707e5"
+ img_path = self.fetch_asset(img_url, algorithm="sha256", asset_hash=img_hash)
+
+ self.vm.set_console()
+ self.vm.add_args(
+ "-cpu",
+ cpu,
+ "-drive",
+ f"file={img_path},format=raw",
+ "-device",
+ "virtio-rng-pci,rng=rng0",
+ "-object",
+ "rng-random,id=rng0,filename=/dev/urandom",
+ )
+
+ self.vm.launch()
+ wait_for_console_pattern(self,
+ "Welcome to the OpenBSD/arm64"
+ " 7.3 installation program.")
+
+ def test_sbsaref_openbsd73_cortex_a57(self):
+ """
+ :avocado: tags=cpu:cortex-a57
+ """
+ self.boot_openbsd73("cortex-a57")
+
+ def test_sbsaref_openbsd73_neoverse_n1(self):
+ """
+ :avocado: tags=cpu:neoverse-n1
+ """
+ self.boot_openbsd73("neoverse-n1")
+
+ def test_sbsaref_openbsd73_max(self):
+ """
+ :avocado: tags=cpu:max
+ """
+ self.boot_openbsd73("max")
+
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 02/25] tests/avocado: remove flaky test marking for test_sbsaref_edk2_firmware
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
2023-10-09 16:40 ` [PATCH 01/25] tests/avocado: update firmware to enable OpenBSD test on sbsa-ref Alex Bennée
@ 2023-10-09 16:40 ` Alex Bennée
2023-10-10 11:56 ` Philippe Mathieu-Daudé
2023-10-09 16:40 ` [PATCH 03/25] tests/lcitool: add swtpm to the package list Alex Bennée
` (22 subsequent siblings)
24 siblings, 1 reply; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:40 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé
After testing locally I decided to revert a5754847e0 (tests/avocado: Disable the
test_sbsaref_edk2_firmware by default) as the test seems pretty
stable:
env QEMU_TEST_FLAKY_TESTS=1 retry.py -n 50 -c -- \
./tests/venv/bin/avocado run \
./tests/avocado/machine_aarch64_sbsaref.py:Aarch64SbsarefMachine.test_sbsaref_edk2_firmware
yields:
Results summary:
0: 50 times (100.00%), avg time 2.064 (0.04 varience/0.19 deviation)
Ran command 50 times, 50 passes
Maybe f0ec14c78c (tests/avocado: Fix console data loss) has made it
more reliable?
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Cc: Thomas Huth <thuth@redhat.com>
---
tests/avocado/machine_aarch64_sbsaref.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/tests/avocado/machine_aarch64_sbsaref.py b/tests/avocado/machine_aarch64_sbsaref.py
index b272053eaf..bdd1efc768 100644
--- a/tests/avocado/machine_aarch64_sbsaref.py
+++ b/tests/avocado/machine_aarch64_sbsaref.py
@@ -75,7 +75,6 @@ def fetch_firmware(self):
"sbsa-ref",
)
- @skipUnless(os.getenv('QEMU_TEST_FLAKY_TESTS'), 'Test is not reliable')
def test_sbsaref_edk2_firmware(self):
"""
:avocado: tags=cpu:cortex-a57
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 03/25] tests/lcitool: add swtpm to the package list
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
2023-10-09 16:40 ` [PATCH 01/25] tests/avocado: update firmware to enable OpenBSD test on sbsa-ref Alex Bennée
2023-10-09 16:40 ` [PATCH 02/25] tests/avocado: remove flaky test marking for test_sbsaref_edk2_firmware Alex Bennée
@ 2023-10-09 16:40 ` Alex Bennée
2023-10-10 11:57 ` Philippe Mathieu-Daudé
2023-10-09 16:40 ` [PATCH 04/25] gitlab: shuffle some targets and reduce avocado noise Alex Bennée
` (21 subsequent siblings)
24 siblings, 1 reply; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:40 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé
We need this to test some TPM stuff.
Message-Id: <20230925144854.1872513-3-alex.bennee@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
---
.gitlab-ci.d/cirrus/macos-12.vars | 2 +-
tests/docker/dockerfiles/alpine.docker | 1 +
tests/docker/dockerfiles/centos8.docker | 1 +
tests/docker/dockerfiles/debian-amd64-cross.docker | 1 +
tests/docker/dockerfiles/debian-amd64.docker | 1 +
tests/docker/dockerfiles/debian-arm64-cross.docker | 1 +
tests/docker/dockerfiles/debian-armhf-cross.docker | 1 +
tests/docker/dockerfiles/debian-ppc64el-cross.docker | 1 +
tests/docker/dockerfiles/debian-s390x-cross.docker | 1 +
tests/docker/dockerfiles/fedora-win32-cross.docker | 1 +
tests/docker/dockerfiles/fedora-win64-cross.docker | 1 +
tests/docker/dockerfiles/fedora.docker | 1 +
tests/docker/dockerfiles/opensuse-leap.docker | 1 +
tests/docker/dockerfiles/ubuntu2204.docker | 1 +
tests/lcitool/libvirt-ci | 2 +-
tests/lcitool/projects/qemu.yml | 1 +
16 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/.gitlab-ci.d/cirrus/macos-12.vars b/.gitlab-ci.d/cirrus/macos-12.vars
index 80eadaab29..5f3fb346d1 100644
--- a/.gitlab-ci.d/cirrus/macos-12.vars
+++ b/.gitlab-ci.d/cirrus/macos-12.vars
@@ -11,6 +11,6 @@ MAKE='/opt/homebrew/bin/gmake'
NINJA='/opt/homebrew/bin/ninja'
PACKAGING_COMMAND='brew'
PIP3='/opt/homebrew/bin/pip3'
-PKGS='bash bc bison bzip2 capstone ccache cmocka ctags curl dbus diffutils dtc flex gcovr gettext git glib gnu-sed gnutls gtk+3 jemalloc jpeg-turbo json-c libepoxy libffi libgcrypt libiscsi libnfs libpng libslirp libssh libtasn1 libusb llvm lzo make meson mtools ncurses nettle ninja pixman pkg-config python3 rpm2cpio sdl2 sdl2_image snappy socat sparse spice-protocol tesseract usbredir vde vte3 xorriso zlib zstd'
+PKGS='bash bc bison bzip2 capstone ccache cmocka ctags curl dbus diffutils dtc flex gcovr gettext git glib gnu-sed gnutls gtk+3 jemalloc jpeg-turbo json-c libepoxy libffi libgcrypt libiscsi libnfs libpng libslirp libssh libtasn1 libusb llvm lzo make meson mtools ncurses nettle ninja pixman pkg-config python3 rpm2cpio sdl2 sdl2_image snappy socat sparse spice-protocol swtpm tesseract usbredir vde vte3 xorriso zlib zstd'
PYPI_PKGS='PyYAML numpy pillow sphinx sphinx-rtd-theme tomli'
PYTHON='/opt/homebrew/bin/python3'
diff --git a/tests/docker/dockerfiles/alpine.docker b/tests/docker/dockerfiles/alpine.docker
index d25649cb4f..42f6928627 100644
--- a/tests/docker/dockerfiles/alpine.docker
+++ b/tests/docker/dockerfiles/alpine.docker
@@ -100,6 +100,7 @@ RUN apk update && \
sparse \
spice-dev \
spice-protocol \
+ swtpm \
tar \
tesseract-ocr \
usbredir-dev \
diff --git a/tests/docker/dockerfiles/centos8.docker b/tests/docker/dockerfiles/centos8.docker
index 68bfe606f5..d97c30e96a 100644
--- a/tests/docker/dockerfiles/centos8.docker
+++ b/tests/docker/dockerfiles/centos8.docker
@@ -107,6 +107,7 @@ RUN dnf distro-sync -y && \
socat \
spice-protocol \
spice-server-devel \
+ swtpm \
systemd-devel \
systemtap-sdt-devel \
tar \
diff --git a/tests/docker/dockerfiles/debian-amd64-cross.docker b/tests/docker/dockerfiles/debian-amd64-cross.docker
index 0991938595..00bdc06021 100644
--- a/tests/docker/dockerfiles/debian-amd64-cross.docker
+++ b/tests/docker/dockerfiles/debian-amd64-cross.docker
@@ -55,6 +55,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
sed \
socat \
sparse \
+ swtpm \
tar \
tesseract-ocr \
tesseract-ocr-eng \
diff --git a/tests/docker/dockerfiles/debian-amd64.docker b/tests/docker/dockerfiles/debian-amd64.docker
index 61dbc3ff24..9b50fb2f63 100644
--- a/tests/docker/dockerfiles/debian-amd64.docker
+++ b/tests/docker/dockerfiles/debian-amd64.docker
@@ -124,6 +124,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
sed \
socat \
sparse \
+ swtpm \
systemtap-sdt-dev \
tar \
tesseract-ocr \
diff --git a/tests/docker/dockerfiles/debian-arm64-cross.docker b/tests/docker/dockerfiles/debian-arm64-cross.docker
index 74eabb274e..2dae3777f7 100644
--- a/tests/docker/dockerfiles/debian-arm64-cross.docker
+++ b/tests/docker/dockerfiles/debian-arm64-cross.docker
@@ -55,6 +55,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
sed \
socat \
sparse \
+ swtpm \
tar \
tesseract-ocr \
tesseract-ocr-eng \
diff --git a/tests/docker/dockerfiles/debian-armhf-cross.docker b/tests/docker/dockerfiles/debian-armhf-cross.docker
index 1ebd6ebd00..180ed836e6 100644
--- a/tests/docker/dockerfiles/debian-armhf-cross.docker
+++ b/tests/docker/dockerfiles/debian-armhf-cross.docker
@@ -55,6 +55,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
sed \
socat \
sparse \
+ swtpm \
tar \
tesseract-ocr \
tesseract-ocr-eng \
diff --git a/tests/docker/dockerfiles/debian-ppc64el-cross.docker b/tests/docker/dockerfiles/debian-ppc64el-cross.docker
index 59091fed02..d6be2f0cc5 100644
--- a/tests/docker/dockerfiles/debian-ppc64el-cross.docker
+++ b/tests/docker/dockerfiles/debian-ppc64el-cross.docker
@@ -55,6 +55,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
sed \
socat \
sparse \
+ swtpm \
tar \
tesseract-ocr \
tesseract-ocr-eng \
diff --git a/tests/docker/dockerfiles/debian-s390x-cross.docker b/tests/docker/dockerfiles/debian-s390x-cross.docker
index 48b2f28310..ec0041d6aa 100644
--- a/tests/docker/dockerfiles/debian-s390x-cross.docker
+++ b/tests/docker/dockerfiles/debian-s390x-cross.docker
@@ -55,6 +55,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
sed \
socat \
sparse \
+ swtpm \
tar \
tesseract-ocr \
tesseract-ocr-eng \
diff --git a/tests/docker/dockerfiles/fedora-win32-cross.docker b/tests/docker/dockerfiles/fedora-win32-cross.docker
index afa988574f..08799219f9 100644
--- a/tests/docker/dockerfiles/fedora-win32-cross.docker
+++ b/tests/docker/dockerfiles/fedora-win32-cross.docker
@@ -55,6 +55,7 @@ exec "$@"\n' > /usr/bin/nosync && \
socat \
sparse \
spice-protocol \
+ swtpm \
tar \
tesseract \
tesseract-langpack-eng \
diff --git a/tests/docker/dockerfiles/fedora-win64-cross.docker b/tests/docker/dockerfiles/fedora-win64-cross.docker
index cf93a0ca60..f8e4cb70d3 100644
--- a/tests/docker/dockerfiles/fedora-win64-cross.docker
+++ b/tests/docker/dockerfiles/fedora-win64-cross.docker
@@ -55,6 +55,7 @@ exec "$@"\n' > /usr/bin/nosync && \
socat \
sparse \
spice-protocol \
+ swtpm \
tar \
tesseract \
tesseract-langpack-eng \
diff --git a/tests/docker/dockerfiles/fedora.docker b/tests/docker/dockerfiles/fedora.docker
index f00e9e267c..9e9c71fa94 100644
--- a/tests/docker/dockerfiles/fedora.docker
+++ b/tests/docker/dockerfiles/fedora.docker
@@ -118,6 +118,7 @@ exec "$@"\n' > /usr/bin/nosync && \
sparse \
spice-protocol \
spice-server-devel \
+ swtpm \
systemd-devel \
systemtap-sdt-devel \
tar \
diff --git a/tests/docker/dockerfiles/opensuse-leap.docker b/tests/docker/dockerfiles/opensuse-leap.docker
index ed04b4d6da..dc0e36ce48 100644
--- a/tests/docker/dockerfiles/opensuse-leap.docker
+++ b/tests/docker/dockerfiles/opensuse-leap.docker
@@ -100,6 +100,7 @@ RUN zypper update -y && \
socat \
sparse \
spice-protocol-devel \
+ swtpm \
systemd-devel \
systemtap-sdt-devel \
tar \
diff --git a/tests/docker/dockerfiles/ubuntu2204.docker b/tests/docker/dockerfiles/ubuntu2204.docker
index 94c2c16118..2ca9cff79c 100644
--- a/tests/docker/dockerfiles/ubuntu2204.docker
+++ b/tests/docker/dockerfiles/ubuntu2204.docker
@@ -124,6 +124,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
sed \
socat \
sparse \
+ swtpm \
systemtap-sdt-dev \
tar \
tesseract-ocr \
diff --git a/tests/lcitool/libvirt-ci b/tests/lcitool/libvirt-ci
index e3ed1e5da1..36bc517161 160000
--- a/tests/lcitool/libvirt-ci
+++ b/tests/lcitool/libvirt-ci
@@ -1 +1 @@
-Subproject commit e3ed1e5da101943e53d8d89424e17b22120743f5
+Subproject commit 36bc517161c45ead20224d47f2dc4fa428af6724
diff --git a/tests/lcitool/projects/qemu.yml b/tests/lcitool/projects/qemu.yml
index 6f0885170d..82092c9f17 100644
--- a/tests/lcitool/projects/qemu.yml
+++ b/tests/lcitool/projects/qemu.yml
@@ -110,6 +110,7 @@ packages:
- spice-protocol
- spice-server
- ssh-client
+ - swtpm
- systemd
- tar
- tesseract
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 04/25] gitlab: shuffle some targets and reduce avocado noise
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
` (2 preceding siblings ...)
2023-10-09 16:40 ` [PATCH 03/25] tests/lcitool: add swtpm to the package list Alex Bennée
@ 2023-10-09 16:40 ` Alex Bennée
2023-10-09 16:40 ` [PATCH 05/25] tests/docker: make docker engine choice entirely configure driven Alex Bennée
` (20 subsequent siblings)
24 siblings, 0 replies; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:40 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé
We move a couple of targets out of the avocado runs because there are
no tests to run. Tricore already has some coverage. The cris target
only really has check-tcg tests but its getting harder to find
anything that packages the compiler.
To reduce the noise of CANCEL messages we also set AVOCADO_TAGS
appropriately so we filter down the number of tests we attempt.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
v2
- minor commit reword, no longer attempt to keep cris going
---
.gitlab-ci.d/buildtest.yml | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml
index aee9101507..25af1bc41e 100644
--- a/.gitlab-ci.d/buildtest.yml
+++ b/.gitlab-ci.d/buildtest.yml
@@ -30,6 +30,7 @@ avocado-system-alpine:
variables:
IMAGE: alpine
MAKE_CHECK_ARGS: check-avocado
+ AVOCADO_TAGS: arch:avr arch:loongarch64 arch:mips64 arch:mipsel
build-system-ubuntu:
extends:
@@ -40,8 +41,7 @@ build-system-ubuntu:
variables:
IMAGE: ubuntu2204
CONFIGURE_ARGS: --enable-docs
- TARGETS: alpha-softmmu cris-softmmu hppa-softmmu
- microblazeel-softmmu mips64el-softmmu
+ TARGETS: alpha-softmmu microblazeel-softmmu mips64el-softmmu
MAKE_CHECK_ARGS: check-build
check-system-ubuntu:
@@ -61,6 +61,7 @@ avocado-system-ubuntu:
variables:
IMAGE: ubuntu2204
MAKE_CHECK_ARGS: check-avocado
+ AVOCADO_TAGS: arch:alpha arch:microblaze arch:mips64el
build-system-debian:
extends:
@@ -72,7 +73,7 @@ build-system-debian:
IMAGE: debian-amd64
CONFIGURE_ARGS: --with-coroutine=sigaltstack
TARGETS: arm-softmmu i386-softmmu riscv64-softmmu sh4eb-softmmu
- sparc-softmmu xtensaeb-softmmu
+ sparc-softmmu xtensa-softmmu
MAKE_CHECK_ARGS: check-build
check-system-debian:
@@ -92,6 +93,7 @@ avocado-system-debian:
variables:
IMAGE: debian-amd64
MAKE_CHECK_ARGS: check-avocado
+ AVOCADO_TAGS: arch:arm arch:i386 arch:riscv64 arch:sh4 arch:sparc arch:xtensa
crash-test-debian:
extends: .native_test_job_template
@@ -114,7 +116,7 @@ build-system-fedora:
variables:
IMAGE: fedora
CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs
- TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu
+ TARGETS: microblaze-softmmu mips-softmmu
xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
MAKE_CHECK_ARGS: check-build
@@ -135,6 +137,8 @@ avocado-system-fedora:
variables:
IMAGE: fedora
MAKE_CHECK_ARGS: check-avocado
+ AVOCADO_TAGS: arch:microblaze arch:mips arch:xtensa arch:m68k
+ arch:riscv32 arch:ppc arch:sparc64
crash-test-fedora:
extends: .native_test_job_template
@@ -180,6 +184,8 @@ avocado-system-centos:
variables:
IMAGE: centos8
MAKE_CHECK_ARGS: check-avocado
+ AVOCADO_TAGS: arch:ppc64 arch:or1k arch:390x arch:x86_64 arch:rx
+ arch:sh4 arch:nios2
build-system-opensuse:
extends:
@@ -209,6 +215,7 @@ avocado-system-opensuse:
variables:
IMAGE: opensuse-leap
MAKE_CHECK_ARGS: check-avocado
+ AVOCADO_TAGS: arch:s390x arch:x86_64 arch:aarch64
# This jobs explicitly disable TCG (--disable-tcg), KVM is detected by
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 05/25] tests/docker: make docker engine choice entirely configure driven
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
` (3 preceding siblings ...)
2023-10-09 16:40 ` [PATCH 04/25] gitlab: shuffle some targets and reduce avocado noise Alex Bennée
@ 2023-10-09 16:40 ` Alex Bennée
2023-10-11 1:02 ` Alistair Francis
2023-10-09 16:40 ` [PATCH 06/25] configure: allow user to override docker engine Alex Bennée
` (19 subsequent siblings)
24 siblings, 1 reply; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:40 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé
Since 0b1a649047 (tests/docker: use direct RUNC call to build
containers) we ended up with the potential for the remaining docker.py
script calls to deviate from the direct RUNC calls. Fix this by
dropping the use of ENGINE in the makefile and rely entirely on what
we detect at configure time.
We also tweak the RUNC detection so podman users can still run things
from the source tree.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
v2
- add RUNC stanza suggested by Paolo
---
configure | 1 -
tests/docker/Makefile.include | 9 +++------
2 files changed, 3 insertions(+), 7 deletions(-)
diff --git a/configure b/configure
index e08127045d..707132a3ae 100755
--- a/configure
+++ b/configure
@@ -1694,7 +1694,6 @@ if test -n "$gdb_bin"; then
fi
if test "$container" != no; then
- echo "ENGINE=$container" >> $config_host_mak
echo "RUNC=$runc" >> $config_host_mak
fi
echo "SUBDIRS=$subdirs" >> $config_host_mak
diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include
index dfabafab92..ab68b2dbad 100644
--- a/tests/docker/Makefile.include
+++ b/tests/docker/Makefile.include
@@ -16,9 +16,8 @@ DOCKER_DEFAULT_REGISTRY := registry.gitlab.com/qemu-project/qemu
endif
DOCKER_REGISTRY := $(if $(REGISTRY),$(REGISTRY),$(DOCKER_DEFAULT_REGISTRY))
-RUNC ?= docker
-ENGINE ?= auto
-DOCKER_SCRIPT=$(SRC_PATH)/tests/docker/docker.py --engine $(ENGINE)
+RUNC ?= $(if $(shell command -v docker), docker, podman)
+DOCKER_SCRIPT=$(SRC_PATH)/tests/docker/docker.py --engine $(RUNC)
CUR_TIME := $(shell date +%Y-%m-%d-%H.%M.%S.$$$$)
DOCKER_SRC_COPY := $(BUILD_DIR)/docker-src.$(CUR_TIME)
@@ -158,7 +157,7 @@ $(foreach i,$(filter-out $(DOCKER_PARTIAL_IMAGES),$(DOCKER_IMAGES)), \
)
docker:
- @echo 'Build QEMU and run tests inside Docker or Podman containers'
+ @echo 'Build QEMU and run tests inside $(RUNC) containers'
@echo
@echo 'Available targets:'
@echo
@@ -198,8 +197,6 @@ docker:
@echo ' EXECUTABLE=<path> Include executable in image.'
@echo ' EXTRA_FILES="<path> [... <path>]"'
@echo ' Include extra files in image.'
- @echo ' ENGINE=auto/docker/podman'
- @echo ' Specify which container engine to run.'
@echo ' REGISTRY=url Cache builds from registry (default:$(DOCKER_REGISTRY))'
docker-help: docker
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 06/25] configure: allow user to override docker engine
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
` (4 preceding siblings ...)
2023-10-09 16:40 ` [PATCH 05/25] tests/docker: make docker engine choice entirely configure driven Alex Bennée
@ 2023-10-09 16:40 ` Alex Bennée
2023-10-11 0:59 ` Alistair Francis
2023-10-09 16:40 ` [PATCH 07/25] configure: remove gcc version suffixes Alex Bennée
` (18 subsequent siblings)
24 siblings, 1 reply; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:40 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé
If you have both engines installed but one is broken you are stuck
with the automagic. Allow the user to override the engine for this
case.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
configure | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/configure b/configure
index 707132a3ae..ebad155d9e 100755
--- a/configure
+++ b/configure
@@ -180,6 +180,7 @@ fi
# some defaults, based on the host environment
# default parameters
+container_engine="auto"
cpu=""
cross_compile="no"
cross_prefix=""
@@ -787,6 +788,8 @@ for opt do
;;
--disable-containers) use_containers="no"
;;
+ --container-engine=*) container_engine="$optarg"
+ ;;
--gdb=*) gdb_bin="$optarg"
;;
# everything else has the same name in configure and meson
@@ -921,6 +924,7 @@ Advanced options (experts only):
--enable-plugins
enable plugins via shared library loading
--disable-containers don't use containers for cross-building
+ --container-engine=TYPE which container engine to use [$container_engine]
--gdb=GDB-path gdb to use for gdbstub tests [$gdb_bin]
EOF
meson_options_help
@@ -1195,14 +1199,14 @@ fi
container="no"
runc=""
if test $use_containers = "yes" && (has "docker" || has "podman"); then
- case $($python "$source_path"/tests/docker/docker.py probe) in
+ case $($python "$source_path"/tests/docker/docker.py --engine "$container_engine" probe) in
*docker) container=docker ;;
podman) container=podman ;;
no) container=no ;;
esac
if test "$container" != "no"; then
docker_py="$python $source_path/tests/docker/docker.py --engine $container"
- runc=$($python "$source_path"/tests/docker/docker.py probe)
+ runc=$container
fi
fi
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 07/25] configure: remove gcc version suffixes
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
` (5 preceding siblings ...)
2023-10-09 16:40 ` [PATCH 06/25] configure: allow user to override docker engine Alex Bennée
@ 2023-10-09 16:40 ` Alex Bennée
2023-10-10 11:57 ` Philippe Mathieu-Daudé
2023-10-09 16:40 ` [PATCH 08/25] gdbstub: Fix target_xml initialization Alex Bennée
` (17 subsequent siblings)
24 siblings, 1 reply; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:40 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé
The modern packaging of cross GCC's doesn't need the explicit version
number at the end.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
configure | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/configure b/configure
index ebad155d9e..e83872571d 100755
--- a/configure
+++ b/configure
@@ -1334,7 +1334,7 @@ probe_target_compiler() {
# We don't have any bigendian build tools so we only use this for AArch64
container_image=debian-arm64-cross
container_cross_prefix=aarch64-linux-gnu-
- container_cross_cc=${container_cross_prefix}gcc-10
+ container_cross_cc=${container_cross_prefix}gcc
;;
alpha)
container_image=debian-alpha-cross
@@ -1397,7 +1397,7 @@ probe_target_compiler() {
ppc)
container_image=debian-powerpc-test-cross
container_cross_prefix=powerpc-linux-gnu-
- container_cross_cc=${container_cross_prefix}gcc-10
+ container_cross_cc=${container_cross_prefix}gcc
;;
ppc64|ppc64le)
container_image=debian-powerpc-test-cross
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 08/25] gdbstub: Fix target_xml initialization
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
` (6 preceding siblings ...)
2023-10-09 16:40 ` [PATCH 07/25] configure: remove gcc version suffixes Alex Bennée
@ 2023-10-09 16:40 ` Alex Bennée
2023-10-11 1:00 ` Alistair Francis
2023-10-09 16:40 ` [PATCH 09/25] gdbstub: Fix target.xml response Alex Bennée
` (16 subsequent siblings)
24 siblings, 1 reply; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:40 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé, Akihiko Odaki
From: Akihiko Odaki <akihiko.odaki@daynix.com>
target_xml is no longer a fixed-length array but a pointer to a
variable-length memory.
Fixes: 56e534bd11 ("gdbstub: refactor get_feature_xml")
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-Id: <20230912224107.29669-2-akihiko.odaki@daynix.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
gdbstub/softmmu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gdbstub/softmmu.c b/gdbstub/softmmu.c
index 9f0b8b5497..42645d2220 100644
--- a/gdbstub/softmmu.c
+++ b/gdbstub/softmmu.c
@@ -292,7 +292,7 @@ static int find_cpu_clusters(Object *child, void *opaque)
assert(cluster->cluster_id != UINT32_MAX);
process->pid = cluster->cluster_id + 1;
process->attached = false;
- process->target_xml[0] = '\0';
+ process->target_xml = NULL;
return 0;
}
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 09/25] gdbstub: Fix target.xml response
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
` (7 preceding siblings ...)
2023-10-09 16:40 ` [PATCH 08/25] gdbstub: Fix target_xml initialization Alex Bennée
@ 2023-10-09 16:40 ` Alex Bennée
2023-10-09 16:40 ` [PATCH 10/25] plugins: Check if vCPU is realized Alex Bennée
` (15 subsequent siblings)
24 siblings, 0 replies; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:40 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé, Akihiko Odaki
From: Akihiko Odaki <akihiko.odaki@daynix.com>
It was failing to return target.xml after the first request.
Fixes: 56e534bd11 ("gdbstub: refactor get_feature_xml")
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Message-Id: <20230912224107.29669-3-akihiko.odaki@daynix.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
gdbstub/gdbstub.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
index 8eea21450c..4f3762fccf 100644
--- a/gdbstub/gdbstub.c
+++ b/gdbstub/gdbstub.c
@@ -396,8 +396,8 @@ static const char *get_feature_xml(const char *p, const char **newp,
g_string_append(xml, "</target>");
process->target_xml = g_string_free(xml, false);
- return process->target_xml;
}
+ return process->target_xml;
}
/* Is it dynamically generated by the target? */
if (cc->gdb_get_dynamic_xml) {
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 10/25] plugins: Check if vCPU is realized
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
` (8 preceding siblings ...)
2023-10-09 16:40 ` [PATCH 09/25] gdbstub: Fix target.xml response Alex Bennée
@ 2023-10-09 16:40 ` Alex Bennée
2023-10-09 16:40 ` [PATCH 11/25] contrib/plugins: Use GRWLock in execlog Alex Bennée
` (14 subsequent siblings)
24 siblings, 0 replies; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:40 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé, Akihiko Odaki
From: Akihiko Odaki <akihiko.odaki@daynix.com>
The created member of CPUState tells if the vCPU thread is started, and
will be always false for the user space emulation that manages threads
independently. Use the realized member of DeviceState, which is valid
for both of the system and user space emulation.
Fixes: 54cb65d858 ("plugin: add core code")
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Message-Id: <20230912224107.29669-4-akihiko.odaki@daynix.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
plugins/core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugins/core.c b/plugins/core.c
index 3c4e26c7ed..fcd33a2bff 100644
--- a/plugins/core.c
+++ b/plugins/core.c
@@ -64,7 +64,7 @@ static void plugin_cpu_update__locked(gpointer k, gpointer v, gpointer udata)
CPUState *cpu = container_of(k, CPUState, cpu_index);
run_on_cpu_data mask = RUN_ON_CPU_HOST_ULONG(*plugin.mask);
- if (cpu->created) {
+ if (DEVICE(cpu)->realized) {
async_run_on_cpu(cpu, plugin_cpu_update__async, mask);
} else {
plugin_cpu_update__async(cpu, mask);
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 11/25] contrib/plugins: Use GRWLock in execlog
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
` (9 preceding siblings ...)
2023-10-09 16:40 ` [PATCH 10/25] plugins: Check if vCPU is realized Alex Bennée
@ 2023-10-09 16:40 ` Alex Bennée
2023-10-09 16:40 ` [PATCH 12/25] gdbstub: Introduce GDBFeature structure Alex Bennée
` (13 subsequent siblings)
24 siblings, 0 replies; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:40 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé, Akihiko Odaki
From: Akihiko Odaki <akihiko.odaki@daynix.com>
execlog had the following comment:
> As we could have multiple threads trying to do this we need to
> serialise the expansion under a lock. Threads accessing already
> created entries can continue without issue even if the ptr array
> gets reallocated during resize.
However, when the ptr array gets reallocated, the other threads may have
a stale reference to the old buffer. This results in use-after-free.
Use GRWLock to properly fix this issue.
Fixes: 3d7caf145e ("contrib/plugins: add execlog to log instruction execution and memory access")
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20230912224107.29669-5-akihiko.odaki@daynix.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
contrib/plugins/execlog.c | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/contrib/plugins/execlog.c b/contrib/plugins/execlog.c
index 7129d526f8..82dc2f584e 100644
--- a/contrib/plugins/execlog.c
+++ b/contrib/plugins/execlog.c
@@ -19,7 +19,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_version = QEMU_PLUGIN_VERSION;
/* Store last executed instruction on each vCPU as a GString */
static GPtrArray *last_exec;
-static GMutex expand_array_lock;
+static GRWLock expand_array_lock;
static GPtrArray *imatches;
static GArray *amatches;
@@ -28,18 +28,16 @@ static GArray *amatches;
* Expand last_exec array.
*
* As we could have multiple threads trying to do this we need to
- * serialise the expansion under a lock. Threads accessing already
- * created entries can continue without issue even if the ptr array
- * gets reallocated during resize.
+ * serialise the expansion under a lock.
*/
static void expand_last_exec(int cpu_index)
{
- g_mutex_lock(&expand_array_lock);
+ g_rw_lock_writer_lock(&expand_array_lock);
while (cpu_index >= last_exec->len) {
GString *s = g_string_new(NULL);
g_ptr_array_add(last_exec, s);
}
- g_mutex_unlock(&expand_array_lock);
+ g_rw_lock_writer_unlock(&expand_array_lock);
}
/**
@@ -51,8 +49,10 @@ static void vcpu_mem(unsigned int cpu_index, qemu_plugin_meminfo_t info,
GString *s;
/* Find vCPU in array */
+ g_rw_lock_reader_lock(&expand_array_lock);
g_assert(cpu_index < last_exec->len);
s = g_ptr_array_index(last_exec, cpu_index);
+ g_rw_lock_reader_unlock(&expand_array_lock);
/* Indicate type of memory access */
if (qemu_plugin_mem_is_store(info)) {
@@ -80,10 +80,14 @@ static void vcpu_insn_exec(unsigned int cpu_index, void *udata)
GString *s;
/* Find or create vCPU in array */
+ g_rw_lock_reader_lock(&expand_array_lock);
if (cpu_index >= last_exec->len) {
+ g_rw_lock_reader_unlock(&expand_array_lock);
expand_last_exec(cpu_index);
+ g_rw_lock_reader_lock(&expand_array_lock);
}
s = g_ptr_array_index(last_exec, cpu_index);
+ g_rw_lock_reader_unlock(&expand_array_lock);
/* Print previous instruction in cache */
if (s->len) {
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 12/25] gdbstub: Introduce GDBFeature structure
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
` (10 preceding siblings ...)
2023-10-09 16:40 ` [PATCH 11/25] contrib/plugins: Use GRWLock in execlog Alex Bennée
@ 2023-10-09 16:40 ` Alex Bennée
2023-10-09 16:40 ` [PATCH 13/25] target/arm: Move the reference to arm-core.xml Alex Bennée
` (12 subsequent siblings)
24 siblings, 0 replies; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:40 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé, Akihiko Odaki
From: Akihiko Odaki <akihiko.odaki@daynix.com>
Before this change, the information from a XML file was stored in an
array that is not descriptive. Introduce a dedicated structure type to
make it easier to understand and to extend with more fields.
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>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20230912224107.29669-6-akihiko.odaki@daynix.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
MAINTAINERS | 2 +-
meson.build | 2 +-
include/exec/gdbstub.h | 9 ++++--
gdbstub/gdbstub.c | 6 ++--
stubs/gdbstub.c | 6 ++--
scripts/feature_to_c.py | 48 ++++++++++++++++++++++++++++
scripts/feature_to_c.sh | 69 -----------------------------------------
7 files changed, 63 insertions(+), 79 deletions(-)
create mode 100755 scripts/feature_to_c.py
delete mode 100644 scripts/feature_to_c.sh
diff --git a/MAINTAINERS b/MAINTAINERS
index ea91f9e804..0f421a0a03 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2836,7 +2836,7 @@ F: include/exec/gdbstub.h
F: include/gdbstub/*
F: gdb-xml/
F: tests/tcg/multiarch/gdbstub/
-F: scripts/feature_to_c.sh
+F: scripts/feature_to_c.py
F: scripts/probe-gdb-support.py
Memory API
diff --git a/meson.build b/meson.build
index 3bb64b536c..9f4c4f2f1e 100644
--- a/meson.build
+++ b/meson.build
@@ -3693,7 +3693,7 @@ common_all = static_library('common',
dependencies: common_all.dependencies(),
name_suffix: 'fa')
-feature_to_c = find_program('scripts/feature_to_c.sh')
+feature_to_c = find_program('scripts/feature_to_c.py')
if targetos == 'darwin'
entitlement = find_program('scripts/entitlement.sh')
diff --git a/include/exec/gdbstub.h b/include/exec/gdbstub.h
index 16a139043f..705be2c5d7 100644
--- a/include/exec/gdbstub.h
+++ b/include/exec/gdbstub.h
@@ -10,6 +10,11 @@
#define GDB_WATCHPOINT_READ 3
#define GDB_WATCHPOINT_ACCESS 4
+typedef struct GDBFeature {
+ const char *xmlname;
+ const char *xml;
+} GDBFeature;
+
/* Get or set a register. Returns the size of the register. */
typedef int (*gdb_get_reg_cb)(CPUArchState *env, GByteArray *buf, int reg);
@@ -48,7 +53,7 @@ void gdb_set_stop_cpu(CPUState *cpu);
*/
bool gdb_has_xml(void);
-/* in gdbstub-xml.c, generated by scripts/feature_to_c.sh */
-extern const char *const xml_builtin[][2];
+/* in gdbstub-xml.c, generated by scripts/feature_to_c.py */
+extern const GDBFeature gdb_static_features[];
#endif
diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
index 4f3762fccf..bba2640293 100644
--- a/gdbstub/gdbstub.c
+++ b/gdbstub/gdbstub.c
@@ -408,11 +408,11 @@ static const char *get_feature_xml(const char *p, const char **newp,
}
}
/* Is it one of the encoded gdb-xml/ files? */
- for (int i = 0; xml_builtin[i][0]; i++) {
- const char *name = xml_builtin[i][0];
+ for (int i = 0; gdb_static_features[i].xmlname; i++) {
+ const char *name = gdb_static_features[i].xmlname;
if ((strncmp(name, p, len) == 0) &&
strlen(name) == len) {
- return xml_builtin[i][1];
+ return gdb_static_features[i].xml;
}
}
diff --git a/stubs/gdbstub.c b/stubs/gdbstub.c
index 2b7aee50d3..580e20702b 100644
--- a/stubs/gdbstub.c
+++ b/stubs/gdbstub.c
@@ -1,6 +1,6 @@
#include "qemu/osdep.h"
-#include "exec/gdbstub.h" /* xml_builtin */
+#include "exec/gdbstub.h" /* gdb_static_features */
-const char *const xml_builtin[][2] = {
- { NULL, NULL }
+const GDBFeature gdb_static_features[] = {
+ { NULL }
};
diff --git a/scripts/feature_to_c.py b/scripts/feature_to_c.py
new file mode 100755
index 0000000000..bcbcb83beb
--- /dev/null
+++ b/scripts/feature_to_c.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python3
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+import os, sys
+
+def writeliteral(indent, bytes):
+ sys.stdout.write(' ' * indent)
+ sys.stdout.write('"')
+ quoted = True
+
+ for c in bytes:
+ if not quoted:
+ sys.stdout.write('\n')
+ sys.stdout.write(' ' * indent)
+ sys.stdout.write('"')
+ quoted = True
+
+ if c == b'"'[0]:
+ sys.stdout.write('\\"')
+ elif c == b'\\'[0]:
+ sys.stdout.write('\\\\')
+ elif c == b'\n'[0]:
+ sys.stdout.write('\\n"')
+ quoted = False
+ elif c >= 32 and c < 127:
+ sys.stdout.write(c.to_bytes(1, 'big').decode())
+ else:
+ sys.stdout.write(f'\{c:03o}')
+
+ if quoted:
+ sys.stdout.write('"')
+
+sys.stdout.write('#include "qemu/osdep.h"\n' \
+ '#include "exec/gdbstub.h"\n' \
+ '\n'
+ 'const GDBFeature gdb_static_features[] = {\n')
+
+for input in sys.argv[1:]:
+ with open(input, 'rb') as file:
+ read = file.read()
+
+ 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(' { NULL }\n};\n')
diff --git a/scripts/feature_to_c.sh b/scripts/feature_to_c.sh
deleted file mode 100644
index c1f67c8f6a..0000000000
--- a/scripts/feature_to_c.sh
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/sh
-
-# Convert text files to compilable C arrays.
-#
-# Copyright (C) 2007 Free Software Foundation, Inc.
-#
-# This file is part of GDB.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
-
-if test -z "$1"; then
- echo "Usage: $0 INPUTFILE..."
- exit 1
-fi
-
-for input; do
- arrayname=xml_feature_$(echo $input | sed 's,.*/,,; s/[-.]/_/g')
-
- ${AWK:-awk} 'BEGIN { n = 0
- printf "#include \"qemu/osdep.h\"\n"
- print "static const char '$arrayname'[] = {"
- for (i = 0; i < 255; i++)
- _ord_[sprintf("%c", i)] = i
- } {
- split($0, line, "");
- printf " "
- for (i = 1; i <= length($0); i++) {
- c = line[i]
- if (c == "'\''") {
- printf "'\''\\'\'''\'', "
- } else if (c == "\\") {
- printf "'\''\\\\'\'', "
- } else if (_ord_[c] >= 32 && _ord_[c] < 127) {
- printf "'\''%s'\'', ", c
- } else {
- printf "'\''\\%03o'\'', ", _ord_[c]
- }
- if (i % 10 == 0)
- printf "\n "
- }
- printf "'\''\\n'\'', \n"
- } END {
- print " 0 };"
- }' < $input
-done
-
-echo
-echo '#include "exec/gdbstub.h"'
-echo "const char *const xml_builtin[][2] = {"
-
-for input; do
- basename=$(echo $input | sed 's,.*/,,')
- arrayname=xml_feature_$(echo $input | sed 's,.*/,,; s/[-.]/_/g')
- echo " { \"$basename\", $arrayname },"
-done
-
-echo " { (char *)0, (char *)0 }"
-echo "};"
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 13/25] target/arm: Move the reference to arm-core.xml
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
` (11 preceding siblings ...)
2023-10-09 16:40 ` [PATCH 12/25] gdbstub: Introduce GDBFeature structure Alex Bennée
@ 2023-10-09 16:40 ` Alex Bennée
2023-10-09 16:40 ` [PATCH 14/25] hw/core/cpu: Return static value with gdb_arch_name() Alex Bennée
` (11 subsequent siblings)
24 siblings, 0 replies; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:40 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé, Akihiko Odaki
From: Akihiko Odaki <akihiko.odaki@daynix.com>
Some subclasses overwrite gdb_core_xml_file member but others don't.
Always initialize the member in the subclasses for consistency.
This especially helps for AArch64; in a following change, the file
specified by gdb_core_xml_file is always looked up even if it's going to
be overwritten later. Looking up arm-core.xml results in an error as
it will not be embedded in the AArch64 build.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20230912224107.29669-7-akihiko.odaki@daynix.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
target/arm/cpu.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
index 831295d7cd..b65e8cfea3 100644
--- a/target/arm/cpu.c
+++ b/target/arm/cpu.c
@@ -2392,7 +2392,6 @@ static void arm_cpu_class_init(ObjectClass *oc, void *data)
cc->sysemu_ops = &arm_sysemu_ops;
#endif
cc->gdb_num_core_regs = 26;
- cc->gdb_core_xml_file = "arm-core.xml";
cc->gdb_arch_name = arm_gdb_arch_name;
cc->gdb_get_dynamic_xml = arm_gdb_get_dynamic_xml;
cc->gdb_stop_before_watchpoint = true;
@@ -2414,8 +2413,10 @@ static void arm_cpu_instance_init(Object *obj)
static void cpu_register_class_init(ObjectClass *oc, void *data)
{
ARMCPUClass *acc = ARM_CPU_CLASS(oc);
+ CPUClass *cc = CPU_CLASS(acc);
acc->info = data;
+ cc->gdb_core_xml_file = "arm-core.xml";
}
void arm_cpu_register(const ARMCPUInfo *info)
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 14/25] hw/core/cpu: Return static value with gdb_arch_name()
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
` (12 preceding siblings ...)
2023-10-09 16:40 ` [PATCH 13/25] target/arm: Move the reference to arm-core.xml Alex Bennée
@ 2023-10-09 16:40 ` Alex Bennée
2023-10-11 0:55 ` Alistair Francis
2023-10-09 16:40 ` [PATCH 15/25] gdbstub: Use g_markup_printf_escaped() Alex Bennée
` (10 subsequent siblings)
24 siblings, 1 reply; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:40 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé, Akihiko Odaki
From: Akihiko Odaki <akihiko.odaki@daynix.com>
All implementations of gdb_arch_name() returns dynamic duplicates of
static strings. It's also unlikely that there will be an implementation
of gdb_arch_name() that returns a truly dynamic value due to the nature
of the function returning a well-known identifiers. Qualify the value
gdb_arch_name() with const and make all of its implementations return
static strings.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20230912224107.29669-8-akihiko.odaki@daynix.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
include/hw/core/cpu.h | 2 +-
target/ppc/internal.h | 2 +-
gdbstub/gdbstub.c | 3 +--
target/arm/cpu.c | 6 +++---
target/arm/cpu64.c | 4 ++--
target/i386/cpu.c | 6 +++---
target/loongarch/cpu.c | 8 ++++----
target/ppc/gdbstub.c | 6 +++---
target/riscv/cpu.c | 6 +++---
target/s390x/cpu.c | 4 ++--
target/tricore/cpu.c | 4 ++--
11 files changed, 25 insertions(+), 26 deletions(-)
diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
index e02bc5980f..7b8347ed5a 100644
--- a/include/hw/core/cpu.h
+++ b/include/hw/core/cpu.h
@@ -165,7 +165,7 @@ struct CPUClass {
vaddr (*gdb_adjust_breakpoint)(CPUState *cpu, vaddr addr);
const char *gdb_core_xml_file;
- gchar * (*gdb_arch_name)(CPUState *cpu);
+ const gchar * (*gdb_arch_name)(CPUState *cpu);
const char * (*gdb_get_dynamic_xml)(CPUState *cpu, const char *xmlname);
void (*disas_set_info)(CPUState *cpu, disassemble_info *info);
diff --git a/target/ppc/internal.h b/target/ppc/internal.h
index 15803bc313..c881c67a8b 100644
--- a/target/ppc/internal.h
+++ b/target/ppc/internal.h
@@ -221,7 +221,7 @@ void destroy_ppc_opcodes(PowerPCCPU *cpu);
/* gdbstub.c */
void ppc_gdb_init(CPUState *cs, PowerPCCPUClass *ppc);
-gchar *ppc_gdb_arch_name(CPUState *cs);
+const gchar *ppc_gdb_arch_name(CPUState *cs);
/**
* prot_for_access_type:
diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
index bba2640293..a20169c27b 100644
--- a/gdbstub/gdbstub.c
+++ b/gdbstub/gdbstub.c
@@ -380,10 +380,9 @@ static const char *get_feature_xml(const char *p, const char **newp,
"<target>");
if (cc->gdb_arch_name) {
- g_autofree gchar *arch = cc->gdb_arch_name(cpu);
g_string_append_printf(xml,
"<architecture>%s</architecture>",
- arch);
+ cc->gdb_arch_name(cpu));
}
g_string_append(xml, "<xi:include href=\"");
g_string_append(xml, cc->gdb_core_xml_file);
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
index b65e8cfea3..6c6c551573 100644
--- a/target/arm/cpu.c
+++ b/target/arm/cpu.c
@@ -2319,15 +2319,15 @@ static Property arm_cpu_properties[] = {
DEFINE_PROP_END_OF_LIST()
};
-static gchar *arm_gdb_arch_name(CPUState *cs)
+static const gchar *arm_gdb_arch_name(CPUState *cs)
{
ARMCPU *cpu = ARM_CPU(cs);
CPUARMState *env = &cpu->env;
if (arm_feature(env, ARM_FEATURE_IWMMXT)) {
- return g_strdup("iwmmxt");
+ return "iwmmxt";
}
- return g_strdup("arm");
+ return "arm";
}
#ifndef CONFIG_USER_ONLY
diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c
index 811f3b38c2..1cb9d5b81a 100644
--- a/target/arm/cpu64.c
+++ b/target/arm/cpu64.c
@@ -781,9 +781,9 @@ static void aarch64_cpu_finalizefn(Object *obj)
{
}
-static gchar *aarch64_gdb_arch_name(CPUState *cs)
+static const gchar *aarch64_gdb_arch_name(CPUState *cs)
{
- return g_strdup("aarch64");
+ return "aarch64";
}
static void aarch64_cpu_class_init(ObjectClass *oc, void *data)
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 9fad31b8db..c09bab4281 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -5915,12 +5915,12 @@ static void x86_cpu_load_model(X86CPU *cpu, X86CPUModel *model)
memset(&env->user_features, 0, sizeof(env->user_features));
}
-static gchar *x86_gdb_arch_name(CPUState *cs)
+static const gchar *x86_gdb_arch_name(CPUState *cs)
{
#ifdef TARGET_X86_64
- return g_strdup("i386:x86-64");
+ return "i386:x86-64";
#else
- return g_strdup("i386");
+ return "i386";
#endif
}
diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c
index 2bea7ca5d5..ef1bf89dac 100644
--- a/target/loongarch/cpu.c
+++ b/target/loongarch/cpu.c
@@ -766,9 +766,9 @@ static void loongarch_cpu_class_init(ObjectClass *c, void *data)
#endif
}
-static gchar *loongarch32_gdb_arch_name(CPUState *cs)
+static const gchar *loongarch32_gdb_arch_name(CPUState *cs)
{
- return g_strdup("loongarch32");
+ return "loongarch32";
}
static void loongarch32_cpu_class_init(ObjectClass *c, void *data)
@@ -780,9 +780,9 @@ static void loongarch32_cpu_class_init(ObjectClass *c, void *data)
cc->gdb_arch_name = loongarch32_gdb_arch_name;
}
-static gchar *loongarch64_gdb_arch_name(CPUState *cs)
+static const gchar *loongarch64_gdb_arch_name(CPUState *cs)
{
- return g_strdup("loongarch64");
+ return "loongarch64";
}
static void loongarch64_cpu_class_init(ObjectClass *c, void *data)
diff --git a/target/ppc/gdbstub.c b/target/ppc/gdbstub.c
index 2ad11510bf..778ef73bd7 100644
--- a/target/ppc/gdbstub.c
+++ b/target/ppc/gdbstub.c
@@ -589,12 +589,12 @@ static int gdb_set_vsx_reg(CPUPPCState *env, uint8_t *mem_buf, int n)
return 0;
}
-gchar *ppc_gdb_arch_name(CPUState *cs)
+const gchar *ppc_gdb_arch_name(CPUState *cs)
{
#if defined(TARGET_PPC64)
- return g_strdup("powerpc:common64");
+ return "powerpc:common64";
#else
- return g_strdup("powerpc:common");
+ return "powerpc:common";
#endif
}
diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
index ac2b94b6a6..f5572704de 100644
--- a/target/riscv/cpu.c
+++ b/target/riscv/cpu.c
@@ -2004,17 +2004,17 @@ static Property riscv_cpu_properties[] = {
DEFINE_PROP_END_OF_LIST(),
};
-static gchar *riscv_gdb_arch_name(CPUState *cs)
+static const gchar *riscv_gdb_arch_name(CPUState *cs)
{
RISCVCPU *cpu = RISCV_CPU(cs);
CPURISCVState *env = &cpu->env;
switch (riscv_cpu_mxl(env)) {
case MXL_RV32:
- return g_strdup("riscv:rv32");
+ return "riscv:rv32";
case MXL_RV64:
case MXL_RV128:
- return g_strdup("riscv:rv64");
+ return "riscv:rv64";
default:
g_assert_not_reached();
}
diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c
index 4f7599d72c..6093ab0a12 100644
--- a/target/s390x/cpu.c
+++ b/target/s390x/cpu.c
@@ -282,9 +282,9 @@ static void s390_cpu_initfn(Object *obj)
#endif
}
-static gchar *s390_gdb_arch_name(CPUState *cs)
+static const gchar *s390_gdb_arch_name(CPUState *cs)
{
- return g_strdup("s390:64-bit");
+ return "s390:64-bit";
}
static Property s390x_cpu_properties[] = {
diff --git a/target/tricore/cpu.c b/target/tricore/cpu.c
index d1477622e6..5ca666ee12 100644
--- a/target/tricore/cpu.c
+++ b/target/tricore/cpu.c
@@ -29,9 +29,9 @@ static inline void set_feature(CPUTriCoreState *env, int feature)
env->features |= 1ULL << feature;
}
-static gchar *tricore_gdb_arch_name(CPUState *cs)
+static const gchar *tricore_gdb_arch_name(CPUState *cs)
{
- return g_strdup("tricore");
+ return "tricore";
}
static void tricore_cpu_set_pc(CPUState *cs, vaddr value)
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 15/25] gdbstub: Use g_markup_printf_escaped()
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
` (13 preceding siblings ...)
2023-10-09 16:40 ` [PATCH 14/25] hw/core/cpu: Return static value with gdb_arch_name() Alex Bennée
@ 2023-10-09 16:40 ` Alex Bennée
2023-10-09 16:40 ` [PATCH 16/25] target/arm: Remove references to gdb_has_xml Alex Bennée
` (9 subsequent siblings)
24 siblings, 0 replies; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:40 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé, Akihiko Odaki
From: Akihiko Odaki <akihiko.odaki@daynix.com>
g_markup_printf_escaped() is a safer alternative to simple printf() as
it automatically escapes values.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Message-Id: <20230912224107.29669-9-akihiko.odaki@daynix.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
gdbstub/gdbstub.c | 36 +++++++++++++++++++++---------------
1 file changed, 21 insertions(+), 15 deletions(-)
diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
index a20169c27b..3dc847f835 100644
--- a/gdbstub/gdbstub.c
+++ b/gdbstub/gdbstub.c
@@ -373,28 +373,34 @@ static const char *get_feature_xml(const char *p, const char **newp,
if (strncmp(p, "target.xml", len) == 0) {
if (!process->target_xml) {
GDBRegisterState *r;
- GString *xml = g_string_new("<?xml version=\"1.0\"?>");
+ g_autoptr(GPtrArray) xml = g_ptr_array_new_with_free_func(g_free);
- g_string_append(xml,
- "<!DOCTYPE target SYSTEM \"gdb-target.dtd\">"
- "<target>");
+ g_ptr_array_add(
+ xml,
+ g_strdup("<?xml version=\"1.0\"?>"
+ "<!DOCTYPE target SYSTEM \"gdb-target.dtd\">"
+ "<target>"));
if (cc->gdb_arch_name) {
- g_string_append_printf(xml,
- "<architecture>%s</architecture>",
- cc->gdb_arch_name(cpu));
+ g_ptr_array_add(
+ xml,
+ g_markup_printf_escaped("<architecture>%s</architecture>",
+ cc->gdb_arch_name(cpu)));
}
- g_string_append(xml, "<xi:include href=\"");
- g_string_append(xml, cc->gdb_core_xml_file);
- g_string_append(xml, "\"/>");
+ g_ptr_array_add(
+ xml,
+ g_markup_printf_escaped("<xi:include href=\"%s\"/>",
+ cc->gdb_core_xml_file));
for (r = cpu->gdb_regs; r; r = r->next) {
- g_string_append(xml, "<xi:include href=\"");
- g_string_append(xml, r->xml);
- g_string_append(xml, "\"/>");
+ g_ptr_array_add(
+ xml,
+ g_markup_printf_escaped("<xi:include href=\"%s\"/>",
+ r->xml));
}
- g_string_append(xml, "</target>");
+ g_ptr_array_add(xml, g_strdup("</target>"));
+ g_ptr_array_add(xml, NULL);
- process->target_xml = g_string_free(xml, false);
+ process->target_xml = g_strjoinv(NULL, (void *)xml->pdata);
}
return process->target_xml;
}
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 16/25] target/arm: Remove references to gdb_has_xml
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
` (14 preceding siblings ...)
2023-10-09 16:40 ` [PATCH 15/25] gdbstub: Use g_markup_printf_escaped() Alex Bennée
@ 2023-10-09 16:40 ` Alex Bennée
2023-10-11 1:03 ` Alistair Francis
2023-10-09 16:40 ` [PATCH 17/25] target/ppc: " Alex Bennée
` (8 subsequent siblings)
24 siblings, 1 reply; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:40 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé, Akihiko Odaki
From: Akihiko Odaki <akihiko.odaki@daynix.com>
GDB has XML support since 6.7 which was released in 2007.
It's time to remove support for old GDB versions without XML support.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Acked-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20230912224107.29669-10-akihiko.odaki@daynix.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
target/arm/gdbstub.c | 32 ++------------------------------
1 file changed, 2 insertions(+), 30 deletions(-)
diff --git a/target/arm/gdbstub.c b/target/arm/gdbstub.c
index 8fc8351df7..b7ace24bfc 100644
--- a/target/arm/gdbstub.c
+++ b/target/arm/gdbstub.c
@@ -46,21 +46,7 @@ int arm_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
/* Core integer register. */
return gdb_get_reg32(mem_buf, env->regs[n]);
}
- if (n < 24) {
- /* FPA registers. */
- if (gdb_has_xml()) {
- return 0;
- }
- return gdb_get_zeroes(mem_buf, 12);
- }
- switch (n) {
- case 24:
- /* FPA status register. */
- if (gdb_has_xml()) {
- return 0;
- }
- return gdb_get_reg32(mem_buf, 0);
- case 25:
+ if (n == 25) {
/* CPSR, or XPSR for M-profile */
if (arm_feature(env, ARM_FEATURE_M)) {
return gdb_get_reg32(mem_buf, xpsr_read(env));
@@ -100,21 +86,7 @@ int arm_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
env->regs[n] = tmp;
return 4;
}
- if (n < 24) { /* 16-23 */
- /* FPA registers (ignored). */
- if (gdb_has_xml()) {
- return 0;
- }
- return 12;
- }
- switch (n) {
- case 24:
- /* FPA status register (ignored). */
- if (gdb_has_xml()) {
- return 0;
- }
- return 4;
- case 25:
+ if (n == 25) {
/* CPSR, or XPSR for M-profile */
if (arm_feature(env, ARM_FEATURE_M)) {
/*
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 17/25] target/ppc: Remove references to gdb_has_xml
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
` (15 preceding siblings ...)
2023-10-09 16:40 ` [PATCH 16/25] target/arm: Remove references to gdb_has_xml Alex Bennée
@ 2023-10-09 16:40 ` Alex Bennée
2023-10-09 16:40 ` [PATCH 18/25] gdbstub: Remove gdb_has_xml variable Alex Bennée
` (7 subsequent siblings)
24 siblings, 0 replies; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:40 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé, Akihiko Odaki
From: Akihiko Odaki <akihiko.odaki@daynix.com>
GDB has XML support since 6.7 which was released in 2007.
It's time to remove support for old GDB versions without XML support.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Message-Id: <20230912224107.29669-11-akihiko.odaki@daynix.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
target/ppc/gdbstub.c | 18 ------------------
1 file changed, 18 deletions(-)
diff --git a/target/ppc/gdbstub.c b/target/ppc/gdbstub.c
index 778ef73bd7..ec5731e5d6 100644
--- a/target/ppc/gdbstub.c
+++ b/target/ppc/gdbstub.c
@@ -54,12 +54,6 @@ static int ppc_gdb_register_len(int n)
case 0 ... 31:
/* gprs */
return sizeof(target_ulong);
- case 32 ... 63:
- /* fprs */
- if (gdb_has_xml()) {
- return 0;
- }
- return 8;
case 66:
/* cr */
case 69:
@@ -74,12 +68,6 @@ static int ppc_gdb_register_len(int n)
case 68:
/* ctr */
return sizeof(target_ulong);
- case 70:
- /* fpscr */
- if (gdb_has_xml()) {
- return 0;
- }
- return sizeof(target_ulong);
default:
return 0;
}
@@ -132,9 +120,6 @@ int ppc_cpu_gdb_read_register(CPUState *cs, GByteArray *buf, int n)
if (n < 32) {
/* gprs */
gdb_get_regl(buf, env->gpr[n]);
- } else if (n < 64) {
- /* fprs */
- gdb_get_reg64(buf, *cpu_fpr_ptr(env, n - 32));
} else {
switch (n) {
case 64:
@@ -158,9 +143,6 @@ int ppc_cpu_gdb_read_register(CPUState *cs, GByteArray *buf, int n)
case 69:
gdb_get_reg32(buf, cpu_read_xer(env));
break;
- case 70:
- gdb_get_reg32(buf, env->fpscr);
- break;
}
}
mem_buf = buf->data + buf->len - r;
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 18/25] gdbstub: Remove gdb_has_xml variable
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
` (16 preceding siblings ...)
2023-10-09 16:40 ` [PATCH 17/25] target/ppc: " Alex Bennée
@ 2023-10-09 16:40 ` Alex Bennée
2023-10-11 0:58 ` Alistair Francis
2023-10-09 16:40 ` [PATCH 19/25] gdbstub: Replace gdb_regs with an array Alex Bennée
` (6 subsequent siblings)
24 siblings, 1 reply; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:40 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé, Akihiko Odaki
From: Akihiko Odaki <akihiko.odaki@daynix.com>
GDB has XML support since 6.7 which was released in 2007.
It's time to remove support for old GDB versions without XML support.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Message-Id: <20230912224107.29669-12-akihiko.odaki@daynix.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
gdbstub/internals.h | 2 --
include/exec/gdbstub.h | 8 --------
gdbstub/gdbstub.c | 15 ---------------
3 files changed, 25 deletions(-)
diff --git a/gdbstub/internals.h b/gdbstub/internals.h
index fee243081f..7128c4aa85 100644
--- a/gdbstub/internals.h
+++ b/gdbstub/internals.h
@@ -32,8 +32,6 @@ enum {
typedef struct GDBProcess {
uint32_t pid;
bool attached;
-
- /* If gdb sends qXfer:features:read:target.xml this will be populated */
char *target_xml;
} GDBProcess;
diff --git a/include/exec/gdbstub.h b/include/exec/gdbstub.h
index 705be2c5d7..1a01c35f8e 100644
--- a/include/exec/gdbstub.h
+++ b/include/exec/gdbstub.h
@@ -45,14 +45,6 @@ int gdbserver_start(const char *port_or_device);
void gdb_set_stop_cpu(CPUState *cpu);
-/**
- * gdb_has_xml() - report of gdb supports modern target descriptions
- *
- * This will report true if the gdb negotiated qXfer:features:read
- * target descriptions.
- */
-bool gdb_has_xml(void);
-
/* in gdbstub-xml.c, generated by scripts/feature_to_c.py */
extern const GDBFeature gdb_static_features[];
diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
index 3dc847f835..62608a5389 100644
--- a/gdbstub/gdbstub.c
+++ b/gdbstub/gdbstub.c
@@ -349,11 +349,6 @@ static CPUState *gdb_get_cpu(uint32_t pid, uint32_t tid)
}
}
-bool gdb_has_xml(void)
-{
- return !!gdb_get_cpu_process(gdbserver_state.g_cpu)->target_xml;
-}
-
static const char *get_feature_xml(const char *p, const char **newp,
GDBProcess *process)
{
@@ -1086,11 +1081,6 @@ static void handle_set_reg(GArray *params, void *user_ctx)
{
int reg_size;
- if (!gdb_get_cpu_process(gdbserver_state.g_cpu)->target_xml) {
- gdb_put_packet("");
- return;
- }
-
if (params->len != 2) {
gdb_put_packet("E22");
return;
@@ -1107,11 +1097,6 @@ static void handle_get_reg(GArray *params, void *user_ctx)
{
int reg_size;
- if (!gdb_get_cpu_process(gdbserver_state.g_cpu)->target_xml) {
- gdb_put_packet("");
- return;
- }
-
if (!params->len) {
gdb_put_packet("E14");
return;
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 19/25] gdbstub: Replace gdb_regs with an array
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
` (17 preceding siblings ...)
2023-10-09 16:40 ` [PATCH 18/25] gdbstub: Remove gdb_has_xml variable Alex Bennée
@ 2023-10-09 16:40 ` Alex Bennée
2023-10-11 0:57 ` Alistair Francis
2023-10-09 16:40 ` [PATCH 20/25] accel/tcg: Add plugin_enabled to DisasContextBase Alex Bennée
` (5 subsequent siblings)
24 siblings, 1 reply; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:40 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé, Akihiko Odaki
From: Akihiko Odaki <akihiko.odaki@daynix.com>
An array is a more appropriate data structure than a list for gdb_regs
since it is initialized only with append operation and read-only after
initialization.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Message-Id: <20230912224107.29669-13-akihiko.odaki@daynix.com>
[AJB: fixed a checkpatch violation]
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
include/hw/core/cpu.h | 2 +-
gdbstub/gdbstub.c | 35 +++++++++++++++++++++--------------
2 files changed, 22 insertions(+), 15 deletions(-)
diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
index 7b8347ed5a..3968369554 100644
--- a/include/hw/core/cpu.h
+++ b/include/hw/core/cpu.h
@@ -502,7 +502,7 @@ struct CPUState {
CPUJumpCache *tb_jmp_cache;
- struct GDBRegisterState *gdb_regs;
+ GArray *gdb_regs;
int gdb_num_regs;
int gdb_num_g_regs;
QTAILQ_ENTRY(CPUState) node;
diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
index 62608a5389..b1532118d1 100644
--- a/gdbstub/gdbstub.c
+++ b/gdbstub/gdbstub.c
@@ -51,7 +51,6 @@ typedef struct GDBRegisterState {
gdb_get_reg_cb get_reg;
gdb_set_reg_cb set_reg;
const char *xml;
- struct GDBRegisterState *next;
} GDBRegisterState;
GDBState gdbserver_state;
@@ -386,7 +385,8 @@ static const char *get_feature_xml(const char *p, const char **newp,
xml,
g_markup_printf_escaped("<xi:include href=\"%s\"/>",
cc->gdb_core_xml_file));
- for (r = cpu->gdb_regs; r; r = r->next) {
+ for (guint i = 0; i < cpu->gdb_regs->len; i++) {
+ r = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
g_ptr_array_add(
xml,
g_markup_printf_escaped("<xi:include href=\"%s\"/>",
@@ -430,7 +430,8 @@ static int gdb_read_register(CPUState *cpu, GByteArray *buf, int reg)
return cc->gdb_read_register(cpu, buf, reg);
}
- for (r = cpu->gdb_regs; r; r = r->next) {
+ for (guint i = 0; i < cpu->gdb_regs->len; i++) {
+ r = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
if (r->base_reg <= reg && reg < r->base_reg + r->num_regs) {
return r->get_reg(env, buf, reg - r->base_reg);
}
@@ -448,7 +449,8 @@ static int gdb_write_register(CPUState *cpu, uint8_t *mem_buf, int reg)
return cc->gdb_write_register(cpu, mem_buf, reg);
}
- for (r = cpu->gdb_regs; r; r = r->next) {
+ for (guint i = 0; i < cpu->gdb_regs->len; i++) {
+ r = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
if (r->base_reg <= reg && reg < r->base_reg + r->num_regs) {
return r->set_reg(env, mem_buf, reg - r->base_reg);
}
@@ -461,17 +463,23 @@ void gdb_register_coprocessor(CPUState *cpu,
int num_regs, const char *xml, int g_pos)
{
GDBRegisterState *s;
- GDBRegisterState **p;
-
- p = &cpu->gdb_regs;
- while (*p) {
- /* Check for duplicates. */
- if (strcmp((*p)->xml, xml) == 0)
- return;
- p = &(*p)->next;
+ guint i;
+
+ if (cpu->gdb_regs) {
+ for (i = 0; i < cpu->gdb_regs->len; i++) {
+ /* Check for duplicates. */
+ s = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
+ if (strcmp(s->xml, xml) == 0) {
+ return;
+ }
+ }
+ } else {
+ cpu->gdb_regs = g_array_new(false, false, sizeof(GDBRegisterState));
+ i = 0;
}
- s = g_new0(GDBRegisterState, 1);
+ g_array_set_size(cpu->gdb_regs, i + 1);
+ s = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
s->base_reg = cpu->gdb_num_regs;
s->num_regs = num_regs;
s->get_reg = get_reg;
@@ -480,7 +488,6 @@ void gdb_register_coprocessor(CPUState *cpu,
/* Add to end of list. */
cpu->gdb_num_regs += num_regs;
- *p = s;
if (g_pos) {
if (g_pos != s->base_reg) {
error_report("Error: Bad gdb register numbering for '%s', "
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 20/25] accel/tcg: Add plugin_enabled to DisasContextBase
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
` (18 preceding siblings ...)
2023-10-09 16:40 ` [PATCH 19/25] gdbstub: Replace gdb_regs with an array Alex Bennée
@ 2023-10-09 16:40 ` Alex Bennée
2023-10-09 16:41 ` [PATCH 21/25] target/sh4: Disable decode_gusa when plugins enabled Alex Bennée
` (4 subsequent siblings)
24 siblings, 0 replies; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:40 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé
From: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20230824181233.1568795-2-richard.henderson@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
include/exec/translator.h | 2 ++
accel/tcg/translator.c | 1 +
2 files changed, 3 insertions(+)
diff --git a/include/exec/translator.h b/include/exec/translator.h
index 9d9e980819..6d3f59d095 100644
--- a/include/exec/translator.h
+++ b/include/exec/translator.h
@@ -73,6 +73,7 @@ typedef enum DisasJumpType {
* @max_insns: Maximum number of instructions to be translated in this TB.
* @singlestep_enabled: "Hardware" single stepping enabled.
* @saved_can_do_io: Known value of cpu->neg.can_do_io, or -1 for unknown.
+ * @plugin_enabled: TCG plugin enabled in this TB.
*
* Architecture-agnostic disassembly context.
*/
@@ -85,6 +86,7 @@ typedef struct DisasContextBase {
int max_insns;
bool singlestep_enabled;
int8_t saved_can_do_io;
+ bool plugin_enabled;
void *host_addr[2];
} DisasContextBase;
diff --git a/accel/tcg/translator.c b/accel/tcg/translator.c
index e7abcd86c1..c5da7b32a5 100644
--- a/accel/tcg/translator.c
+++ b/accel/tcg/translator.c
@@ -158,6 +158,7 @@ void translator_loop(CPUState *cpu, TranslationBlock *tb, int *max_insns,
} else {
plugin_enabled = plugin_gen_tb_start(cpu, db, false);
}
+ db->plugin_enabled = plugin_enabled;
while (true) {
*max_insns = ++db->num_insns;
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 21/25] target/sh4: Disable decode_gusa when plugins enabled
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
` (19 preceding siblings ...)
2023-10-09 16:40 ` [PATCH 20/25] accel/tcg: Add plugin_enabled to DisasContextBase Alex Bennée
@ 2023-10-09 16:41 ` Alex Bennée
2023-10-09 16:41 ` [PATCH 22/25] plugins: Set final instruction count in plugin_gen_tb_end Alex Bennée
` (3 subsequent siblings)
24 siblings, 0 replies; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:41 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé
From: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20230824181233.1568795-3-richard.henderson@linaro.org>
[AJB: fixed s/cpu_env/tcg_env/ during re-base]
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
target/sh4/translate.c | 41 +++++++++++++++++++++++++++++------------
1 file changed, 29 insertions(+), 12 deletions(-)
diff --git a/target/sh4/translate.c b/target/sh4/translate.c
index cbd8dfc02f..220a06bdce 100644
--- a/target/sh4/translate.c
+++ b/target/sh4/translate.c
@@ -1816,6 +1816,18 @@ static void decode_opc(DisasContext * ctx)
}
#ifdef CONFIG_USER_ONLY
+/*
+ * Restart with the EXCLUSIVE bit set, within a TB run via
+ * cpu_exec_step_atomic holding the exclusive lock.
+ */
+static void gen_restart_exclusive(DisasContext *ctx)
+{
+ ctx->envflags |= TB_FLAG_GUSA_EXCLUSIVE;
+ gen_save_cpu_state(ctx, false);
+ gen_helper_exclusive(tcg_env);
+ ctx->base.is_jmp = DISAS_NORETURN;
+}
+
/* For uniprocessors, SH4 uses optimistic restartable atomic sequences.
Upon an interrupt, a real kernel would simply notice magic values in
the registers and reset the PC to the start of the sequence.
@@ -2149,12 +2161,7 @@ static void decode_gusa(DisasContext *ctx, CPUSH4State *env)
qemu_log_mask(LOG_UNIMP, "Unrecognized gUSA sequence %08x-%08x\n",
pc, pc_end);
- /* Restart with the EXCLUSIVE bit set, within a TB run via
- cpu_exec_step_atomic holding the exclusive lock. */
- ctx->envflags |= TB_FLAG_GUSA_EXCLUSIVE;
- gen_save_cpu_state(ctx, false);
- gen_helper_exclusive(tcg_env);
- ctx->base.is_jmp = DISAS_NORETURN;
+ gen_restart_exclusive(ctx);
/* We're not executing an instruction, but we must report one for the
purposes of accounting within the TB. We might as well report the
@@ -2242,12 +2249,22 @@ static void sh4_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs)
#ifdef CONFIG_USER_ONLY
if (unlikely(ctx->envflags & TB_FLAG_GUSA_MASK)
&& !(ctx->envflags & TB_FLAG_GUSA_EXCLUSIVE)) {
- /* We're in an gUSA region, and we have not already fallen
- back on using an exclusive region. Attempt to parse the
- region into a single supported atomic operation. Failure
- is handled within the parser by raising an exception to
- retry using an exclusive region. */
- decode_gusa(ctx, env);
+ /*
+ * We're in an gUSA region, and we have not already fallen
+ * back on using an exclusive region. Attempt to parse the
+ * region into a single supported atomic operation. Failure
+ * is handled within the parser by raising an exception to
+ * retry using an exclusive region.
+ *
+ * Parsing the region in one block conflicts with plugins,
+ * so always use exclusive mode if plugins enabled.
+ */
+ if (ctx->base.plugin_enabled) {
+ gen_restart_exclusive(ctx);
+ ctx->base.pc_next += 2;
+ } else {
+ decode_gusa(ctx, env);
+ }
return;
}
#endif
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 22/25] plugins: Set final instruction count in plugin_gen_tb_end
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
` (20 preceding siblings ...)
2023-10-09 16:41 ` [PATCH 21/25] target/sh4: Disable decode_gusa when plugins enabled Alex Bennée
@ 2023-10-09 16:41 ` Alex Bennée
2023-10-09 16:41 ` [PATCH 23/25] contrib/plugins: fix coverity warning in cache Alex Bennée
` (2 subsequent siblings)
24 siblings, 0 replies; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:41 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé, Matt Borgerson
From: Matt Borgerson <contact@mborgerson.com>
Translation logic may partially decode an instruction, then abort and
remove the instruction from the TB. This can happen for example when an
instruction spans two pages. In this case, plugins may get an incorrect
result when calling qemu_plugin_tb_n_insns to query for the number of
instructions in the TB. This patch updates plugin_gen_tb_end to set the
final instruction count.
Signed-off-by: Matt Borgerson <contact@mborgerson.com>
[AJB: added g_assert to defed API]
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <CADc=-s5RwGViNTR-h5cq3np673W3RRFfhr4vCGJp0EoDUxvhog@mail.gmail.com>
---
include/exec/plugin-gen.h | 4 ++--
accel/tcg/plugin-gen.c | 6 +++++-
accel/tcg/translator.c | 2 +-
3 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/include/exec/plugin-gen.h b/include/exec/plugin-gen.h
index 52828781bc..c4552b5061 100644
--- a/include/exec/plugin-gen.h
+++ b/include/exec/plugin-gen.h
@@ -20,7 +20,7 @@ struct DisasContextBase;
bool plugin_gen_tb_start(CPUState *cpu, const struct DisasContextBase *db,
bool supress);
-void plugin_gen_tb_end(CPUState *cpu);
+void plugin_gen_tb_end(CPUState *cpu, size_t num_insns);
void plugin_gen_insn_start(CPUState *cpu, const struct DisasContextBase *db);
void plugin_gen_insn_end(void);
@@ -42,7 +42,7 @@ void plugin_gen_insn_start(CPUState *cpu, const struct DisasContextBase *db)
static inline void plugin_gen_insn_end(void)
{ }
-static inline void plugin_gen_tb_end(CPUState *cpu)
+static inline void plugin_gen_tb_end(CPUState *cpu, size_t num_insns)
{ }
static inline void plugin_gen_disable_mem_helpers(void)
diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c
index d31c9993ea..39b3c9351f 100644
--- a/accel/tcg/plugin-gen.c
+++ b/accel/tcg/plugin-gen.c
@@ -866,10 +866,14 @@ void plugin_gen_insn_end(void)
* do any clean-up here and make sure things are reset in
* plugin_gen_tb_start.
*/
-void plugin_gen_tb_end(CPUState *cpu)
+void plugin_gen_tb_end(CPUState *cpu, size_t num_insns)
{
struct qemu_plugin_tb *ptb = tcg_ctx->plugin_tb;
+ /* translator may have removed instructions, update final count */
+ g_assert(num_insns <= ptb->n);
+ ptb->n = num_insns;
+
/* collect instrumentation requests */
qemu_plugin_tb_trans_cb(cpu, ptb);
diff --git a/accel/tcg/translator.c b/accel/tcg/translator.c
index c5da7b32a5..575b9812ad 100644
--- a/accel/tcg/translator.c
+++ b/accel/tcg/translator.c
@@ -210,7 +210,7 @@ void translator_loop(CPUState *cpu, TranslationBlock *tb, int *max_insns,
gen_tb_end(tb, cflags, icount_start_insn, db->num_insns);
if (plugin_enabled) {
- plugin_gen_tb_end(cpu);
+ plugin_gen_tb_end(cpu, db->num_insns);
}
/* The disas_log hook may use these values rather than recompute. */
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 23/25] contrib/plugins: fix coverity warning in cache
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
` (21 preceding siblings ...)
2023-10-09 16:41 ` [PATCH 22/25] plugins: Set final instruction count in plugin_gen_tb_end Alex Bennée
@ 2023-10-09 16:41 ` Alex Bennée
2023-10-09 16:41 ` [PATCH 24/25] contrib/plugins: fix coverity warning in lockstep Alex Bennée
2023-10-09 16:41 ` [PATCH 25/25] contrib/plugins: fix coverity warning in hotblocks Alex Bennée
24 siblings, 0 replies; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:41 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé
Coverity complains that appends_stats_line can be fed a 0 leading
to the undefined behaviour of a divide by 0.
Fixes: CID 1519044
Fixes: CID 1519047
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
contrib/plugins/cache.c | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/contrib/plugins/cache.c b/contrib/plugins/cache.c
index 4fca3edd07..9e7ade3b37 100644
--- a/contrib/plugins/cache.c
+++ b/contrib/plugins/cache.c
@@ -535,15 +535,13 @@ static void caches_free(Cache **caches)
}
}
-static void append_stats_line(GString *line, uint64_t l1_daccess,
- uint64_t l1_dmisses, uint64_t l1_iaccess,
- uint64_t l1_imisses, uint64_t l2_access,
- uint64_t l2_misses)
+static void append_stats_line(GString *line,
+ uint64_t l1_daccess, uint64_t l1_dmisses,
+ uint64_t l1_iaccess, uint64_t l1_imisses,
+ uint64_t l2_access, uint64_t l2_misses)
{
- double l1_dmiss_rate, l1_imiss_rate, l2_miss_rate;
-
- l1_dmiss_rate = ((double) l1_dmisses) / (l1_daccess) * 100.0;
- l1_imiss_rate = ((double) l1_imisses) / (l1_iaccess) * 100.0;
+ double l1_dmiss_rate = ((double) l1_dmisses) / (l1_daccess) * 100.0;
+ double l1_imiss_rate = ((double) l1_imisses) / (l1_iaccess) * 100.0;
g_string_append_printf(line, "%-14" PRIu64 " %-12" PRIu64 " %9.4lf%%"
" %-14" PRIu64 " %-12" PRIu64 " %9.4lf%%",
@@ -554,8 +552,8 @@ static void append_stats_line(GString *line, uint64_t l1_daccess,
l1_imisses,
l1_iaccess ? l1_imiss_rate : 0.0);
- if (use_l2) {
- l2_miss_rate = ((double) l2_misses) / (l2_access) * 100.0;
+ if (l2_access && l2_misses) {
+ double l2_miss_rate = ((double) l2_misses) / (l2_access) * 100.0;
g_string_append_printf(line,
" %-12" PRIu64 " %-11" PRIu64 " %10.4lf%%",
l2_access,
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 24/25] contrib/plugins: fix coverity warning in lockstep
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
` (22 preceding siblings ...)
2023-10-09 16:41 ` [PATCH 23/25] contrib/plugins: fix coverity warning in cache Alex Bennée
@ 2023-10-09 16:41 ` Alex Bennée
2023-10-09 16:41 ` [PATCH 25/25] contrib/plugins: fix coverity warning in hotblocks Alex Bennée
24 siblings, 0 replies; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:41 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé
Coverity complains that e don't check for a truncation when copying in
the path. Bail if we can't copy the whole path into sockaddr.
Fixes: CID 1519045
Fixes: CID 1519046
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
contrib/plugins/lockstep.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/contrib/plugins/lockstep.c b/contrib/plugins/lockstep.c
index 682b11feb2..f0cb8792c6 100644
--- a/contrib/plugins/lockstep.c
+++ b/contrib/plugins/lockstep.c
@@ -245,6 +245,7 @@ static void vcpu_tb_trans(qemu_plugin_id_t id, struct qemu_plugin_tb *tb)
static bool setup_socket(const char *path)
{
struct sockaddr_un sockaddr;
+ const gsize pathlen = sizeof(sockaddr.sun_path) - 1;
int fd;
fd = socket(AF_UNIX, SOCK_STREAM, 0);
@@ -254,7 +255,11 @@ static bool setup_socket(const char *path)
}
sockaddr.sun_family = AF_UNIX;
- g_strlcpy(sockaddr.sun_path, path, sizeof(sockaddr.sun_path) - 1);
+ if (g_strlcpy(sockaddr.sun_path, path, pathlen) >= pathlen) {
+ perror("bad path");
+ return false;
+ }
+
if (bind(fd, (struct sockaddr *)&sockaddr, sizeof(sockaddr)) < 0) {
perror("bind socket");
close(fd);
@@ -287,6 +292,7 @@ static bool connect_socket(const char *path)
{
int fd;
struct sockaddr_un sockaddr;
+ const gsize pathlen = sizeof(sockaddr.sun_path) - 1;
fd = socket(AF_UNIX, SOCK_STREAM, 0);
if (fd < 0) {
@@ -295,7 +301,10 @@ static bool connect_socket(const char *path)
}
sockaddr.sun_family = AF_UNIX;
- g_strlcpy(sockaddr.sun_path, path, sizeof(sockaddr.sun_path) - 1);
+ if (g_strlcpy(sockaddr.sun_path, path, pathlen) >= pathlen) {
+ perror("bad path");
+ return false;
+ }
if (connect(fd, (struct sockaddr *)&sockaddr, sizeof(sockaddr)) < 0) {
perror("failed to connect");
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [PATCH 25/25] contrib/plugins: fix coverity warning in hotblocks
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
` (23 preceding siblings ...)
2023-10-09 16:41 ` [PATCH 24/25] contrib/plugins: fix coverity warning in lockstep Alex Bennée
@ 2023-10-09 16:41 ` Alex Bennée
2023-10-10 12:00 ` Philippe Mathieu-Daudé
24 siblings, 1 reply; 37+ messages in thread
From: Alex Bennée @ 2023-10-09 16:41 UTC (permalink / raw)
To: qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Alex Bennée, Bastian Koppelmann, Brad Smith,
Radoslaw Biernacki, David Hildenbrand, Cleber Rosa,
Ilya Leoshkevich, qemu-riscv, Daniel Henrique Barboza,
Alexandre Iooss, Nicholas Piggin, Bin Meng, Leif Lindholm,
Paolo Bonzini, Eduardo Habkost, Alistair Francis, qemu-ppc,
John Snow, Liu Zhiwei, qemu-arm, Wainer dos Santos Moschetta,
Palmer Dabbelt, Peter Maydell, Yanan Wang, Weiwei Li,
Daniel P. Berrangé, Marcel Apfelbaum, Beraldo Leal,
Yoshinori Sato, Mahmoud Mandour, Richard Henderson, Song Gao,
Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé
Coverity complains that we have an unbalance use of mutex leading to
potential deadlocks.
Fixes: CID 1519048
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
contrib/plugins/hotblocks.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/contrib/plugins/hotblocks.c b/contrib/plugins/hotblocks.c
index 6b74d25fea..4de1b13494 100644
--- a/contrib/plugins/hotblocks.c
+++ b/contrib/plugins/hotblocks.c
@@ -69,8 +69,8 @@ static void plugin_exit(qemu_plugin_id_t id, void *p)
}
g_list_free(it);
- g_mutex_unlock(&lock);
}
+ g_mutex_unlock(&lock);
qemu_plugin_outs(report->str);
}
--
2.39.2
^ permalink raw reply related [flat|nested] 37+ messages in thread
* Re: [PATCH 02/25] tests/avocado: remove flaky test marking for test_sbsaref_edk2_firmware
2023-10-09 16:40 ` [PATCH 02/25] tests/avocado: remove flaky test marking for test_sbsaref_edk2_firmware Alex Bennée
@ 2023-10-10 11:56 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 37+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-10-10 11:56 UTC (permalink / raw)
To: Alex Bennée, qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Bastian Koppelmann, Brad Smith, Radoslaw Biernacki,
David Hildenbrand, Cleber Rosa, Ilya Leoshkevich, qemu-riscv,
Daniel Henrique Barboza, Alexandre Iooss, Nicholas Piggin,
Bin Meng, Leif Lindholm, Paolo Bonzini, Eduardo Habkost,
Alistair Francis, qemu-ppc, John Snow, Liu Zhiwei, qemu-arm,
Wainer dos Santos Moschetta, Palmer Dabbelt, Peter Maydell,
Yanan Wang, Weiwei Li, Daniel P. Berrangé, Marcel Apfelbaum,
Beraldo Leal, Yoshinori Sato, Mahmoud Mandour, Richard Henderson,
Song Gao, Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau
On 9/10/23 18:40, Alex Bennée wrote:
> After testing locally I decided to revert a5754847e0 (tests/avocado: Disable the
> test_sbsaref_edk2_firmware by default) as the test seems pretty
> stable:
>
> env QEMU_TEST_FLAKY_TESTS=1 retry.py -n 50 -c -- \
> ./tests/venv/bin/avocado run \
> ./tests/avocado/machine_aarch64_sbsaref.py:Aarch64SbsarefMachine.test_sbsaref_edk2_firmware
>
> yields:
>
> Results summary:
> 0: 50 times (100.00%), avg time 2.064 (0.04 varience/0.19 deviation)
> Ran command 50 times, 50 passes
>
> Maybe f0ec14c78c (tests/avocado: Fix console data loss) has made it
> more reliable?
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> Cc: Thomas Huth <thuth@redhat.com>
> ---
> tests/avocado/machine_aarch64_sbsaref.py | 1 -
> 1 file changed, 1 deletion(-)
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 03/25] tests/lcitool: add swtpm to the package list
2023-10-09 16:40 ` [PATCH 03/25] tests/lcitool: add swtpm to the package list Alex Bennée
@ 2023-10-10 11:57 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 37+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-10-10 11:57 UTC (permalink / raw)
To: Alex Bennée, qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Bastian Koppelmann, Brad Smith, Radoslaw Biernacki,
David Hildenbrand, Cleber Rosa, Ilya Leoshkevich, qemu-riscv,
Daniel Henrique Barboza, Alexandre Iooss, Nicholas Piggin,
Bin Meng, Leif Lindholm, Paolo Bonzini, Eduardo Habkost,
Alistair Francis, qemu-ppc, John Snow, Liu Zhiwei, qemu-arm,
Wainer dos Santos Moschetta, Palmer Dabbelt, Peter Maydell,
Yanan Wang, Weiwei Li, Daniel P. Berrangé, Marcel Apfelbaum,
Beraldo Leal, Yoshinori Sato, Mahmoud Mandour, Richard Henderson,
Song Gao, Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau
On 9/10/23 18:40, Alex Bennée wrote:
> We need this to test some TPM stuff.
>
> Message-Id: <20230925144854.1872513-3-alex.bennee@linaro.org>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
> .gitlab-ci.d/cirrus/macos-12.vars | 2 +-
> tests/docker/dockerfiles/alpine.docker | 1 +
> tests/docker/dockerfiles/centos8.docker | 1 +
> tests/docker/dockerfiles/debian-amd64-cross.docker | 1 +
> tests/docker/dockerfiles/debian-amd64.docker | 1 +
> tests/docker/dockerfiles/debian-arm64-cross.docker | 1 +
> tests/docker/dockerfiles/debian-armhf-cross.docker | 1 +
> tests/docker/dockerfiles/debian-ppc64el-cross.docker | 1 +
> tests/docker/dockerfiles/debian-s390x-cross.docker | 1 +
> tests/docker/dockerfiles/fedora-win32-cross.docker | 1 +
> tests/docker/dockerfiles/fedora-win64-cross.docker | 1 +
> tests/docker/dockerfiles/fedora.docker | 1 +
> tests/docker/dockerfiles/opensuse-leap.docker | 1 +
> tests/docker/dockerfiles/ubuntu2204.docker | 1 +
> tests/lcitool/libvirt-ci | 2 +-
> tests/lcitool/projects/qemu.yml | 1 +
> 16 files changed, 16 insertions(+), 2 deletions(-)
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 07/25] configure: remove gcc version suffixes
2023-10-09 16:40 ` [PATCH 07/25] configure: remove gcc version suffixes Alex Bennée
@ 2023-10-10 11:57 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 37+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-10-10 11:57 UTC (permalink / raw)
To: Alex Bennée, qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Bastian Koppelmann, Brad Smith, Radoslaw Biernacki,
David Hildenbrand, Cleber Rosa, Ilya Leoshkevich, qemu-riscv,
Daniel Henrique Barboza, Alexandre Iooss, Nicholas Piggin,
Bin Meng, Leif Lindholm, Paolo Bonzini, Eduardo Habkost,
Alistair Francis, qemu-ppc, John Snow, Liu Zhiwei, qemu-arm,
Wainer dos Santos Moschetta, Palmer Dabbelt, Peter Maydell,
Yanan Wang, Weiwei Li, Daniel P. Berrangé, Marcel Apfelbaum,
Beraldo Leal, Yoshinori Sato, Mahmoud Mandour, Richard Henderson,
Song Gao, Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau
On 9/10/23 18:40, Alex Bennée wrote:
> The modern packaging of cross GCC's doesn't need the explicit version
> number at the end.
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> ---
> configure | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 25/25] contrib/plugins: fix coverity warning in hotblocks
2023-10-09 16:41 ` [PATCH 25/25] contrib/plugins: fix coverity warning in hotblocks Alex Bennée
@ 2023-10-10 12:00 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 37+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-10-10 12:00 UTC (permalink / raw)
To: Alex Bennée, qemu-devel
Cc: Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Bastian Koppelmann, Brad Smith, Radoslaw Biernacki,
David Hildenbrand, Cleber Rosa, Ilya Leoshkevich, qemu-riscv,
Daniel Henrique Barboza, Alexandre Iooss, Nicholas Piggin,
Bin Meng, Leif Lindholm, Paolo Bonzini, Eduardo Habkost,
Alistair Francis, qemu-ppc, John Snow, Liu Zhiwei, qemu-arm,
Wainer dos Santos Moschetta, Palmer Dabbelt, Peter Maydell,
Yanan Wang, Weiwei Li, Daniel P. Berrangé, Marcel Apfelbaum,
Beraldo Leal, Yoshinori Sato, Mahmoud Mandour, Richard Henderson,
Song Gao, Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau
On 9/10/23 18:41, Alex Bennée wrote:
> Coverity complains that we have an unbalance use of mutex leading to
> potential deadlocks.
>
> Fixes: CID 1519048
Fixes: a208ba09bd ("tests/plugin: add a hotblocks plugin")
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> ---
> contrib/plugins/hotblocks.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 14/25] hw/core/cpu: Return static value with gdb_arch_name()
2023-10-09 16:40 ` [PATCH 14/25] hw/core/cpu: Return static value with gdb_arch_name() Alex Bennée
@ 2023-10-11 0:55 ` Alistair Francis
0 siblings, 0 replies; 37+ messages in thread
From: Alistair Francis @ 2023-10-11 0:55 UTC (permalink / raw)
To: Alex Bennée
Cc: qemu-devel, Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Bastian Koppelmann, Brad Smith, Radoslaw Biernacki,
David Hildenbrand, Cleber Rosa, Ilya Leoshkevich, qemu-riscv,
Daniel Henrique Barboza, Alexandre Iooss, Nicholas Piggin,
Bin Meng, Leif Lindholm, Paolo Bonzini, Eduardo Habkost,
Alistair Francis, qemu-ppc, John Snow, Liu Zhiwei, qemu-arm,
Wainer dos Santos Moschetta, Palmer Dabbelt, Peter Maydell,
Yanan Wang, Weiwei Li, Daniel P. Berrangé, Marcel Apfelbaum,
Beraldo Leal, Yoshinori Sato, Mahmoud Mandour, Richard Henderson,
Song Gao, Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé, Akihiko Odaki
On Tue, Oct 10, 2023 at 2:44 AM Alex Bennée <alex.bennee@linaro.org> wrote:
>
> From: Akihiko Odaki <akihiko.odaki@daynix.com>
>
> All implementations of gdb_arch_name() returns dynamic duplicates of
> static strings. It's also unlikely that there will be an implementation
> of gdb_arch_name() that returns a truly dynamic value due to the nature
> of the function returning a well-known identifiers. Qualify the value
> gdb_arch_name() with const and make all of its implementations return
> static strings.
>
> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
> Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
> Message-Id: <20230912224107.29669-8-akihiko.odaki@daynix.com>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Alistair
> ---
> include/hw/core/cpu.h | 2 +-
> target/ppc/internal.h | 2 +-
> gdbstub/gdbstub.c | 3 +--
> target/arm/cpu.c | 6 +++---
> target/arm/cpu64.c | 4 ++--
> target/i386/cpu.c | 6 +++---
> target/loongarch/cpu.c | 8 ++++----
> target/ppc/gdbstub.c | 6 +++---
> target/riscv/cpu.c | 6 +++---
> target/s390x/cpu.c | 4 ++--
> target/tricore/cpu.c | 4 ++--
> 11 files changed, 25 insertions(+), 26 deletions(-)
>
> diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
> index e02bc5980f..7b8347ed5a 100644
> --- a/include/hw/core/cpu.h
> +++ b/include/hw/core/cpu.h
> @@ -165,7 +165,7 @@ struct CPUClass {
> vaddr (*gdb_adjust_breakpoint)(CPUState *cpu, vaddr addr);
>
> const char *gdb_core_xml_file;
> - gchar * (*gdb_arch_name)(CPUState *cpu);
> + const gchar * (*gdb_arch_name)(CPUState *cpu);
> const char * (*gdb_get_dynamic_xml)(CPUState *cpu, const char *xmlname);
>
> void (*disas_set_info)(CPUState *cpu, disassemble_info *info);
> diff --git a/target/ppc/internal.h b/target/ppc/internal.h
> index 15803bc313..c881c67a8b 100644
> --- a/target/ppc/internal.h
> +++ b/target/ppc/internal.h
> @@ -221,7 +221,7 @@ void destroy_ppc_opcodes(PowerPCCPU *cpu);
>
> /* gdbstub.c */
> void ppc_gdb_init(CPUState *cs, PowerPCCPUClass *ppc);
> -gchar *ppc_gdb_arch_name(CPUState *cs);
> +const gchar *ppc_gdb_arch_name(CPUState *cs);
>
> /**
> * prot_for_access_type:
> diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
> index bba2640293..a20169c27b 100644
> --- a/gdbstub/gdbstub.c
> +++ b/gdbstub/gdbstub.c
> @@ -380,10 +380,9 @@ static const char *get_feature_xml(const char *p, const char **newp,
> "<target>");
>
> if (cc->gdb_arch_name) {
> - g_autofree gchar *arch = cc->gdb_arch_name(cpu);
> g_string_append_printf(xml,
> "<architecture>%s</architecture>",
> - arch);
> + cc->gdb_arch_name(cpu));
> }
> g_string_append(xml, "<xi:include href=\"");
> g_string_append(xml, cc->gdb_core_xml_file);
> diff --git a/target/arm/cpu.c b/target/arm/cpu.c
> index b65e8cfea3..6c6c551573 100644
> --- a/target/arm/cpu.c
> +++ b/target/arm/cpu.c
> @@ -2319,15 +2319,15 @@ static Property arm_cpu_properties[] = {
> DEFINE_PROP_END_OF_LIST()
> };
>
> -static gchar *arm_gdb_arch_name(CPUState *cs)
> +static const gchar *arm_gdb_arch_name(CPUState *cs)
> {
> ARMCPU *cpu = ARM_CPU(cs);
> CPUARMState *env = &cpu->env;
>
> if (arm_feature(env, ARM_FEATURE_IWMMXT)) {
> - return g_strdup("iwmmxt");
> + return "iwmmxt";
> }
> - return g_strdup("arm");
> + return "arm";
> }
>
> #ifndef CONFIG_USER_ONLY
> diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c
> index 811f3b38c2..1cb9d5b81a 100644
> --- a/target/arm/cpu64.c
> +++ b/target/arm/cpu64.c
> @@ -781,9 +781,9 @@ static void aarch64_cpu_finalizefn(Object *obj)
> {
> }
>
> -static gchar *aarch64_gdb_arch_name(CPUState *cs)
> +static const gchar *aarch64_gdb_arch_name(CPUState *cs)
> {
> - return g_strdup("aarch64");
> + return "aarch64";
> }
>
> static void aarch64_cpu_class_init(ObjectClass *oc, void *data)
> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> index 9fad31b8db..c09bab4281 100644
> --- a/target/i386/cpu.c
> +++ b/target/i386/cpu.c
> @@ -5915,12 +5915,12 @@ static void x86_cpu_load_model(X86CPU *cpu, X86CPUModel *model)
> memset(&env->user_features, 0, sizeof(env->user_features));
> }
>
> -static gchar *x86_gdb_arch_name(CPUState *cs)
> +static const gchar *x86_gdb_arch_name(CPUState *cs)
> {
> #ifdef TARGET_X86_64
> - return g_strdup("i386:x86-64");
> + return "i386:x86-64";
> #else
> - return g_strdup("i386");
> + return "i386";
> #endif
> }
>
> diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c
> index 2bea7ca5d5..ef1bf89dac 100644
> --- a/target/loongarch/cpu.c
> +++ b/target/loongarch/cpu.c
> @@ -766,9 +766,9 @@ static void loongarch_cpu_class_init(ObjectClass *c, void *data)
> #endif
> }
>
> -static gchar *loongarch32_gdb_arch_name(CPUState *cs)
> +static const gchar *loongarch32_gdb_arch_name(CPUState *cs)
> {
> - return g_strdup("loongarch32");
> + return "loongarch32";
> }
>
> static void loongarch32_cpu_class_init(ObjectClass *c, void *data)
> @@ -780,9 +780,9 @@ static void loongarch32_cpu_class_init(ObjectClass *c, void *data)
> cc->gdb_arch_name = loongarch32_gdb_arch_name;
> }
>
> -static gchar *loongarch64_gdb_arch_name(CPUState *cs)
> +static const gchar *loongarch64_gdb_arch_name(CPUState *cs)
> {
> - return g_strdup("loongarch64");
> + return "loongarch64";
> }
>
> static void loongarch64_cpu_class_init(ObjectClass *c, void *data)
> diff --git a/target/ppc/gdbstub.c b/target/ppc/gdbstub.c
> index 2ad11510bf..778ef73bd7 100644
> --- a/target/ppc/gdbstub.c
> +++ b/target/ppc/gdbstub.c
> @@ -589,12 +589,12 @@ static int gdb_set_vsx_reg(CPUPPCState *env, uint8_t *mem_buf, int n)
> return 0;
> }
>
> -gchar *ppc_gdb_arch_name(CPUState *cs)
> +const gchar *ppc_gdb_arch_name(CPUState *cs)
> {
> #if defined(TARGET_PPC64)
> - return g_strdup("powerpc:common64");
> + return "powerpc:common64";
> #else
> - return g_strdup("powerpc:common");
> + return "powerpc:common";
> #endif
> }
>
> diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
> index ac2b94b6a6..f5572704de 100644
> --- a/target/riscv/cpu.c
> +++ b/target/riscv/cpu.c
> @@ -2004,17 +2004,17 @@ static Property riscv_cpu_properties[] = {
> DEFINE_PROP_END_OF_LIST(),
> };
>
> -static gchar *riscv_gdb_arch_name(CPUState *cs)
> +static const gchar *riscv_gdb_arch_name(CPUState *cs)
> {
> RISCVCPU *cpu = RISCV_CPU(cs);
> CPURISCVState *env = &cpu->env;
>
> switch (riscv_cpu_mxl(env)) {
> case MXL_RV32:
> - return g_strdup("riscv:rv32");
> + return "riscv:rv32";
> case MXL_RV64:
> case MXL_RV128:
> - return g_strdup("riscv:rv64");
> + return "riscv:rv64";
> default:
> g_assert_not_reached();
> }
> diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c
> index 4f7599d72c..6093ab0a12 100644
> --- a/target/s390x/cpu.c
> +++ b/target/s390x/cpu.c
> @@ -282,9 +282,9 @@ static void s390_cpu_initfn(Object *obj)
> #endif
> }
>
> -static gchar *s390_gdb_arch_name(CPUState *cs)
> +static const gchar *s390_gdb_arch_name(CPUState *cs)
> {
> - return g_strdup("s390:64-bit");
> + return "s390:64-bit";
> }
>
> static Property s390x_cpu_properties[] = {
> diff --git a/target/tricore/cpu.c b/target/tricore/cpu.c
> index d1477622e6..5ca666ee12 100644
> --- a/target/tricore/cpu.c
> +++ b/target/tricore/cpu.c
> @@ -29,9 +29,9 @@ static inline void set_feature(CPUTriCoreState *env, int feature)
> env->features |= 1ULL << feature;
> }
>
> -static gchar *tricore_gdb_arch_name(CPUState *cs)
> +static const gchar *tricore_gdb_arch_name(CPUState *cs)
> {
> - return g_strdup("tricore");
> + return "tricore";
> }
>
> static void tricore_cpu_set_pc(CPUState *cs, vaddr value)
> --
> 2.39.2
>
>
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 19/25] gdbstub: Replace gdb_regs with an array
2023-10-09 16:40 ` [PATCH 19/25] gdbstub: Replace gdb_regs with an array Alex Bennée
@ 2023-10-11 0:57 ` Alistair Francis
0 siblings, 0 replies; 37+ messages in thread
From: Alistair Francis @ 2023-10-11 0:57 UTC (permalink / raw)
To: Alex Bennée
Cc: qemu-devel, Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Bastian Koppelmann, Brad Smith, Radoslaw Biernacki,
David Hildenbrand, Cleber Rosa, Ilya Leoshkevich, qemu-riscv,
Daniel Henrique Barboza, Alexandre Iooss, Nicholas Piggin,
Bin Meng, Leif Lindholm, Paolo Bonzini, Eduardo Habkost,
Alistair Francis, qemu-ppc, John Snow, Liu Zhiwei, qemu-arm,
Wainer dos Santos Moschetta, Palmer Dabbelt, Peter Maydell,
Yanan Wang, Weiwei Li, Daniel P. Berrangé, Marcel Apfelbaum,
Beraldo Leal, Yoshinori Sato, Mahmoud Mandour, Richard Henderson,
Song Gao, Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé, Akihiko Odaki
On Tue, Oct 10, 2023 at 2:47 AM Alex Bennée <alex.bennee@linaro.org> wrote:
>
> From: Akihiko Odaki <akihiko.odaki@daynix.com>
>
> An array is a more appropriate data structure than a list for gdb_regs
> since it is initialized only with append operation and read-only after
> initialization.
>
> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
> Message-Id: <20230912224107.29669-13-akihiko.odaki@daynix.com>
> [AJB: fixed a checkpatch violation]
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Alistair
> ---
> include/hw/core/cpu.h | 2 +-
> gdbstub/gdbstub.c | 35 +++++++++++++++++++++--------------
> 2 files changed, 22 insertions(+), 15 deletions(-)
>
> diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
> index 7b8347ed5a..3968369554 100644
> --- a/include/hw/core/cpu.h
> +++ b/include/hw/core/cpu.h
> @@ -502,7 +502,7 @@ struct CPUState {
>
> CPUJumpCache *tb_jmp_cache;
>
> - struct GDBRegisterState *gdb_regs;
> + GArray *gdb_regs;
> int gdb_num_regs;
> int gdb_num_g_regs;
> QTAILQ_ENTRY(CPUState) node;
> diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
> index 62608a5389..b1532118d1 100644
> --- a/gdbstub/gdbstub.c
> +++ b/gdbstub/gdbstub.c
> @@ -51,7 +51,6 @@ typedef struct GDBRegisterState {
> gdb_get_reg_cb get_reg;
> gdb_set_reg_cb set_reg;
> const char *xml;
> - struct GDBRegisterState *next;
> } GDBRegisterState;
>
> GDBState gdbserver_state;
> @@ -386,7 +385,8 @@ static const char *get_feature_xml(const char *p, const char **newp,
> xml,
> g_markup_printf_escaped("<xi:include href=\"%s\"/>",
> cc->gdb_core_xml_file));
> - for (r = cpu->gdb_regs; r; r = r->next) {
> + for (guint i = 0; i < cpu->gdb_regs->len; i++) {
> + r = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
> g_ptr_array_add(
> xml,
> g_markup_printf_escaped("<xi:include href=\"%s\"/>",
> @@ -430,7 +430,8 @@ static int gdb_read_register(CPUState *cpu, GByteArray *buf, int reg)
> return cc->gdb_read_register(cpu, buf, reg);
> }
>
> - for (r = cpu->gdb_regs; r; r = r->next) {
> + for (guint i = 0; i < cpu->gdb_regs->len; i++) {
> + r = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
> if (r->base_reg <= reg && reg < r->base_reg + r->num_regs) {
> return r->get_reg(env, buf, reg - r->base_reg);
> }
> @@ -448,7 +449,8 @@ static int gdb_write_register(CPUState *cpu, uint8_t *mem_buf, int reg)
> return cc->gdb_write_register(cpu, mem_buf, reg);
> }
>
> - for (r = cpu->gdb_regs; r; r = r->next) {
> + for (guint i = 0; i < cpu->gdb_regs->len; i++) {
> + r = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
> if (r->base_reg <= reg && reg < r->base_reg + r->num_regs) {
> return r->set_reg(env, mem_buf, reg - r->base_reg);
> }
> @@ -461,17 +463,23 @@ void gdb_register_coprocessor(CPUState *cpu,
> int num_regs, const char *xml, int g_pos)
> {
> GDBRegisterState *s;
> - GDBRegisterState **p;
> -
> - p = &cpu->gdb_regs;
> - while (*p) {
> - /* Check for duplicates. */
> - if (strcmp((*p)->xml, xml) == 0)
> - return;
> - p = &(*p)->next;
> + guint i;
> +
> + if (cpu->gdb_regs) {
> + for (i = 0; i < cpu->gdb_regs->len; i++) {
> + /* Check for duplicates. */
> + s = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
> + if (strcmp(s->xml, xml) == 0) {
> + return;
> + }
> + }
> + } else {
> + cpu->gdb_regs = g_array_new(false, false, sizeof(GDBRegisterState));
> + i = 0;
> }
>
> - s = g_new0(GDBRegisterState, 1);
> + g_array_set_size(cpu->gdb_regs, i + 1);
> + s = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
> s->base_reg = cpu->gdb_num_regs;
> s->num_regs = num_regs;
> s->get_reg = get_reg;
> @@ -480,7 +488,6 @@ void gdb_register_coprocessor(CPUState *cpu,
>
> /* Add to end of list. */
> cpu->gdb_num_regs += num_regs;
> - *p = s;
> if (g_pos) {
> if (g_pos != s->base_reg) {
> error_report("Error: Bad gdb register numbering for '%s', "
> --
> 2.39.2
>
>
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 18/25] gdbstub: Remove gdb_has_xml variable
2023-10-09 16:40 ` [PATCH 18/25] gdbstub: Remove gdb_has_xml variable Alex Bennée
@ 2023-10-11 0:58 ` Alistair Francis
0 siblings, 0 replies; 37+ messages in thread
From: Alistair Francis @ 2023-10-11 0:58 UTC (permalink / raw)
To: Alex Bennée
Cc: qemu-devel, Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Bastian Koppelmann, Brad Smith, Radoslaw Biernacki,
David Hildenbrand, Cleber Rosa, Ilya Leoshkevich, qemu-riscv,
Daniel Henrique Barboza, Alexandre Iooss, Nicholas Piggin,
Bin Meng, Leif Lindholm, Paolo Bonzini, Eduardo Habkost,
Alistair Francis, qemu-ppc, John Snow, Liu Zhiwei, qemu-arm,
Wainer dos Santos Moschetta, Palmer Dabbelt, Peter Maydell,
Yanan Wang, Weiwei Li, Daniel P. Berrangé, Marcel Apfelbaum,
Beraldo Leal, Yoshinori Sato, Mahmoud Mandour, Richard Henderson,
Song Gao, Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé, Akihiko Odaki
On Tue, Oct 10, 2023 at 2:48 AM Alex Bennée <alex.bennee@linaro.org> wrote:
>
> From: Akihiko Odaki <akihiko.odaki@daynix.com>
>
> GDB has XML support since 6.7 which was released in 2007.
> It's time to remove support for old GDB versions without XML support.
>
> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
> Message-Id: <20230912224107.29669-12-akihiko.odaki@daynix.com>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Alistair
> ---
> gdbstub/internals.h | 2 --
> include/exec/gdbstub.h | 8 --------
> gdbstub/gdbstub.c | 15 ---------------
> 3 files changed, 25 deletions(-)
>
> diff --git a/gdbstub/internals.h b/gdbstub/internals.h
> index fee243081f..7128c4aa85 100644
> --- a/gdbstub/internals.h
> +++ b/gdbstub/internals.h
> @@ -32,8 +32,6 @@ enum {
> typedef struct GDBProcess {
> uint32_t pid;
> bool attached;
> -
> - /* If gdb sends qXfer:features:read:target.xml this will be populated */
> char *target_xml;
> } GDBProcess;
>
> diff --git a/include/exec/gdbstub.h b/include/exec/gdbstub.h
> index 705be2c5d7..1a01c35f8e 100644
> --- a/include/exec/gdbstub.h
> +++ b/include/exec/gdbstub.h
> @@ -45,14 +45,6 @@ int gdbserver_start(const char *port_or_device);
>
> void gdb_set_stop_cpu(CPUState *cpu);
>
> -/**
> - * gdb_has_xml() - report of gdb supports modern target descriptions
> - *
> - * This will report true if the gdb negotiated qXfer:features:read
> - * target descriptions.
> - */
> -bool gdb_has_xml(void);
> -
> /* in gdbstub-xml.c, generated by scripts/feature_to_c.py */
> extern const GDBFeature gdb_static_features[];
>
> diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
> index 3dc847f835..62608a5389 100644
> --- a/gdbstub/gdbstub.c
> +++ b/gdbstub/gdbstub.c
> @@ -349,11 +349,6 @@ static CPUState *gdb_get_cpu(uint32_t pid, uint32_t tid)
> }
> }
>
> -bool gdb_has_xml(void)
> -{
> - return !!gdb_get_cpu_process(gdbserver_state.g_cpu)->target_xml;
> -}
> -
> static const char *get_feature_xml(const char *p, const char **newp,
> GDBProcess *process)
> {
> @@ -1086,11 +1081,6 @@ static void handle_set_reg(GArray *params, void *user_ctx)
> {
> int reg_size;
>
> - if (!gdb_get_cpu_process(gdbserver_state.g_cpu)->target_xml) {
> - gdb_put_packet("");
> - return;
> - }
> -
> if (params->len != 2) {
> gdb_put_packet("E22");
> return;
> @@ -1107,11 +1097,6 @@ static void handle_get_reg(GArray *params, void *user_ctx)
> {
> int reg_size;
>
> - if (!gdb_get_cpu_process(gdbserver_state.g_cpu)->target_xml) {
> - gdb_put_packet("");
> - return;
> - }
> -
> if (!params->len) {
> gdb_put_packet("E14");
> return;
> --
> 2.39.2
>
>
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 06/25] configure: allow user to override docker engine
2023-10-09 16:40 ` [PATCH 06/25] configure: allow user to override docker engine Alex Bennée
@ 2023-10-11 0:59 ` Alistair Francis
0 siblings, 0 replies; 37+ messages in thread
From: Alistair Francis @ 2023-10-11 0:59 UTC (permalink / raw)
To: Alex Bennée
Cc: qemu-devel, Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Bastian Koppelmann, Brad Smith, Radoslaw Biernacki,
David Hildenbrand, Cleber Rosa, Ilya Leoshkevich, qemu-riscv,
Daniel Henrique Barboza, Alexandre Iooss, Nicholas Piggin,
Bin Meng, Leif Lindholm, Paolo Bonzini, Eduardo Habkost,
Alistair Francis, qemu-ppc, John Snow, Liu Zhiwei, qemu-arm,
Wainer dos Santos Moschetta, Palmer Dabbelt, Peter Maydell,
Yanan Wang, Weiwei Li, Daniel P. Berrangé, Marcel Apfelbaum,
Beraldo Leal, Yoshinori Sato, Mahmoud Mandour, Richard Henderson,
Song Gao, Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé
On Tue, Oct 10, 2023 at 3:52 AM Alex Bennée <alex.bennee@linaro.org> wrote:
>
> If you have both engines installed but one is broken you are stuck
> with the automagic. Allow the user to override the engine for this
> case.
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Alistair
> ---
> configure | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/configure b/configure
> index 707132a3ae..ebad155d9e 100755
> --- a/configure
> +++ b/configure
> @@ -180,6 +180,7 @@ fi
> # some defaults, based on the host environment
>
> # default parameters
> +container_engine="auto"
> cpu=""
> cross_compile="no"
> cross_prefix=""
> @@ -787,6 +788,8 @@ for opt do
> ;;
> --disable-containers) use_containers="no"
> ;;
> + --container-engine=*) container_engine="$optarg"
> + ;;
> --gdb=*) gdb_bin="$optarg"
> ;;
> # everything else has the same name in configure and meson
> @@ -921,6 +924,7 @@ Advanced options (experts only):
> --enable-plugins
> enable plugins via shared library loading
> --disable-containers don't use containers for cross-building
> + --container-engine=TYPE which container engine to use [$container_engine]
> --gdb=GDB-path gdb to use for gdbstub tests [$gdb_bin]
> EOF
> meson_options_help
> @@ -1195,14 +1199,14 @@ fi
> container="no"
> runc=""
> if test $use_containers = "yes" && (has "docker" || has "podman"); then
> - case $($python "$source_path"/tests/docker/docker.py probe) in
> + case $($python "$source_path"/tests/docker/docker.py --engine "$container_engine" probe) in
> *docker) container=docker ;;
> podman) container=podman ;;
> no) container=no ;;
> esac
> if test "$container" != "no"; then
> docker_py="$python $source_path/tests/docker/docker.py --engine $container"
> - runc=$($python "$source_path"/tests/docker/docker.py probe)
> + runc=$container
> fi
> fi
>
> --
> 2.39.2
>
>
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 08/25] gdbstub: Fix target_xml initialization
2023-10-09 16:40 ` [PATCH 08/25] gdbstub: Fix target_xml initialization Alex Bennée
@ 2023-10-11 1:00 ` Alistair Francis
0 siblings, 0 replies; 37+ messages in thread
From: Alistair Francis @ 2023-10-11 1:00 UTC (permalink / raw)
To: Alex Bennée
Cc: qemu-devel, Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Bastian Koppelmann, Brad Smith, Radoslaw Biernacki,
David Hildenbrand, Cleber Rosa, Ilya Leoshkevich, qemu-riscv,
Daniel Henrique Barboza, Alexandre Iooss, Nicholas Piggin,
Bin Meng, Leif Lindholm, Paolo Bonzini, Eduardo Habkost,
Alistair Francis, qemu-ppc, John Snow, Liu Zhiwei, qemu-arm,
Wainer dos Santos Moschetta, Palmer Dabbelt, Peter Maydell,
Yanan Wang, Weiwei Li, Daniel P. Berrangé, Marcel Apfelbaum,
Beraldo Leal, Yoshinori Sato, Mahmoud Mandour, Richard Henderson,
Song Gao, Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé, Akihiko Odaki
On Tue, Oct 10, 2023 at 4:36 AM Alex Bennée <alex.bennee@linaro.org> wrote:
>
> From: Akihiko Odaki <akihiko.odaki@daynix.com>
>
> target_xml is no longer a fixed-length array but a pointer to a
> variable-length memory.
>
> Fixes: 56e534bd11 ("gdbstub: refactor get_feature_xml")
> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> Message-Id: <20230912224107.29669-2-akihiko.odaki@daynix.com>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Alistair
> ---
> gdbstub/softmmu.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/gdbstub/softmmu.c b/gdbstub/softmmu.c
> index 9f0b8b5497..42645d2220 100644
> --- a/gdbstub/softmmu.c
> +++ b/gdbstub/softmmu.c
> @@ -292,7 +292,7 @@ static int find_cpu_clusters(Object *child, void *opaque)
> assert(cluster->cluster_id != UINT32_MAX);
> process->pid = cluster->cluster_id + 1;
> process->attached = false;
> - process->target_xml[0] = '\0';
> + process->target_xml = NULL;
>
> return 0;
> }
> --
> 2.39.2
>
>
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 05/25] tests/docker: make docker engine choice entirely configure driven
2023-10-09 16:40 ` [PATCH 05/25] tests/docker: make docker engine choice entirely configure driven Alex Bennée
@ 2023-10-11 1:02 ` Alistair Francis
0 siblings, 0 replies; 37+ messages in thread
From: Alistair Francis @ 2023-10-11 1:02 UTC (permalink / raw)
To: Alex Bennée
Cc: qemu-devel, Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Bastian Koppelmann, Brad Smith, Radoslaw Biernacki,
David Hildenbrand, Cleber Rosa, Ilya Leoshkevich, qemu-riscv,
Daniel Henrique Barboza, Alexandre Iooss, Nicholas Piggin,
Bin Meng, Leif Lindholm, Paolo Bonzini, Eduardo Habkost,
Alistair Francis, qemu-ppc, John Snow, Liu Zhiwei, qemu-arm,
Wainer dos Santos Moschetta, Palmer Dabbelt, Peter Maydell,
Yanan Wang, Weiwei Li, Daniel P. Berrangé, Marcel Apfelbaum,
Beraldo Leal, Yoshinori Sato, Mahmoud Mandour, Richard Henderson,
Song Gao, Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé
On Tue, Oct 10, 2023 at 4:05 AM Alex Bennée <alex.bennee@linaro.org> wrote:
>
> Since 0b1a649047 (tests/docker: use direct RUNC call to build
> containers) we ended up with the potential for the remaining docker.py
> script calls to deviate from the direct RUNC calls. Fix this by
> dropping the use of ENGINE in the makefile and rely entirely on what
> we detect at configure time.
>
> We also tweak the RUNC detection so podman users can still run things
> from the source tree.
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Alistair
>
> ---
> v2
> - add RUNC stanza suggested by Paolo
> ---
> configure | 1 -
> tests/docker/Makefile.include | 9 +++------
> 2 files changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/configure b/configure
> index e08127045d..707132a3ae 100755
> --- a/configure
> +++ b/configure
> @@ -1694,7 +1694,6 @@ if test -n "$gdb_bin"; then
> fi
>
> if test "$container" != no; then
> - echo "ENGINE=$container" >> $config_host_mak
> echo "RUNC=$runc" >> $config_host_mak
> fi
> echo "SUBDIRS=$subdirs" >> $config_host_mak
> diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include
> index dfabafab92..ab68b2dbad 100644
> --- a/tests/docker/Makefile.include
> +++ b/tests/docker/Makefile.include
> @@ -16,9 +16,8 @@ DOCKER_DEFAULT_REGISTRY := registry.gitlab.com/qemu-project/qemu
> endif
> DOCKER_REGISTRY := $(if $(REGISTRY),$(REGISTRY),$(DOCKER_DEFAULT_REGISTRY))
>
> -RUNC ?= docker
> -ENGINE ?= auto
> -DOCKER_SCRIPT=$(SRC_PATH)/tests/docker/docker.py --engine $(ENGINE)
> +RUNC ?= $(if $(shell command -v docker), docker, podman)
> +DOCKER_SCRIPT=$(SRC_PATH)/tests/docker/docker.py --engine $(RUNC)
>
> CUR_TIME := $(shell date +%Y-%m-%d-%H.%M.%S.$$$$)
> DOCKER_SRC_COPY := $(BUILD_DIR)/docker-src.$(CUR_TIME)
> @@ -158,7 +157,7 @@ $(foreach i,$(filter-out $(DOCKER_PARTIAL_IMAGES),$(DOCKER_IMAGES)), \
> )
>
> docker:
> - @echo 'Build QEMU and run tests inside Docker or Podman containers'
> + @echo 'Build QEMU and run tests inside $(RUNC) containers'
> @echo
> @echo 'Available targets:'
> @echo
> @@ -198,8 +197,6 @@ docker:
> @echo ' EXECUTABLE=<path> Include executable in image.'
> @echo ' EXTRA_FILES="<path> [... <path>]"'
> @echo ' Include extra files in image.'
> - @echo ' ENGINE=auto/docker/podman'
> - @echo ' Specify which container engine to run.'
> @echo ' REGISTRY=url Cache builds from registry (default:$(DOCKER_REGISTRY))'
>
> docker-help: docker
> --
> 2.39.2
>
>
^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 16/25] target/arm: Remove references to gdb_has_xml
2023-10-09 16:40 ` [PATCH 16/25] target/arm: Remove references to gdb_has_xml Alex Bennée
@ 2023-10-11 1:03 ` Alistair Francis
0 siblings, 0 replies; 37+ messages in thread
From: Alistair Francis @ 2023-10-11 1:03 UTC (permalink / raw)
To: Alex Bennée
Cc: qemu-devel, Thomas Huth, Xiaojuan Yang, Cédric Le Goater,
Bastian Koppelmann, Brad Smith, Radoslaw Biernacki,
David Hildenbrand, Cleber Rosa, Ilya Leoshkevich, qemu-riscv,
Daniel Henrique Barboza, Alexandre Iooss, Nicholas Piggin,
Bin Meng, Leif Lindholm, Paolo Bonzini, Eduardo Habkost,
Alistair Francis, qemu-ppc, John Snow, Liu Zhiwei, qemu-arm,
Wainer dos Santos Moschetta, Palmer Dabbelt, Peter Maydell,
Yanan Wang, Weiwei Li, Daniel P. Berrangé, Marcel Apfelbaum,
Beraldo Leal, Yoshinori Sato, Mahmoud Mandour, Richard Henderson,
Song Gao, Marcin Juszkiewicz, qemu-s390x, Marc-André Lureau,
Philippe Mathieu-Daudé, Akihiko Odaki
On Tue, Oct 10, 2023 at 3:52 AM Alex Bennée <alex.bennee@linaro.org> wrote:
>
> From: Akihiko Odaki <akihiko.odaki@daynix.com>
>
> GDB has XML support since 6.7 which was released in 2007.
> It's time to remove support for old GDB versions without XML support.
>
> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
> Acked-by: Alex Bennée <alex.bennee@linaro.org>
> Message-Id: <20230912224107.29669-10-akihiko.odaki@daynix.com>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Alistair
> ---
> target/arm/gdbstub.c | 32 ++------------------------------
> 1 file changed, 2 insertions(+), 30 deletions(-)
>
> diff --git a/target/arm/gdbstub.c b/target/arm/gdbstub.c
> index 8fc8351df7..b7ace24bfc 100644
> --- a/target/arm/gdbstub.c
> +++ b/target/arm/gdbstub.c
> @@ -46,21 +46,7 @@ int arm_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
> /* Core integer register. */
> return gdb_get_reg32(mem_buf, env->regs[n]);
> }
> - if (n < 24) {
> - /* FPA registers. */
> - if (gdb_has_xml()) {
> - return 0;
> - }
> - return gdb_get_zeroes(mem_buf, 12);
> - }
> - switch (n) {
> - case 24:
> - /* FPA status register. */
> - if (gdb_has_xml()) {
> - return 0;
> - }
> - return gdb_get_reg32(mem_buf, 0);
> - case 25:
> + if (n == 25) {
> /* CPSR, or XPSR for M-profile */
> if (arm_feature(env, ARM_FEATURE_M)) {
> return gdb_get_reg32(mem_buf, xpsr_read(env));
> @@ -100,21 +86,7 @@ int arm_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
> env->regs[n] = tmp;
> return 4;
> }
> - if (n < 24) { /* 16-23 */
> - /* FPA registers (ignored). */
> - if (gdb_has_xml()) {
> - return 0;
> - }
> - return 12;
> - }
> - switch (n) {
> - case 24:
> - /* FPA status register (ignored). */
> - if (gdb_has_xml()) {
> - return 0;
> - }
> - return 4;
> - case 25:
> + if (n == 25) {
> /* CPSR, or XPSR for M-profile */
> if (arm_feature(env, ARM_FEATURE_M)) {
> /*
> --
> 2.39.2
>
>
^ permalink raw reply [flat|nested] 37+ messages in thread
end of thread, other threads:[~2023-10-11 1:04 UTC | newest]
Thread overview: 37+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-09 16:40 [PATCH 00/25] October maintainer omnibus pre-PR (tests, gdbstub, plugins) Alex Bennée
2023-10-09 16:40 ` [PATCH 01/25] tests/avocado: update firmware to enable OpenBSD test on sbsa-ref Alex Bennée
2023-10-09 16:40 ` [PATCH 02/25] tests/avocado: remove flaky test marking for test_sbsaref_edk2_firmware Alex Bennée
2023-10-10 11:56 ` Philippe Mathieu-Daudé
2023-10-09 16:40 ` [PATCH 03/25] tests/lcitool: add swtpm to the package list Alex Bennée
2023-10-10 11:57 ` Philippe Mathieu-Daudé
2023-10-09 16:40 ` [PATCH 04/25] gitlab: shuffle some targets and reduce avocado noise Alex Bennée
2023-10-09 16:40 ` [PATCH 05/25] tests/docker: make docker engine choice entirely configure driven Alex Bennée
2023-10-11 1:02 ` Alistair Francis
2023-10-09 16:40 ` [PATCH 06/25] configure: allow user to override docker engine Alex Bennée
2023-10-11 0:59 ` Alistair Francis
2023-10-09 16:40 ` [PATCH 07/25] configure: remove gcc version suffixes Alex Bennée
2023-10-10 11:57 ` Philippe Mathieu-Daudé
2023-10-09 16:40 ` [PATCH 08/25] gdbstub: Fix target_xml initialization Alex Bennée
2023-10-11 1:00 ` Alistair Francis
2023-10-09 16:40 ` [PATCH 09/25] gdbstub: Fix target.xml response Alex Bennée
2023-10-09 16:40 ` [PATCH 10/25] plugins: Check if vCPU is realized Alex Bennée
2023-10-09 16:40 ` [PATCH 11/25] contrib/plugins: Use GRWLock in execlog Alex Bennée
2023-10-09 16:40 ` [PATCH 12/25] gdbstub: Introduce GDBFeature structure Alex Bennée
2023-10-09 16:40 ` [PATCH 13/25] target/arm: Move the reference to arm-core.xml Alex Bennée
2023-10-09 16:40 ` [PATCH 14/25] hw/core/cpu: Return static value with gdb_arch_name() Alex Bennée
2023-10-11 0:55 ` Alistair Francis
2023-10-09 16:40 ` [PATCH 15/25] gdbstub: Use g_markup_printf_escaped() Alex Bennée
2023-10-09 16:40 ` [PATCH 16/25] target/arm: Remove references to gdb_has_xml Alex Bennée
2023-10-11 1:03 ` Alistair Francis
2023-10-09 16:40 ` [PATCH 17/25] target/ppc: " Alex Bennée
2023-10-09 16:40 ` [PATCH 18/25] gdbstub: Remove gdb_has_xml variable Alex Bennée
2023-10-11 0:58 ` Alistair Francis
2023-10-09 16:40 ` [PATCH 19/25] gdbstub: Replace gdb_regs with an array Alex Bennée
2023-10-11 0:57 ` Alistair Francis
2023-10-09 16:40 ` [PATCH 20/25] accel/tcg: Add plugin_enabled to DisasContextBase Alex Bennée
2023-10-09 16:41 ` [PATCH 21/25] target/sh4: Disable decode_gusa when plugins enabled Alex Bennée
2023-10-09 16:41 ` [PATCH 22/25] plugins: Set final instruction count in plugin_gen_tb_end Alex Bennée
2023-10-09 16:41 ` [PATCH 23/25] contrib/plugins: fix coverity warning in cache Alex Bennée
2023-10-09 16:41 ` [PATCH 24/25] contrib/plugins: fix coverity warning in lockstep Alex Bennée
2023-10-09 16:41 ` [PATCH 25/25] contrib/plugins: fix coverity warning in hotblocks Alex Bennée
2023-10-10 12:00 ` Philippe Mathieu-Daudé
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).