[PULL 00/21] Plugins patches for 2026-01-29

Pierrick Bouvier posted 21 patches 1 week, 3 days ago
Failed in applying to current master (apply log)
Maintainers: Warner Losh <imp@bsdimp.com>, Kyle Evans <kevans@freebsd.org>, "Alex Bennée" <alex.bennee@linaro.org>, Pierrick Bouvier <pierrick.bouvier@linaro.org>, Alexandre Iooss <erdnaxe@crans.org>, Mahmoud Mandour <ma.mandourr@gmail.com>, Richard Henderson <richard.henderson@linaro.org>, Paolo Bonzini <pbonzini@redhat.com>, Laurent Vivier <laurent@vivier.eu>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Kostiantyn Kostiuk <kkostiuk@redhat.com>, Michael Roth <michael.roth@amd.com>
docs/about/emulation.rst                         |  12 +++
docs/devel/tcg-plugins.rst                       |   4 +-
meson.build                                      |  26 ++---
include/{qemu => plugins}/qemu-plugin.h          |  62 +++++++++---
include/qemu/plugin-event.h                      |   1 +
include/qemu/plugin.h                            |  35 +++++--
include/user/syscall-trace.h                     |  43 --------
bsd-user/freebsd/os-syscall.c                    |   1 -
contrib/plugins/execlog.c                        |  14 +--
contrib/plugins/hotblocks.c                      |  20 ++--
contrib/plugins/uftrace.c                        |   8 +-
linux-user/syscall.c                             |  44 ++++++++-
plugins/api.c                                    |  36 ++++---
plugins/core.c                                   |  39 +++++++-
{contrib/plugins => plugins}/win32_linker.c      |   0
tests/tcg/multiarch/test-plugin-syscall-filter.c |  39 ++++++++
tests/tcg/plugins/insn.c                         |   4 +-
tests/tcg/plugins/mem.c                          |  59 +++++------
tests/tcg/plugins/syscall.c                      |  19 ++++
contrib/plugins/cpp.cpp                          | 119 +++++++++++++++++++++++
contrib/plugins/meson.build                      |  38 +++++---
plugins/meson.build                              |  17 +++-
qga/vss-win32/requester.cpp                      |   6 +-
tests/tcg/multiarch/Makefile.target              |   7 +-
tests/tcg/plugins/meson.build                    |  27 ++---
25 files changed, 497 insertions(+), 183 deletions(-)
rename include/{qemu => plugins}/qemu-plugin.h (95%)
delete mode 100644 include/user/syscall-trace.h
rename {contrib/plugins => plugins}/win32_linker.c (100%)
create mode 100644 tests/tcg/multiarch/test-plugin-syscall-filter.c
create mode 100644 contrib/plugins/cpp.cpp
[PULL 00/21] Plugins patches for 2026-01-29
Posted by Pierrick Bouvier 1 week, 3 days ago
The following changes since commit 65fb9de4888f9bf32bc4f60c880da3dff04c4fd9:

  Merge tag 'pr-build_fix-20260128' of https://gitlab.com/pbo-linaro/qemu into staging (2026-01-29 13:29:33 +1100)

are available in the Git repository at:

  https://gitlab.com/pbo-linaro/qemu tags/pr-plugins-20260129

for you to fetch changes up to bed25f00d306bbbcc85d068b6469fc00aeecbd11:

  plugins: reduce source conflicts in plugins list (2026-01-29 09:34:14 -0800)

----------------------------------------------------------------
Changes:
- contrib/plugins/hotblocks: Minor bug fixes and add limit argument (Alex Bradbury <asb@igalia.com>)
- linux-user: introduce syscall-filter plugin API (Ziyang Zhang <functioner@sjtu.edu.cn>)
- plugins: return bool from register r/w API (Florian Hofhammer <florian.hofhammer@fhofhammer.de>)
- plugins: enable C++ plugins (Pierrick Bouvier <pierrick.bouvier@linaro.org>)
- plugins: reduce source conflicts in plugins list (Pierrick Bouvier <pierrick.bouvier@linaro.org>)

----------------------------------------------------------------
Alex Bradbury (5):
      contrib/plugins/hotblocks: Correctly free sorted counts list
      contrib/plugins/hotblocks: Fix off by one error in iteration of sorted blocks
      contrib/plugins/hotblocks: Print uint64_t with PRIu64 rather than PRId64
      docs/about/emulation: Add documentation for hotblocks plugin arguments
      contrib/plugins/hotblocks: Allow limit to be set as a command line argument

Florian Hofhammer (1):
      plugins: return bool from register r/w API

Pierrick Bouvier (13):
      linux-user: move user/syscall-trace.h to linux-user/syscall.c
      plugins: move win32_linker.c file to plugins directory
      plugins: factorize plugin dependencies and library details
      plugins: use complete filename for defining plugins sources
      plugins: define plugin API symbols as extern "C" when compiling in C++
      tests/tcg/plugins/mem.c: remove dependency on qemu headers
      plugins: move qemu-plugin.h to include/plugins/
      meson: fix supported compiler arguments in other languages than C
      meson: enable cpp (optionally) for plugins
      qga/vss-win32: fix clang warning with C++20
      meson: update C++ standard to C++23
      contrib/plugins: add empty cpp plugin
      plugins: reduce source conflicts in plugins list

Ziyang Zhang (2):
      linux-user: add plugin API to filter syscalls
      tcg tests: add a test to verify the syscall filter plugin API

 docs/about/emulation.rst                         |  12 +++
 docs/devel/tcg-plugins.rst                       |   4 +-
 meson.build                                      |  26 ++---
 include/{qemu => plugins}/qemu-plugin.h          |  62 +++++++++---
 include/qemu/plugin-event.h                      |   1 +
 include/qemu/plugin.h                            |  35 +++++--
 include/user/syscall-trace.h                     |  43 --------
 bsd-user/freebsd/os-syscall.c                    |   1 -
 contrib/plugins/execlog.c                        |  14 +--
 contrib/plugins/hotblocks.c                      |  20 ++--
 contrib/plugins/uftrace.c                        |   8 +-
 linux-user/syscall.c                             |  44 ++++++++-
 plugins/api.c                                    |  36 ++++---
 plugins/core.c                                   |  39 +++++++-
 {contrib/plugins => plugins}/win32_linker.c      |   0
 tests/tcg/multiarch/test-plugin-syscall-filter.c |  39 ++++++++
 tests/tcg/plugins/insn.c                         |   4 +-
 tests/tcg/plugins/mem.c                          |  59 +++++------
 tests/tcg/plugins/syscall.c                      |  19 ++++
 contrib/plugins/cpp.cpp                          | 119 +++++++++++++++++++++++
 contrib/plugins/meson.build                      |  38 +++++---
 plugins/meson.build                              |  17 +++-
 qga/vss-win32/requester.cpp                      |   6 +-
 tests/tcg/multiarch/Makefile.target              |   7 +-
 tests/tcg/plugins/meson.build                    |  27 ++---
 25 files changed, 497 insertions(+), 183 deletions(-)
 rename include/{qemu => plugins}/qemu-plugin.h (95%)
 delete mode 100644 include/user/syscall-trace.h
 rename {contrib/plugins => plugins}/win32_linker.c (100%)
 create mode 100644 tests/tcg/multiarch/test-plugin-syscall-filter.c
 create mode 100644 contrib/plugins/cpp.cpp
Re: [PULL 00/21] Plugins patches for 2026-01-29
Posted by Pierrick Bouvier 1 week, 3 days ago
On 1/29/26 9:37 AM, Pierrick Bouvier wrote:
> The following changes since commit 65fb9de4888f9bf32bc4f60c880da3dff04c4fd9:
> 
>    Merge tag 'pr-build_fix-20260128' of https://gitlab.com/pbo-linaro/qemu into staging (2026-01-29 13:29:33 +1100)
> 
> are available in the Git repository at:
> 
>    https://gitlab.com/pbo-linaro/qemu tags/pr-plugins-20260129
> 
> for you to fetch changes up to bed25f00d306bbbcc85d068b6469fc00aeecbd11:
> 
>    plugins: reduce source conflicts in plugins list (2026-01-29 09:34:14 -0800)
> 
> ----------------------------------------------------------------
> Changes:
> - contrib/plugins/hotblocks: Minor bug fixes and add limit argument (Alex Bradbury <asb@igalia.com>)
> - linux-user: introduce syscall-filter plugin API (Ziyang Zhang <functioner@sjtu.edu.cn>)
> - plugins: return bool from register r/w API (Florian Hofhammer <florian.hofhammer@fhofhammer.de>)
> - plugins: enable C++ plugins (Pierrick Bouvier <pierrick.bouvier@linaro.org>)
> - plugins: reduce source conflicts in plugins list (Pierrick Bouvier <pierrick.bouvier@linaro.org>)
> 
> ----------------------------------------------------------------
> Alex Bradbury (5):
>        contrib/plugins/hotblocks: Correctly free sorted counts list
>        contrib/plugins/hotblocks: Fix off by one error in iteration of sorted blocks
>        contrib/plugins/hotblocks: Print uint64_t with PRIu64 rather than PRId64
>        docs/about/emulation: Add documentation for hotblocks plugin arguments
>        contrib/plugins/hotblocks: Allow limit to be set as a command line argument
> 
> Florian Hofhammer (1):
>        plugins: return bool from register r/w API
> 
> Pierrick Bouvier (13):
>        linux-user: move user/syscall-trace.h to linux-user/syscall.c
>        plugins: move win32_linker.c file to plugins directory
>        plugins: factorize plugin dependencies and library details
>        plugins: use complete filename for defining plugins sources
>        plugins: define plugin API symbols as extern "C" when compiling in C++
>        tests/tcg/plugins/mem.c: remove dependency on qemu headers
>        plugins: move qemu-plugin.h to include/plugins/
>        meson: fix supported compiler arguments in other languages than C
>        meson: enable cpp (optionally) for plugins
>        qga/vss-win32: fix clang warning with C++20
>        meson: update C++ standard to C++23
>        contrib/plugins: add empty cpp plugin
>        plugins: reduce source conflicts in plugins list
> 
> Ziyang Zhang (2):
>        linux-user: add plugin API to filter syscalls
>        tcg tests: add a test to verify the syscall filter plugin API
> 
>   docs/about/emulation.rst                         |  12 +++
>   docs/devel/tcg-plugins.rst                       |   4 +-
>   meson.build                                      |  26 ++---
>   include/{qemu => plugins}/qemu-plugin.h          |  62 +++++++++---
>   include/qemu/plugin-event.h                      |   1 +
>   include/qemu/plugin.h                            |  35 +++++--
>   include/user/syscall-trace.h                     |  43 --------
>   bsd-user/freebsd/os-syscall.c                    |   1 -
>   contrib/plugins/execlog.c                        |  14 +--
>   contrib/plugins/hotblocks.c                      |  20 ++--
>   contrib/plugins/uftrace.c                        |   8 +-
>   linux-user/syscall.c                             |  44 ++++++++-
>   plugins/api.c                                    |  36 ++++---
>   plugins/core.c                                   |  39 +++++++-
>   {contrib/plugins => plugins}/win32_linker.c      |   0
>   tests/tcg/multiarch/test-plugin-syscall-filter.c |  39 ++++++++
>   tests/tcg/plugins/insn.c                         |   4 +-
>   tests/tcg/plugins/mem.c                          |  59 +++++------
>   tests/tcg/plugins/syscall.c                      |  19 ++++
>   contrib/plugins/cpp.cpp                          | 119 +++++++++++++++++++++++
>   contrib/plugins/meson.build                      |  38 +++++---
>   plugins/meson.build                              |  17 +++-
>   qga/vss-win32/requester.cpp                      |   6 +-
>   tests/tcg/multiarch/Makefile.target              |   7 +-
>   tests/tcg/plugins/meson.build                    |  27 ++---
>   25 files changed, 497 insertions(+), 183 deletions(-)
>   rename include/{qemu => plugins}/qemu-plugin.h (95%)
>   delete mode 100644 include/user/syscall-trace.h
>   rename {contrib/plugins => plugins}/win32_linker.c (100%)
>   create mode 100644 tests/tcg/multiarch/test-plugin-syscall-filter.c
>   create mode 100644 contrib/plugins/cpp.cpp

v2
--

- Delete syscall-trace header and move functions to linux-user/syscall.c

Note: There is a regression upstream with native windows builds where:

$ ./configure
Looking in links: file://C:/GitLab-Runner/builds/qemu/python/wheels
WARNING: Location 'file://C:/GitLab-Runner/builds/qemu/python/wheels' is
ignored: it is neither a file nor a directory.
ERROR: Could not find a version that satisfies the requirement
meson==1.10.0 (from versions: none)

This is not related to this series, and seems like an MSYS bug. It can 
be avoiding by *not* updating core packages (pacman -Syu). Hopefully 
will be solved upstream before updating becomes mandatory.

This series has been tested on Windows with changes described above and 
it works as expected.

Regards,
Pierrick
Re: [PULL 00/21] Plugins patches for 2026-01-29
Posted by Richard Henderson 1 week ago
On 1/30/26 04:41, Pierrick Bouvier wrote:
> On 1/29/26 9:37 AM, Pierrick Bouvier wrote:
>> The following changes since commit 65fb9de4888f9bf32bc4f60c880da3dff04c4fd9:
>>
>>    Merge tag 'pr-build_fix-20260128' of https://gitlab.com/pbo-linaro/qemu into staging 
>> (2026-01-29 13:29:33 +1100)
>>
>> are available in the Git repository at:
>>
>>    https://gitlab.com/pbo-linaro/qemu tags/pr-plugins-20260129
>>
>> for you to fetch changes up to bed25f00d306bbbcc85d068b6469fc00aeecbd11:
>>
>>    plugins: reduce source conflicts in plugins list (2026-01-29 09:34:14 -0800)
>>
>> ----------------------------------------------------------------
>> Changes:
>> - contrib/plugins/hotblocks: Minor bug fixes and add limit argument (Alex Bradbury 
>> <asb@igalia.com>)
>> - linux-user: introduce syscall-filter plugin API (Ziyang Zhang <functioner@sjtu.edu.cn>)
>> - plugins: return bool from register r/w API (Florian Hofhammer 
>> <florian.hofhammer@fhofhammer.de>)
>> - plugins: enable C++ plugins (Pierrick Bouvier <pierrick.bouvier@linaro.org>)
>> - plugins: reduce source conflicts in plugins list (Pierrick Bouvier 
>> <pierrick.bouvier@linaro.org>)
>>
>> ----------------------------------------------------------------
>> Alex Bradbury (5):
>>        contrib/plugins/hotblocks: Correctly free sorted counts list
>>        contrib/plugins/hotblocks: Fix off by one error in iteration of sorted blocks
>>        contrib/plugins/hotblocks: Print uint64_t with PRIu64 rather than PRId64
>>        docs/about/emulation: Add documentation for hotblocks plugin arguments
>>        contrib/plugins/hotblocks: Allow limit to be set as a command line argument
>>
>> Florian Hofhammer (1):
>>        plugins: return bool from register r/w API
>>
>> Pierrick Bouvier (13):
>>        linux-user: move user/syscall-trace.h to linux-user/syscall.c
>>        plugins: move win32_linker.c file to plugins directory
>>        plugins: factorize plugin dependencies and library details
>>        plugins: use complete filename for defining plugins sources
>>        plugins: define plugin API symbols as extern "C" when compiling in C++
>>        tests/tcg/plugins/mem.c: remove dependency on qemu headers
>>        plugins: move qemu-plugin.h to include/plugins/
>>        meson: fix supported compiler arguments in other languages than C
>>        meson: enable cpp (optionally) for plugins
>>        qga/vss-win32: fix clang warning with C++20
>>        meson: update C++ standard to C++23
>>        contrib/plugins: add empty cpp plugin
>>        plugins: reduce source conflicts in plugins list
>>
>> Ziyang Zhang (2):
>>        linux-user: add plugin API to filter syscalls
>>        tcg tests: add a test to verify the syscall filter plugin API
>>
>>   docs/about/emulation.rst                         |  12 +++
>>   docs/devel/tcg-plugins.rst                       |   4 +-
>>   meson.build                                      |  26 ++---
>>   include/{qemu => plugins}/qemu-plugin.h          |  62 +++++++++---
>>   include/qemu/plugin-event.h                      |   1 +
>>   include/qemu/plugin.h                            |  35 +++++--
>>   include/user/syscall-trace.h                     |  43 --------
>>   bsd-user/freebsd/os-syscall.c                    |   1 -
>>   contrib/plugins/execlog.c                        |  14 +--
>>   contrib/plugins/hotblocks.c                      |  20 ++--
>>   contrib/plugins/uftrace.c                        |   8 +-
>>   linux-user/syscall.c                             |  44 ++++++++-
>>   plugins/api.c                                    |  36 ++++---
>>   plugins/core.c                                   |  39 +++++++-
>>   {contrib/plugins => plugins}/win32_linker.c      |   0
>>   tests/tcg/multiarch/test-plugin-syscall-filter.c |  39 ++++++++
>>   tests/tcg/plugins/insn.c                         |   4 +-
>>   tests/tcg/plugins/mem.c                          |  59 +++++------
>>   tests/tcg/plugins/syscall.c                      |  19 ++++
>>   contrib/plugins/cpp.cpp                          | 119 +++++++++++++++++++++++
>>   contrib/plugins/meson.build                      |  38 +++++---
>>   plugins/meson.build                              |  17 +++-
>>   qga/vss-win32/requester.cpp                      |   6 +-
>>   tests/tcg/multiarch/Makefile.target              |   7 +-
>>   tests/tcg/plugins/meson.build                    |  27 ++---
>>   25 files changed, 497 insertions(+), 183 deletions(-)
>>   rename include/{qemu => plugins}/qemu-plugin.h (95%)
>>   delete mode 100644 include/user/syscall-trace.h
>>   rename {contrib/plugins => plugins}/win32_linker.c (100%)
>>   create mode 100644 tests/tcg/multiarch/test-plugin-syscall-filter.c
>>   create mode 100644 contrib/plugins/cpp.cpp
> 
> v2
> -- 
> 
> - Delete syscall-trace header and move functions to linux-user/syscall.c
> 
> Note: There is a regression upstream with native windows builds where:
> 
> $ ./configure
> Looking in links: file://C:/GitLab-Runner/builds/qemu/python/wheels
> WARNING: Location 'file://C:/GitLab-Runner/builds/qemu/python/wheels' is
> ignored: it is neither a file nor a directory.
> ERROR: Could not find a version that satisfies the requirement
> meson==1.10.0 (from versions: none)
> 
> This is not related to this series, and seems like an MSYS bug. It can be avoiding by 
> *not* updating core packages (pacman -Syu). Hopefully will be solved upstream before 
> updating becomes mandatory.
> 
> This series has been tested on Windows with changes described above and it works as expected.
> 
> Regards,
> Pierrick
> 

Applied, thanks.  Please update https://wiki.qemu.org/ChangeLog/11.0 as appropriate.

r~

Re: [PULL 00/21] Plugins patches for 2026-01-29
Posted by Peter Maydell 6 days, 19 hours ago
On Mon, 2 Feb 2026 at 04:04, Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> On 1/30/26 04:41, Pierrick Bouvier wrote:
> > On 1/29/26 9:37 AM, Pierrick Bouvier wrote:
> >>        contrib/plugins: add empty cpp plugin

Hi; this fails to build for me on Linux (Ubuntu 24.04) with clang:

In file included from ../../contrib/plugins/cpp.cpp:33:
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/coroutine:38:3:
error: "the <coroutine> header requires -fcoroutines"
   38 | # error "the <coroutine> header requires -fcoroutines"
      |   ^
1 error generated.

thanks
-- PMM
Re: [PULL 00/21] Plugins patches for 2026-01-29
Posted by Cornelia Huck 6 days, 17 hours ago
On Mon, Feb 02 2026, Peter Maydell <peter.maydell@linaro.org> wrote:

> On Mon, 2 Feb 2026 at 04:04, Richard Henderson
> <richard.henderson@linaro.org> wrote:
>>
>> On 1/30/26 04:41, Pierrick Bouvier wrote:
>> > On 1/29/26 9:37 AM, Pierrick Bouvier wrote:
>> >>        contrib/plugins: add empty cpp plugin
>
> Hi; this fails to build for me on Linux (Ubuntu 24.04) with clang:
>
> In file included from ../../contrib/plugins/cpp.cpp:33:
> /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/coroutine:38:3:
> error: "the <coroutine> header requires -fcoroutines"
>    38 | # error "the <coroutine> header requires -fcoroutines"
>       |   ^
> 1 error generated.

Fails for me as well on Fedora 42 (x86_64) with gcc:

In file included from ../qemu/contrib/plugins/cpp.cpp:33:
/usr/include/c++/15/coroutine:43:3: error: #error "the <coroutine> header requires -fcoroutines"
   43 | # error "the <coroutine> header requires -fcoroutines"
      |   ^~~~~

(It works for me on an aarch64 RHEL 9 system.)
Re: [PULL 00/21] Plugins patches for 2026-01-29
Posted by Mark Cave-Ayland 6 days, 15 hours ago
On 02/02/2026 15:42, Cornelia Huck wrote:

> On Mon, Feb 02 2026, Peter Maydell <peter.maydell@linaro.org> wrote:
> 
>> On Mon, 2 Feb 2026 at 04:04, Richard Henderson
>> <richard.henderson@linaro.org> wrote:
>>>
>>> On 1/30/26 04:41, Pierrick Bouvier wrote:
>>>> On 1/29/26 9:37 AM, Pierrick Bouvier wrote:
>>>>>         contrib/plugins: add empty cpp plugin
>>
>> Hi; this fails to build for me on Linux (Ubuntu 24.04) with clang:
>>
>> In file included from ../../contrib/plugins/cpp.cpp:33:
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/coroutine:38:3:
>> error: "the <coroutine> header requires -fcoroutines"
>>     38 | # error "the <coroutine> header requires -fcoroutines"
>>        |   ^
>> 1 error generated.
> 
> Fails for me as well on Fedora 42 (x86_64) with gcc:
> 
> In file included from ../qemu/contrib/plugins/cpp.cpp:33:
> /usr/include/c++/15/coroutine:43:3: error: #error "the <coroutine> header requires -fcoroutines"
>     43 | # error "the <coroutine> header requires -fcoroutines"
>        |   ^~~~~
> 
> (It works for me on an aarch64 RHEL 9 system.)

Is this with a clean build? I had exactly the same error message 
earlier, but I was able to fix it by destroying my build/ directory, 
then re-running configure followed again by make.


ATB,

Mark.
Re: [PULL 00/21] Plugins patches for 2026-01-29
Posted by Pierrick Bouvier 6 days, 15 hours ago
On 2/2/26 8:55 AM, Mark Cave-Ayland wrote:
> On 02/02/2026 15:42, Cornelia Huck wrote:
> 
>> On Mon, Feb 02 2026, Peter Maydell <peter.maydell@linaro.org> wrote:
>>
>>> On Mon, 2 Feb 2026 at 04:04, Richard Henderson
>>> <richard.henderson@linaro.org> wrote:
>>>>
>>>> On 1/30/26 04:41, Pierrick Bouvier wrote:
>>>>> On 1/29/26 9:37 AM, Pierrick Bouvier wrote:
>>>>>>          contrib/plugins: add empty cpp plugin
>>>
>>> Hi; this fails to build for me on Linux (Ubuntu 24.04) with clang:
>>>
>>> In file included from ../../contrib/plugins/cpp.cpp:33:
>>> /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/coroutine:38:3:
>>> error: "the <coroutine> header requires -fcoroutines"
>>>      38 | # error "the <coroutine> header requires -fcoroutines"
>>>         |   ^
>>> 1 error generated.
>>
>> Fails for me as well on Fedora 42 (x86_64) with gcc:
>>
>> In file included from ../qemu/contrib/plugins/cpp.cpp:33:
>> /usr/include/c++/15/coroutine:43:3: error: #error "the <coroutine> header requires -fcoroutines"
>>      43 | # error "the <coroutine> header requires -fcoroutines"
>>         |   ^~~~~
>>
>> (It works for me on an aarch64 RHEL 9 system.)
> 
> Is this with a clean build? I had exactly the same error message
> earlier, but I was able to fix it by destroying my build/ directory,
> then re-running configure followed again by make.
> 
> 
> ATB,
> 
> Mark.
> 

Thanks for the reports everyone.

I tried it on ubuntu LTS and didn't encounter this problem.
What is happening is that meson unfortunately caches default_options 
set, including the C++ standard version in our case.
Thus, you indeed need to clean and rebuild once.

The solution for this would be to not use default_options and add the 
flag to qemu_cflags instead. It's the same limitation if we change the 
default warning level, or any other option set with default_options.

Let me know if cleaning solved the problem for you Cornelia and Peter, 
and sorry for the noise it created.

Regards,
Pierrick
Re: [PULL 00/21] Plugins patches for 2026-01-29
Posted by Daniel P. Berrangé 6 days, 15 hours ago
On Mon, Feb 02, 2026 at 09:30:31AM -0800, Pierrick Bouvier wrote:
> On 2/2/26 8:55 AM, Mark Cave-Ayland wrote:
> > On 02/02/2026 15:42, Cornelia Huck wrote:
> > 
> > > On Mon, Feb 02 2026, Peter Maydell <peter.maydell@linaro.org> wrote:
> > > 
> > > > On Mon, 2 Feb 2026 at 04:04, Richard Henderson
> > > > <richard.henderson@linaro.org> wrote:
> > > > > 
> > > > > On 1/30/26 04:41, Pierrick Bouvier wrote:
> > > > > > On 1/29/26 9:37 AM, Pierrick Bouvier wrote:
> > > > > > >          contrib/plugins: add empty cpp plugin
> > > > 
> > > > Hi; this fails to build for me on Linux (Ubuntu 24.04) with clang:
> > > > 
> > > > In file included from ../../contrib/plugins/cpp.cpp:33:
> > > > /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/coroutine:38:3:
> > > > error: "the <coroutine> header requires -fcoroutines"
> > > >      38 | # error "the <coroutine> header requires -fcoroutines"
> > > >         |   ^
> > > > 1 error generated.
> > > 
> > > Fails for me as well on Fedora 42 (x86_64) with gcc:
> > > 
> > > In file included from ../qemu/contrib/plugins/cpp.cpp:33:
> > > /usr/include/c++/15/coroutine:43:3: error: #error "the <coroutine> header requires -fcoroutines"
> > >      43 | # error "the <coroutine> header requires -fcoroutines"
> > >         |   ^~~~~
> > > 
> > > (It works for me on an aarch64 RHEL 9 system.)
> > 
> > Is this with a clean build? I had exactly the same error message
> > earlier, but I was able to fix it by destroying my build/ directory,
> > then re-running configure followed again by make.
> > 
> 
> Thanks for the reports everyone.
> 
> I tried it on ubuntu LTS and didn't encounter this problem.
> What is happening is that meson unfortunately caches default_options set,
> including the C++ standard version in our case.
> Thus, you indeed need to clean and rebuild once.
> 
> The solution for this would be to not use default_options and add the flag
> to qemu_cflags instead. It's the same limitation if we change the default
> warning level, or any other option set with default_options.

If that's correct as the root cause, then it feels like this is a meson bug
that ought to be reported upstream. Any meson.build default_options changes
that affect the compiler behaviour should invalidate cache in the same way
as when we modify qemu_cflags.

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
Re: [PULL 00/21] Plugins patches for 2026-01-29
Posted by Pierrick Bouvier 6 days, 15 hours ago
On 2/2/26 9:34 AM, Daniel P. Berrangé wrote:
> On Mon, Feb 02, 2026 at 09:30:31AM -0800, Pierrick Bouvier wrote:
>> On 2/2/26 8:55 AM, Mark Cave-Ayland wrote:
>>> On 02/02/2026 15:42, Cornelia Huck wrote:
>>>
>>>> On Mon, Feb 02 2026, Peter Maydell <peter.maydell@linaro.org> wrote:
>>>>
>>>>> On Mon, 2 Feb 2026 at 04:04, Richard Henderson
>>>>> <richard.henderson@linaro.org> wrote:
>>>>>>
>>>>>> On 1/30/26 04:41, Pierrick Bouvier wrote:
>>>>>>> On 1/29/26 9:37 AM, Pierrick Bouvier wrote:
>>>>>>>>           contrib/plugins: add empty cpp plugin
>>>>>
>>>>> Hi; this fails to build for me on Linux (Ubuntu 24.04) with clang:
>>>>>
>>>>> In file included from ../../contrib/plugins/cpp.cpp:33:
>>>>> /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/coroutine:38:3:
>>>>> error: "the <coroutine> header requires -fcoroutines"
>>>>>       38 | # error "the <coroutine> header requires -fcoroutines"
>>>>>          |   ^
>>>>> 1 error generated.
>>>>
>>>> Fails for me as well on Fedora 42 (x86_64) with gcc:
>>>>
>>>> In file included from ../qemu/contrib/plugins/cpp.cpp:33:
>>>> /usr/include/c++/15/coroutine:43:3: error: #error "the <coroutine> header requires -fcoroutines"
>>>>       43 | # error "the <coroutine> header requires -fcoroutines"
>>>>          |   ^~~~~
>>>>
>>>> (It works for me on an aarch64 RHEL 9 system.)
>>>
>>> Is this with a clean build? I had exactly the same error message
>>> earlier, but I was able to fix it by destroying my build/ directory,
>>> then re-running configure followed again by make.
>>>
>>
>> Thanks for the reports everyone.
>>
>> I tried it on ubuntu LTS and didn't encounter this problem.
>> What is happening is that meson unfortunately caches default_options set,
>> including the C++ standard version in our case.
>> Thus, you indeed need to clean and rebuild once.
>>
>> The solution for this would be to not use default_options and add the flag
>> to qemu_cflags instead. It's the same limitation if we change the default
>> warning level, or any other option set with default_options.
> 
> If that's correct as the root cause, then it feels like this is a meson bug
> that ought to be reported upstream. Any meson.build default_options changes
> that affect the compiler behaviour should invalidate cache in the same way
> as when we modify qemu_cflags.
>

I totally agree with you Daniel, and I've been bitten by that in my 
previous company when updating cpp standard we used. As you can see, it 
slipped out of my mind for current series...

I never understood why it had this counter intuitive behaviour, and 
didn't bother to report to be honest, I simply switched to manual flags 
instead at the time.
Meson devs usually have a strong opinion of how things should be, so I 
don't expect this to be something that fell through the cracks but a 
deliberate design choice.

EDIT: after typing the answer above, did a quick search, and indeed, 
it's how it's supposed to be. So be it.
https://github.com/mesonbuild/meson/issues/13556

> With regards,
> Daniel

Regards,
Pierrick

Re: [PULL 00/21] Plugins patches for 2026-01-29
Posted by Pierrick Bouvier 6 days, 14 hours ago
On 2/2/26 9:45 AM, Pierrick Bouvier wrote:
> On 2/2/26 9:34 AM, Daniel P. Berrangé wrote:
>> On Mon, Feb 02, 2026 at 09:30:31AM -0800, Pierrick Bouvier wrote:
>>> On 2/2/26 8:55 AM, Mark Cave-Ayland wrote:
>>>> On 02/02/2026 15:42, Cornelia Huck wrote:
>>>>
>>>>> On Mon, Feb 02 2026, Peter Maydell <peter.maydell@linaro.org> wrote:
>>>>>
>>>>>> On Mon, 2 Feb 2026 at 04:04, Richard Henderson
>>>>>> <richard.henderson@linaro.org> wrote:
>>>>>>>
>>>>>>> On 1/30/26 04:41, Pierrick Bouvier wrote:
>>>>>>>> On 1/29/26 9:37 AM, Pierrick Bouvier wrote:
>>>>>>>>>            contrib/plugins: add empty cpp plugin
>>>>>>
>>>>>> Hi; this fails to build for me on Linux (Ubuntu 24.04) with clang:
>>>>>>
>>>>>> In file included from ../../contrib/plugins/cpp.cpp:33:
>>>>>> /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/coroutine:38:3:
>>>>>> error: "the <coroutine> header requires -fcoroutines"
>>>>>>        38 | # error "the <coroutine> header requires -fcoroutines"
>>>>>>           |   ^
>>>>>> 1 error generated.
>>>>>
>>>>> Fails for me as well on Fedora 42 (x86_64) with gcc:
>>>>>
>>>>> In file included from ../qemu/contrib/plugins/cpp.cpp:33:
>>>>> /usr/include/c++/15/coroutine:43:3: error: #error "the <coroutine> header requires -fcoroutines"
>>>>>        43 | # error "the <coroutine> header requires -fcoroutines"
>>>>>           |   ^~~~~
>>>>>
>>>>> (It works for me on an aarch64 RHEL 9 system.)
>>>>
>>>> Is this with a clean build? I had exactly the same error message
>>>> earlier, but I was able to fix it by destroying my build/ directory,
>>>> then re-running configure followed again by make.
>>>>
>>>
>>> Thanks for the reports everyone.
>>>
>>> I tried it on ubuntu LTS and didn't encounter this problem.
>>> What is happening is that meson unfortunately caches default_options set,
>>> including the C++ standard version in our case.
>>> Thus, you indeed need to clean and rebuild once.
>>>
>>> The solution for this would be to not use default_options and add the flag
>>> to qemu_cflags instead. It's the same limitation if we change the default
>>> warning level, or any other option set with default_options.
>>
>> If that's correct as the root cause, then it feels like this is a meson bug
>> that ought to be reported upstream. Any meson.build default_options changes
>> that affect the compiler behaviour should invalidate cache in the same way
>> as when we modify qemu_cflags.
>>
> 
> I totally agree with you Daniel, and I've been bitten by that in my
> previous company when updating cpp standard we used. As you can see, it
> slipped out of my mind for current series...
> 
> I never understood why it had this counter intuitive behaviour, and
> didn't bother to report to be honest, I simply switched to manual flags
> instead at the time.
> Meson devs usually have a strong opinion of how things should be, so I
> don't expect this to be something that fell through the cracks but a
> deliberate design choice.
> 
> EDIT: after typing the answer above, did a quick search, and indeed,
> it's how it's supposed to be. So be it.
> https://github.com/mesonbuild/meson/issues/13556
> 
>> With regards,
>> Daniel
> 
> Regards,
> Pierrick

Paolo, since it seems complicated to change this in meson, should we at 
least remove C and C++ standard from default_options, and rely on manual 
flags instead?

Probably, same goes for rust standard when we'll have to update it to 2024.

I'll let you (or anyone else on the thread more legitimate than me) 
judge what's the best approach on this, and I can help to implement it 
if needed.

Regards,
Pierrick

Re: [PULL 00/21] Plugins patches for 2026-01-29
Posted by Daniel P. Berrangé 6 days, 14 hours ago
On Mon, Feb 02, 2026 at 09:45:52AM -0800, Pierrick Bouvier wrote:
> On 2/2/26 9:34 AM, Daniel P. Berrangé wrote:
> > On Mon, Feb 02, 2026 at 09:30:31AM -0800, Pierrick Bouvier wrote:
> > > On 2/2/26 8:55 AM, Mark Cave-Ayland wrote:
> > > > On 02/02/2026 15:42, Cornelia Huck wrote:
> > > > 
> > > > > On Mon, Feb 02 2026, Peter Maydell <peter.maydell@linaro.org> wrote:
> > > > > 
> > > > > > On Mon, 2 Feb 2026 at 04:04, Richard Henderson
> > > > > > <richard.henderson@linaro.org> wrote:
> > > > > > > 
> > > > > > > On 1/30/26 04:41, Pierrick Bouvier wrote:
> > > > > > > > On 1/29/26 9:37 AM, Pierrick Bouvier wrote:
> > > > > > > > >           contrib/plugins: add empty cpp plugin
> > > > > > 
> > > > > > Hi; this fails to build for me on Linux (Ubuntu 24.04) with clang:
> > > > > > 
> > > > > > In file included from ../../contrib/plugins/cpp.cpp:33:
> > > > > > /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/coroutine:38:3:
> > > > > > error: "the <coroutine> header requires -fcoroutines"
> > > > > >       38 | # error "the <coroutine> header requires -fcoroutines"
> > > > > >          |   ^
> > > > > > 1 error generated.
> > > > > 
> > > > > Fails for me as well on Fedora 42 (x86_64) with gcc:
> > > > > 
> > > > > In file included from ../qemu/contrib/plugins/cpp.cpp:33:
> > > > > /usr/include/c++/15/coroutine:43:3: error: #error "the <coroutine> header requires -fcoroutines"
> > > > >       43 | # error "the <coroutine> header requires -fcoroutines"
> > > > >          |   ^~~~~
> > > > > 
> > > > > (It works for me on an aarch64 RHEL 9 system.)
> > > > 
> > > > Is this with a clean build? I had exactly the same error message
> > > > earlier, but I was able to fix it by destroying my build/ directory,
> > > > then re-running configure followed again by make.
> > > > 
> > > 
> > > Thanks for the reports everyone.
> > > 
> > > I tried it on ubuntu LTS and didn't encounter this problem.
> > > What is happening is that meson unfortunately caches default_options set,
> > > including the C++ standard version in our case.
> > > Thus, you indeed need to clean and rebuild once.
> > > 
> > > The solution for this would be to not use default_options and add the flag
> > > to qemu_cflags instead. It's the same limitation if we change the default
> > > warning level, or any other option set with default_options.
> > 
> > If that's correct as the root cause, then it feels like this is a meson bug
> > that ought to be reported upstream. Any meson.build default_options changes
> > that affect the compiler behaviour should invalidate cache in the same way
> > as when we modify qemu_cflags.
> > 
> 
> I totally agree with you Daniel, and I've been bitten by that in my previous
> company when updating cpp standard we used. As you can see, it slipped out
> of my mind for current series...
> 
> I never understood why it had this counter intuitive behaviour, and didn't
> bother to report to be honest, I simply switched to manual flags instead at
> the time.
> Meson devs usually have a strong opinion of how things should be, so I don't
> expect this to be something that fell through the cracks but a deliberate
> design choice.
> 
> EDIT: after typing the answer above, did a quick search, and indeed, it's
> how it's supposed to be. So be it.
> https://github.com/mesonbuild/meson/issues/13556

That's been marked a dupe of:

  https://github.com/mesonbuild/meson/issues/2193

where Paolo says recent refactoring has (finally) made fixing this
problem a pratical task.... but that was 6+ months ago still, so
guess we'll have to wait a while yet.

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


Re: [PULL 00/21] Plugins patches for 2026-01-29
Posted by Cornelia Huck 6 days, 15 hours ago
On Mon, Feb 02 2026, Mark Cave-Ayland <mark.caveayland@nutanix.com> wrote:

> On 02/02/2026 15:42, Cornelia Huck wrote:
>
>> On Mon, Feb 02 2026, Peter Maydell <peter.maydell@linaro.org> wrote:
>> 
>>> On Mon, 2 Feb 2026 at 04:04, Richard Henderson
>>> <richard.henderson@linaro.org> wrote:
>>>>
>>>> On 1/30/26 04:41, Pierrick Bouvier wrote:
>>>>> On 1/29/26 9:37 AM, Pierrick Bouvier wrote:
>>>>>>         contrib/plugins: add empty cpp plugin
>>>
>>> Hi; this fails to build for me on Linux (Ubuntu 24.04) with clang:
>>>
>>> In file included from ../../contrib/plugins/cpp.cpp:33:
>>> /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/coroutine:38:3:
>>> error: "the <coroutine> header requires -fcoroutines"
>>>     38 | # error "the <coroutine> header requires -fcoroutines"
>>>        |   ^
>>> 1 error generated.
>> 
>> Fails for me as well on Fedora 42 (x86_64) with gcc:
>> 
>> In file included from ../qemu/contrib/plugins/cpp.cpp:33:
>> /usr/include/c++/15/coroutine:43:3: error: #error "the <coroutine> header requires -fcoroutines"
>>     43 | # error "the <coroutine> header requires -fcoroutines"
>>        |   ^~~~~
>> 
>> (It works for me on an aarch64 RHEL 9 system.)
>
> Is this with a clean build? I had exactly the same error message 
> earlier, but I was able to fix it by destroying my build/ directory, 
> then re-running configure followed again by make.

Rebuilding with a fresh build dir looks promising so far ('make clean'
is not enough.) I'm wondering if we're missing some rebuild trigger (and
I'm also wondering why I didn't see this problem on my RHEL 9 aarch64
box.)