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
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
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
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~
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
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.)
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.
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
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 :|
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
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
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 :|
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.)
© 2016 - 2026 Red Hat, Inc.