mirror of
https://github.com/qemu/qemu.git
synced 2026-04-21 21:53:48 +00:00
This make sure we can include all possible headers without breaking build for environments missing them. It fixes compilation on openbsd. We don't want to pollute configure script, as it's really a special case here to make sure we don't have a compilation regression with qemu-plugins header. Tested-by: John Snow <jsnow@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Link: https://lore.kernel.org/qemu-devel/20260214061025.1239457-1-pierrick.bouvier@linaro.org Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
377 lines
7.1 KiB
C++
377 lines
7.1 KiB
C++
/*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
|
*
|
|
* This C++ plugin ensures we don't have regression when compiling C++.
|
|
*/
|
|
|
|
#include <qemu-plugin.h>
|
|
|
|
/*
|
|
* We include all C++ standard headers (without deprecated ones),
|
|
* taken from: https://en.cppreference.com/w/cpp/headers.html
|
|
*
|
|
* To update, copy page text, and then:
|
|
* grep '^<' |
|
|
* sort -u |
|
|
* grep -v strstream |
|
|
* grep -v codecvt |
|
|
* sed -e 's/\(.*\)/#if __has_include(\1)\n#include \1\n#endif/'
|
|
*/
|
|
|
|
#if __has_include(<algorithm>)
|
|
#include <algorithm>
|
|
#endif
|
|
#if __has_include(<any>)
|
|
#include <any>
|
|
#endif
|
|
#if __has_include(<array>)
|
|
#include <array>
|
|
#endif
|
|
#if __has_include(<atomic>)
|
|
#include <atomic>
|
|
#endif
|
|
#if __has_include(<barrier>)
|
|
#include <barrier>
|
|
#endif
|
|
#if __has_include(<bit>)
|
|
#include <bit>
|
|
#endif
|
|
#if __has_include(<bitset>)
|
|
#include <bitset>
|
|
#endif
|
|
#if __has_include(<cassert>)
|
|
#include <cassert>
|
|
#endif
|
|
#if __has_include(<cctype>)
|
|
#include <cctype>
|
|
#endif
|
|
#if __has_include(<cerrno>)
|
|
#include <cerrno>
|
|
#endif
|
|
#if __has_include(<cfenv>)
|
|
#include <cfenv>
|
|
#endif
|
|
#if __has_include(<cfloat>)
|
|
#include <cfloat>
|
|
#endif
|
|
#if __has_include(<charconv>)
|
|
#include <charconv>
|
|
#endif
|
|
#if __has_include(<chrono>)
|
|
#include <chrono>
|
|
#endif
|
|
#if __has_include(<cinttypes>)
|
|
#include <cinttypes>
|
|
#endif
|
|
#if __has_include(<climits>)
|
|
#include <climits>
|
|
#endif
|
|
#if __has_include(<clocale>)
|
|
#include <clocale>
|
|
#endif
|
|
#if __has_include(<cmath>)
|
|
#include <cmath>
|
|
#endif
|
|
#if __has_include(<compare>)
|
|
#include <compare>
|
|
#endif
|
|
#if __has_include(<complex>)
|
|
#include <complex>
|
|
#endif
|
|
#if __has_include(<concepts>)
|
|
#include <concepts>
|
|
#endif
|
|
#if __has_include(<condition_variable>)
|
|
#include <condition_variable>
|
|
#endif
|
|
#if __has_include(<contracts>)
|
|
#include <contracts>
|
|
#endif
|
|
#if __has_include(<coroutine>)
|
|
#include <coroutine>
|
|
#endif
|
|
#if __has_include(<csetjmp>)
|
|
#include <csetjmp>
|
|
#endif
|
|
#if __has_include(<csignal>)
|
|
#include <csignal>
|
|
#endif
|
|
#if __has_include(<cstdarg>)
|
|
#include <cstdarg>
|
|
#endif
|
|
#if __has_include(<cstddef>)
|
|
#include <cstddef>
|
|
#endif
|
|
#if __has_include(<cstdint>)
|
|
#include <cstdint>
|
|
#endif
|
|
#if __has_include(<cstdio>)
|
|
#include <cstdio>
|
|
#endif
|
|
#if __has_include(<cstdlib>)
|
|
#include <cstdlib>
|
|
#endif
|
|
#if __has_include(<cstring>)
|
|
#include <cstring>
|
|
#endif
|
|
#if __has_include(<ctime>)
|
|
#include <ctime>
|
|
#endif
|
|
#if __has_include(<cuchar>)
|
|
#include <cuchar>
|
|
#endif
|
|
#if __has_include(<cwchar>)
|
|
#include <cwchar>
|
|
#endif
|
|
#if __has_include(<cwctype>)
|
|
#include <cwctype>
|
|
#endif
|
|
#if __has_include(<debugging>)
|
|
#include <debugging>
|
|
#endif
|
|
#if __has_include(<deque>)
|
|
#include <deque>
|
|
#endif
|
|
#if __has_include(<exception>)
|
|
#include <exception>
|
|
#endif
|
|
#if __has_include(<execution>)
|
|
#include <execution>
|
|
#endif
|
|
#if __has_include(<expected>)
|
|
#include <expected>
|
|
#endif
|
|
#if __has_include(<filesystem>)
|
|
#include <filesystem>
|
|
#endif
|
|
#if __has_include(<flat_map>)
|
|
#include <flat_map>
|
|
#endif
|
|
#if __has_include(<flat_set>)
|
|
#include <flat_set>
|
|
#endif
|
|
#if __has_include(<format>)
|
|
#include <format>
|
|
#endif
|
|
#if __has_include(<forward_list>)
|
|
#include <forward_list>
|
|
#endif
|
|
#if __has_include(<fstream>)
|
|
#include <fstream>
|
|
#endif
|
|
#if __has_include(<functional>)
|
|
#include <functional>
|
|
#endif
|
|
#if __has_include(<future>)
|
|
#include <future>
|
|
#endif
|
|
#if __has_include(<generator>)
|
|
#include <generator>
|
|
#endif
|
|
#if __has_include(<hazard_pointer>)
|
|
#include <hazard_pointer>
|
|
#endif
|
|
#if __has_include(<hive>)
|
|
#include <hive>
|
|
#endif
|
|
#if __has_include(<initializer_list>)
|
|
#include <initializer_list>
|
|
#endif
|
|
#if __has_include(<inplace_vector>)
|
|
#include <inplace_vector>
|
|
#endif
|
|
#if __has_include(<iomanip>)
|
|
#include <iomanip>
|
|
#endif
|
|
#if __has_include(<ios>)
|
|
#include <ios>
|
|
#endif
|
|
#if __has_include(<iosfwd>)
|
|
#include <iosfwd>
|
|
#endif
|
|
#if __has_include(<iostream>)
|
|
#include <iostream>
|
|
#endif
|
|
#if __has_include(<istream>)
|
|
#include <istream>
|
|
#endif
|
|
#if __has_include(<iterator>)
|
|
#include <iterator>
|
|
#endif
|
|
#if __has_include(<latch>)
|
|
#include <latch>
|
|
#endif
|
|
#if __has_include(<limits>)
|
|
#include <limits>
|
|
#endif
|
|
#if __has_include(<linalg>)
|
|
#include <linalg>
|
|
#endif
|
|
#if __has_include(<list>)
|
|
#include <list>
|
|
#endif
|
|
#if __has_include(<locale>)
|
|
#include <locale>
|
|
#endif
|
|
#if __has_include(<map>)
|
|
#include <map>
|
|
#endif
|
|
#if __has_include(<mdspan>)
|
|
#include <mdspan>
|
|
#endif
|
|
#if __has_include(<memory>)
|
|
#include <memory>
|
|
#endif
|
|
#if __has_include(<memory_resource>)
|
|
#include <memory_resource>
|
|
#endif
|
|
#if __has_include(<mutex>)
|
|
#include <mutex>
|
|
#endif
|
|
#if __has_include(<new>)
|
|
#include <new>
|
|
#endif
|
|
#if __has_include(<numbers>)
|
|
#include <numbers>
|
|
#endif
|
|
#if __has_include(<numeric>)
|
|
#include <numeric>
|
|
#endif
|
|
#if __has_include(<optional>)
|
|
#include <optional>
|
|
#endif
|
|
#if __has_include(<ostream>)
|
|
#include <ostream>
|
|
#endif
|
|
#if __has_include(<print>)
|
|
#include <print>
|
|
#endif
|
|
#if __has_include(<queue>)
|
|
#include <queue>
|
|
#endif
|
|
#if __has_include(<random>)
|
|
#include <random>
|
|
#endif
|
|
#if __has_include(<ranges>)
|
|
#include <ranges>
|
|
#endif
|
|
#if __has_include(<ratio>)
|
|
#include <ratio>
|
|
#endif
|
|
#if __has_include(<rcu>)
|
|
#include <rcu>
|
|
#endif
|
|
#if __has_include(<regex>)
|
|
#include <regex>
|
|
#endif
|
|
#if __has_include(<scoped_allocator>)
|
|
#include <scoped_allocator>
|
|
#endif
|
|
#if __has_include(<semaphore>)
|
|
#include <semaphore>
|
|
#endif
|
|
#if __has_include(<set>)
|
|
#include <set>
|
|
#endif
|
|
#if __has_include(<shared_mutex>)
|
|
#include <shared_mutex>
|
|
#endif
|
|
#if __has_include(<simd>)
|
|
#include <simd>
|
|
#endif
|
|
#if __has_include(<source_location>)
|
|
#include <source_location>
|
|
#endif
|
|
#if __has_include(<span>)
|
|
#include <span>
|
|
#endif
|
|
#if __has_include(<spanstream>)
|
|
#include <spanstream>
|
|
#endif
|
|
#if __has_include(<sstream>)
|
|
#include <sstream>
|
|
#endif
|
|
#if __has_include(<stack>)
|
|
#include <stack>
|
|
#endif
|
|
#if __has_include(<stacktrace>)
|
|
#include <stacktrace>
|
|
#endif
|
|
#if __has_include(<stdexcept>)
|
|
#include <stdexcept>
|
|
#endif
|
|
#if __has_include(<stdfloat>)
|
|
#include <stdfloat>
|
|
#endif
|
|
#if __has_include(<stop_token>)
|
|
#include <stop_token>
|
|
#endif
|
|
#if __has_include(<streambuf>)
|
|
#include <streambuf>
|
|
#endif
|
|
#if __has_include(<string>)
|
|
#include <string>
|
|
#endif
|
|
#if __has_include(<string_view>)
|
|
#include <string_view>
|
|
#endif
|
|
#if __has_include(<syncstream>)
|
|
#include <syncstream>
|
|
#endif
|
|
#if __has_include(<system_error>)
|
|
#include <system_error>
|
|
#endif
|
|
#if __has_include(<text_encoding>)
|
|
#include <text_encoding>
|
|
#endif
|
|
#if __has_include(<thread>)
|
|
#include <thread>
|
|
#endif
|
|
#if __has_include(<tuple>)
|
|
#include <tuple>
|
|
#endif
|
|
#if __has_include(<typeindex>)
|
|
#include <typeindex>
|
|
#endif
|
|
#if __has_include(<typeinfo>)
|
|
#include <typeinfo>
|
|
#endif
|
|
#if __has_include(<type_traits>)
|
|
#include <type_traits>
|
|
#endif
|
|
#if __has_include(<unordered_map>)
|
|
#include <unordered_map>
|
|
#endif
|
|
#if __has_include(<unordered_set>)
|
|
#include <unordered_set>
|
|
#endif
|
|
#if __has_include(<utility>)
|
|
#include <utility>
|
|
#endif
|
|
#if __has_include(<valarray>)
|
|
#include <valarray>
|
|
#endif
|
|
#if __has_include(<variant>)
|
|
#include <variant>
|
|
#endif
|
|
#if __has_include(<vector>)
|
|
#include <vector>
|
|
#endif
|
|
#if __has_include(<version>)
|
|
#include <version>
|
|
#endif
|
|
|
|
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;
|
|
}
|