On 02/03/2026 14:53, Florian Hofhammer wrote:
> Hi,
> 
> This patch series builds on top of the discussion from the thread at
> https://lore.kernel.org/qemu-devel/[email protected]/
> and adds a plugin API function to set the program counter of the guest,
> as just writing to it via qemu_plugin_write_register() has no direct
> effect.
> 
> This version v5 of the patch series addresses the requested changes from
> the previous v4 submission (details below).
> Note: checkpatch.pl still reports a warning about line length violations
> in patch nr. 6/7 but I did not fix this, as the line was already > 80
> characters long previously, the change added only a single character,
> and I think the readability of the code is better as it is now. Please
> let me know if you disagree and would like me to fix this!
> 
> Best regards,
> Florian 
> 
> Changes:
> v5:
> - make QEMU abort via asserts instead of just returning an error from
>   the plugin API if preconditions are violated
> - extend tests for qemu_plugin_set_pc() to different contexts
> - fix issues highlighted by checkpatch.pl
> v4:
> - switch strcmp out in favor of g_strcmp0 
> - split the patch introducing the qemu_plugin_set_pc() API into three
>   patches, two for preparing the plugin infrastructure and the syscall
>   handling code and a third introducing the actual plugin API
> v3:
> - make PC registers read-only across architectures
> - add tests for read-only registers
> - adjust test structure for qemu_plugin_set_pc() by moving
>    architecture-specific tests into corresponding directories
> v2:
> - add setjmp() in syscall handling path to allow PC redirection from
>    syscall callbacks (via longjmp(), the cpu_loop()'s setjmp() for
>    exiting a TB would not be live anymore in syscall handlers)
> - add flags to ensure the qemu_plugin_set_pc() API is only called from
>    contexts where the CPU is live
> - add test for qemu_plugin_set_pc() API
> v1:
> - initial version 
> 
> 
> Florian Hofhammer (7):
>   plugins: add flag to specify whether PC is rw
>   linux-user: make syscall emulation interruptible
>   plugins: add PC diversion API function
>   tests/tcg: add test for qemu_plugin_set_pc API
>   plugins: add read-only property for registers
>   plugins: prohibit writing to read-only registers
>   tests/tcg/plugins: test register accesses
> 
>  MAINTAINERS                                   |   1 +
>  include/plugins/qemu-plugin.h                 |  19 +++
>  linux-user/aarch64/cpu_loop.c                 |   2 +-
>  linux-user/alpha/cpu_loop.c                   |   2 +-
>  linux-user/arm/cpu_loop.c                     |   2 +-
>  linux-user/hexagon/cpu_loop.c                 |   2 +-
>  linux-user/hppa/cpu_loop.c                    |   1 +
>  linux-user/i386/cpu_loop.c                    |   8 +-
>  linux-user/include/special-errno.h            |   8 +
>  linux-user/loongarch64/cpu_loop.c             |   5 +-
>  linux-user/m68k/cpu_loop.c                    |   2 +-
>  linux-user/microblaze/cpu_loop.c              |   2 +-
>  linux-user/mips/cpu_loop.c                    |   9 +-
>  linux-user/or1k/cpu_loop.c                    |   2 +-
>  linux-user/ppc/cpu_loop.c                     |  10 +-
>  linux-user/riscv/cpu_loop.c                   |   2 +-
>  linux-user/s390x/cpu_loop.c                   |   2 +-
>  linux-user/sh4/cpu_loop.c                     |   2 +-
>  linux-user/sparc/cpu_loop.c                   |   4 +-
>  linux-user/syscall.c                          |  16 ++
>  linux-user/xtensa/cpu_loop.c                  |   1 +
>  plugins/api.c                                 |  42 +++++-
>  plugins/core.c                                |  29 ++--
>  tests/tcg/arm/Makefile.target                 |   6 +
>  tests/tcg/multiarch/Makefile.target           |  17 ++-
>  .../{ => plugin}/check-plugin-output.sh       |   0
>  .../{ => plugin}/test-plugin-mem-access.c     |   0
>  .../tcg/multiarch/plugin/test-plugin-set-pc.c | 140 ++++++++++++++++++
>  tests/tcg/plugins/meson.build                 |   2 +
>  tests/tcg/plugins/registers.c                 |  79 ++++++++++
>  tests/tcg/plugins/setpc.c                     | 120 +++++++++++++++
>  31 files changed, 495 insertions(+), 42 deletions(-)
>  rename tests/tcg/multiarch/{ => plugin}/check-plugin-output.sh (100%)
>  rename tests/tcg/multiarch/{ => plugin}/test-plugin-mem-access.c (100%)
>  create mode 100644 tests/tcg/multiarch/plugin/test-plugin-set-pc.c
>  create mode 100644 tests/tcg/plugins/registers.c
>  create mode 100644 tests/tcg/plugins/setpc.c
> 
> 
> base-commit: ffcf1a7981793973ffbd8100a7c3c6042d02ae23

Please ignore this patch series, I will send a v6 version soon.
Sorry for the inconvenience and thanks for your understanding!

Best regards,
Florian

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to