[PATCH v2 11/11] contrib/plugins: add empty cpp plugin

Pierrick Bouvier posted 11 patches 4 days, 12 hours ago
Maintainers: "Alex Bennée" <alex.bennee@linaro.org>, Alexandre Iooss <erdnaxe@crans.org>, Mahmoud Mandour <ma.mandourr@gmail.com>, Pierrick Bouvier <pierrick.bouvier@linaro.org>, Richard Henderson <richard.henderson@linaro.org>, Paolo Bonzini <pbonzini@redhat.com>, "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>
[PATCH v2 11/11] contrib/plugins: add empty cpp plugin
Posted by Pierrick Bouvier 4 days, 12 hours ago
This plugin makes sure we can compile in C++ while including qemu-plugin
header. It includes all C++ standard headers, up to C++23 standard,
minus the ones that are missing in the oldest environments we need to
build for.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
---
 contrib/plugins/cpp.cpp     | 119 ++++++++++++++++++++++++++++++++++++
 contrib/plugins/meson.build |   4 ++
 2 files changed, 123 insertions(+)
 create mode 100644 contrib/plugins/cpp.cpp

diff --git a/contrib/plugins/cpp.cpp b/contrib/plugins/cpp.cpp
new file mode 100644
index 00000000000..1ff54896d97
--- /dev/null
+++ b/contrib/plugins/cpp.cpp
@@ -0,0 +1,119 @@
+/*
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ *
+ * This C++ plugin ensures we don't have regression when compiling C++.
+ */
+
+#include <qemu-plugin.h>
+
+/* https://en.cppreference.com/w/cpp/headers.html */
+#include <algorithm>
+#include <any>
+#include <array>
+#include <atomic>
+#include <barrier>
+#include <bit>
+#include <bitset>
+#include <cassert>
+#include <cctype>
+#include <cerrno>
+#include <cfenv>
+#include <cfloat>
+#include <charconv>
+#include <chrono>
+#include <cinttypes>
+#include <climits>
+#include <clocale>
+#include <cmath>
+#include <codecvt>
+#include <compare>
+#include <complex>
+#include <concepts>
+#include <condition_variable>
+#include <coroutine>
+#include <csetjmp>
+#include <csignal>
+#include <cstdarg>
+#include <cstddef>
+#include <cstdint>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include <ctime>
+#include <cuchar>
+#include <cwchar>
+#include <cwctype>
+#include <deque>
+#include <exception>
+#include <execution>
+#include <filesystem>
+#include <forward_list>
+#include <fstream>
+#include <functional>
+#include <future>
+#include <initializer_list>
+#include <iomanip>
+#include <ios>
+#include <iosfwd>
+#include <iostream>
+#include <istream>
+#include <iterator>
+#include <latch>
+#include <limits>
+#include <list>
+#include <locale>
+#include <map>
+#include <memory>
+#include <memory_resource>
+#include <mutex>
+#include <new>
+#include <numbers>
+#include <numeric>
+#include <optional>
+#include <ostream>
+#include <queue>
+#include <random>
+#include <ranges>
+#include <ratio>
+#include <regex>
+#include <scoped_allocator>
+#include <semaphore>
+#include <set>
+#include <shared_mutex>
+#include <source_location>
+#include <span>
+#include <sstream>
+#include <stack>
+#include <stdexcept>
+#include <stop_token>
+#include <streambuf>
+#include <string>
+#include <string_view>
+#include <syncstream>
+#include <system_error>
+#include <thread>
+#include <tuple>
+#include <typeindex>
+#include <typeinfo>
+#include <type_traits>
+#include <unordered_map>
+#include <unordered_set>
+#include <utility>
+#include <valarray>
+#include <variant>
+#include <vector>
+#include <version>
+
+QEMU_PLUGIN_EXPORT int qemu_plugin_version = QEMU_PLUGIN_VERSION;
+
+static void vcpu_tb_trans(qemu_plugin_id_t id, struct qemu_plugin_tb *tb)
+{
+}
+
+QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
+                                           const qemu_info_t *info,
+                                           int argc, char **argv)
+{
+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
+    return 0;
+}
diff --git a/contrib/plugins/meson.build b/contrib/plugins/meson.build
index 3d2d7862e0c..53d52c97967 100644
--- a/contrib/plugins/meson.build
+++ b/contrib/plugins/meson.build
@@ -6,6 +6,10 @@ if host_os != 'windows'
   contrib_plugins += 'lockstep.c'
 endif
 
+if 'cpp' in all_languages
+  contrib_plugins += 'cpp.cpp'
+endif
+
 t = []
 if get_option('plugins')
   foreach i : contrib_plugins
-- 
2.47.3


Re: [PATCH v2 11/11] contrib/plugins: add empty cpp plugin
Posted by Manos Pitsidianakis 3 days, 20 hours ago
On Fri, 02 Jan 2026 23:47, Pierrick Bouvier <pierrick.bouvier@linaro.org> wrote:
>This plugin makes sure we can compile in C++ while including qemu-plugin
>header. It includes all C++ standard headers, up to C++23 standard,
>minus the ones that are missing in the oldest environments we need to
>build for.
>
>Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
>---

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>

> contrib/plugins/cpp.cpp     | 119 ++++++++++++++++++++++++++++++++++++
> contrib/plugins/meson.build |   4 ++
> 2 files changed, 123 insertions(+)
> create mode 100644 contrib/plugins/cpp.cpp
>
>diff --git a/contrib/plugins/cpp.cpp b/contrib/plugins/cpp.cpp
>new file mode 100644
>index 00000000000..1ff54896d97
>--- /dev/null
>+++ b/contrib/plugins/cpp.cpp
>@@ -0,0 +1,119 @@
>+/*
>+ * SPDX-License-Identifier: GPL-2.0-or-later
>+ *
>+ * This C++ plugin ensures we don't have regression when compiling C++.
>+ */
>+
>+#include <qemu-plugin.h>
>+
>+/* https://en.cppreference.com/w/cpp/headers.html */
>+#include <algorithm>
>+#include <any>
>+#include <array>
>+#include <atomic>
>+#include <barrier>
>+#include <bit>
>+#include <bitset>
>+#include <cassert>
>+#include <cctype>
>+#include <cerrno>
>+#include <cfenv>
>+#include <cfloat>
>+#include <charconv>
>+#include <chrono>
>+#include <cinttypes>
>+#include <climits>
>+#include <clocale>
>+#include <cmath>
>+#include <codecvt>
>+#include <compare>
>+#include <complex>
>+#include <concepts>
>+#include <condition_variable>
>+#include <coroutine>
>+#include <csetjmp>
>+#include <csignal>
>+#include <cstdarg>
>+#include <cstddef>
>+#include <cstdint>
>+#include <cstdio>
>+#include <cstdlib>
>+#include <cstring>
>+#include <ctime>
>+#include <cuchar>
>+#include <cwchar>
>+#include <cwctype>
>+#include <deque>
>+#include <exception>
>+#include <execution>
>+#include <filesystem>
>+#include <forward_list>
>+#include <fstream>
>+#include <functional>
>+#include <future>
>+#include <initializer_list>
>+#include <iomanip>
>+#include <ios>
>+#include <iosfwd>
>+#include <iostream>
>+#include <istream>
>+#include <iterator>
>+#include <latch>
>+#include <limits>
>+#include <list>
>+#include <locale>
>+#include <map>
>+#include <memory>
>+#include <memory_resource>
>+#include <mutex>
>+#include <new>
>+#include <numbers>
>+#include <numeric>
>+#include <optional>
>+#include <ostream>
>+#include <queue>
>+#include <random>
>+#include <ranges>
>+#include <ratio>
>+#include <regex>
>+#include <scoped_allocator>
>+#include <semaphore>
>+#include <set>
>+#include <shared_mutex>
>+#include <source_location>
>+#include <span>
>+#include <sstream>
>+#include <stack>
>+#include <stdexcept>
>+#include <stop_token>
>+#include <streambuf>
>+#include <string>
>+#include <string_view>
>+#include <syncstream>
>+#include <system_error>
>+#include <thread>
>+#include <tuple>
>+#include <typeindex>
>+#include <typeinfo>
>+#include <type_traits>
>+#include <unordered_map>
>+#include <unordered_set>
>+#include <utility>
>+#include <valarray>
>+#include <variant>
>+#include <vector>
>+#include <version>
>+
>+QEMU_PLUGIN_EXPORT int qemu_plugin_version = QEMU_PLUGIN_VERSION;
>+
>+static void vcpu_tb_trans(qemu_plugin_id_t id, struct qemu_plugin_tb *tb)
>+{
>+}
>+
>+QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
>+                                           const qemu_info_t *info,
>+                                           int argc, char **argv)
>+{
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
>+    return 0;
>+}
>diff --git a/contrib/plugins/meson.build b/contrib/plugins/meson.build
>index 3d2d7862e0c..53d52c97967 100644
>--- a/contrib/plugins/meson.build
>+++ b/contrib/plugins/meson.build
>@@ -6,6 +6,10 @@ if host_os != 'windows'
>   contrib_plugins += 'lockstep.c'
> endif
> 
>+if 'cpp' in all_languages
>+  contrib_plugins += 'cpp.cpp'
>+endif
>+
> t = []
> if get_option('plugins')
>   foreach i : contrib_plugins
>-- 
>2.47.3
>