From: Pierrick Bouvier <pierrick.bouvier@linaro.org>
To: "Philippe Mathieu-Daudé" <philmd@linaro.org>, qemu-devel@nongnu.org
Cc: "Alex Bennée" <alex.bennee@linaro.org>,
"Markus Armbruster" <armbru@redhat.com>,
"Richard Henderson" <richard.henderson@linaro.org>
Subject: Re: [RFC PATCH-for-10.1 01/19] qemu: Introduce TargetInfo API in 'target_info.h'
Date: Fri, 4 Apr 2025 09:41:29 -0700 [thread overview]
Message-ID: <0723c40c-e21e-455b-b99d-5f814a1bd2d9@linaro.org> (raw)
In-Reply-To: <20250403234914.9154-2-philmd@linaro.org>
On 4/3/25 16:48, Philippe Mathieu-Daudé wrote:
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> meson.build | 9 +++++++++
> include/exec/poison.h | 1 +
> include/qemu/target_info-impl.h | 21 +++++++++++++++++++++
> include/qemu/target_info.h | 18 ++++++++++++++++++
> target_info-stub.c | 23 +++++++++++++++++++++++
> target_info.c | 16 ++++++++++++++++
> 6 files changed, 88 insertions(+)
> create mode 100644 include/qemu/target_info-impl.h
> create mode 100644 include/qemu/target_info.h
> create mode 100644 target_info-stub.c
> create mode 100644 target_info.c
>
> diff --git a/meson.build b/meson.build
> index bcb9d39a387..de9c9dacd35 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -3262,6 +3262,9 @@ host_kconfig = \
>
> ignored = [ 'TARGET_XML_FILES', 'TARGET_ABI_DIR', 'TARGET_ARCH' ]
>
> +target_info = [
> +]
> +
To follow what is already implemented, we should use a dictionary per
target, pointing to the associated source file.
This way, it allows to move files listing directly to each architecture,
and the top meson.build only needs to add stub if it is not defined.
> default_targets = 'CONFIG_DEFAULT_TARGETS' in config_host
> actual_target_dirs = []
> fdt_required = []
> @@ -3368,6 +3371,9 @@ foreach target : target_dirs
> config_target_data.set(k, v)
> endif
> endforeach
> + if target not in target_info
> + config_target_data.set('TARGET_INFO_STUB_NEEDED', 1)
> + endif
With the dictionary, this is not needed anymore.
> config_target_data.set('QEMU_ARCH',
> 'QEMU_ARCH_' + config_target['TARGET_BASE_ARCH'].to_upper())
> config_target_h += {target: configure_file(output: target + '-config-target.h',
> @@ -3807,6 +3813,9 @@ endif
> common_ss.add(pagevary)
> specific_ss.add(files('page-target.c', 'page-vary-target.c'))
>
> +specific_ss.add(files('target_info-stub.c'))
> +common_ss.add(files('target_info.c'))
> +
> subdir('backends')
> subdir('disas')
> subdir('migration')
> diff --git a/include/exec/poison.h b/include/exec/poison.h
> index bc422719d80..00aedc41d82 100644
> --- a/include/exec/poison.h
> +++ b/include/exec/poison.h
> @@ -38,6 +38,7 @@
> #pragma GCC poison TARGET_BIG_ENDIAN
> #pragma GCC poison TCG_GUEST_DEFAULT_MO
> #pragma GCC poison TARGET_HAS_PRECISE_SMC
> +#pragma GCC poison TARGET_INFO_STUB_NEEDED
>
> #pragma GCC poison TARGET_LONG_BITS
> #pragma GCC poison TARGET_FMT_lx
> diff --git a/include/qemu/target_info-impl.h b/include/qemu/target_info-impl.h
> new file mode 100644
> index 00000000000..b340e192fce
> --- /dev/null
> +++ b/include/qemu/target_info-impl.h
> @@ -0,0 +1,21 @@
> +/*
> + * QEMU binary helpers
> + *
> + * Copyright (c) Linaro
> + *
> + * SPDX-License-Identifier: GPL-2.0-or-later
> + */
> +
> +#ifndef QEMU_TARGET_INFO_IMPL_H
> +#define QEMU_TARGET_INFO_IMPL_H
> +
> +#include "qemu/target_info.h"
> +
> +struct BinaryTargetInfo {
> +
I would be in favor to rename exising TargetInfo in QMPTargetInfo, and
reuse that name here.
> + /* runtime equivalent of TARGET_INFO_STUB_NEEDED definition */
> + bool is_stub;
Why do we want to know if it's a stub at runtime?
> +
> +};
> +
> +#endif
> diff --git a/include/qemu/target_info.h b/include/qemu/target_info.h
> new file mode 100644
> index 00000000000..fab3f3153ea
> --- /dev/null
> +++ b/include/qemu/target_info.h
> @@ -0,0 +1,18 @@
> +/*
> + * QEMU binary helpers
> + *
> + * Copyright (c) Linaro
> + *
> + * SPDX-License-Identifier: GPL-2.0-or-later
> + */
> +
> +#ifndef QEMU_TARGET_INFO_H
> +#define QEMU_TARGET_INFO_H
> +
> +typedef struct BinaryTargetInfo BinaryTargetInfo;
> +
> +const BinaryTargetInfo *target_info(void);
> +
> +bool target_info_is_stub(void);
> +
> +#endif
> diff --git a/target_info-stub.c b/target_info-stub.c
> new file mode 100644
> index 00000000000..d683a05977d
> --- /dev/null
> +++ b/target_info-stub.c
> @@ -0,0 +1,23 @@
> +/*
> + * QEMU target info stubs
> + *
> + * Copyright (c) Linaro
> + *
> + * SPDX-License-Identifier: GPL-2.0-or-later
> + */
> +
> +#include "qemu/osdep.h"
> +#include "qemu/target_info-impl.h"
> +
> +#ifdef TARGET_INFO_STUB_NEEDED
> +
> +static const BinaryTargetInfo target_info_stub = {
> + .is_stub = true,
> +};
> +
> +const BinaryTargetInfo *target_info(void)
> +{
> + return &target_info_stub;
> +}
> +
> +#endif /* TARGET_INFO_STUB_NEEDED */
> diff --git a/target_info.c b/target_info.c
> new file mode 100644
> index 00000000000..cb17d29b86d
> --- /dev/null
> +++ b/target_info.c
> @@ -0,0 +1,16 @@
> +/*
> + * QEMU legacy binary helpers
> + *
> + * Copyright (c) Linaro
> + *
> + * SPDX-License-Identifier: GPL-2.0-or-later
> + */
> +
> +#include "qemu/osdep.h"
> +#include "qemu/target_info-impl.h"
> +#include "qemu/target_info.h"
> +
> +bool target_info_is_stub(void)
> +{
> + return target_info()->is_stub;
> +}
next prev parent reply other threads:[~2025-04-04 17:11 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-03 23:48 [RFC PATCH-for-10.1 00/19] qemu: Introduce TargetInfo API (for single binary) Philippe Mathieu-Daudé
2025-04-03 23:48 ` [RFC PATCH-for-10.1 01/19] qemu: Introduce TargetInfo API in 'target_info.h' Philippe Mathieu-Daudé
2025-04-04 16:41 ` Pierrick Bouvier [this message]
2025-04-03 23:48 ` [RFC PATCH-for-10.1 02/19] qemu: Convert target_name() to TargetInfo API Philippe Mathieu-Daudé
2025-04-04 16:42 ` Pierrick Bouvier
2025-04-03 23:48 ` [RFC PATCH-for-10.1 03/19] qemu: Factor target_system_arch() out Philippe Mathieu-Daudé
2025-04-04 16:44 ` Pierrick Bouvier
2025-04-03 23:48 ` [RFC PATCH-for-10.1 04/19] qemu: Convert target_words_bigendian() to TargetInfo API Philippe Mathieu-Daudé
2025-04-04 16:45 ` Pierrick Bouvier
2025-04-03 23:49 ` [RFC PATCH-for-10.1 05/19] qemu: Introduce target_long_bits() Philippe Mathieu-Daudé
2025-04-04 16:46 ` Pierrick Bouvier
2025-04-03 23:49 ` [RFC PATCH-for-10.1 06/19] target/tricore: Replace TARGET_LONG_BITS -> target_long_bits() Philippe Mathieu-Daudé
2025-04-04 16:48 ` Pierrick Bouvier
2025-04-04 17:53 ` Philippe Mathieu-Daudé
2025-04-17 18:00 ` Paolo Bonzini
2025-04-17 18:32 ` Philippe Mathieu-Daudé
2025-04-03 23:49 ` [RFC PATCH-for-10.1 07/19] target/hppa: " Philippe Mathieu-Daudé
2025-04-04 16:48 ` Pierrick Bouvier
2025-04-04 17:54 ` Philippe Mathieu-Daudé
2025-04-17 17:27 ` Paolo Bonzini
2025-04-03 23:49 ` [RFC PATCH-for-10.1 08/19] target/riscv: " Philippe Mathieu-Daudé
2025-04-04 16:48 ` Pierrick Bouvier
2025-04-04 17:54 ` Philippe Mathieu-Daudé
2025-04-03 23:49 ` [RFC PATCH-for-10.1 09/19] qemu: Introduce target_cpu_type() Philippe Mathieu-Daudé
2025-04-04 16:48 ` Pierrick Bouvier
2025-04-03 23:49 ` [RFC PATCH-for-10.1 10/19] cpus: Replace CPU_RESOLVING_TYPE -> target_cpu_type() Philippe Mathieu-Daudé
2025-04-04 16:51 ` Pierrick Bouvier
2025-04-03 23:49 ` [RFC PATCH-for-10.1 11/19] accel/tcg: " Philippe Mathieu-Daudé
2025-04-04 16:51 ` Pierrick Bouvier
2025-04-04 17:56 ` Philippe Mathieu-Daudé
2025-04-04 18:04 ` Pierrick Bouvier
2025-04-03 23:49 ` [RFC PATCH-for-10.1 12/19] cpus: Move target-agnostic methods out of cpu-target.c Philippe Mathieu-Daudé
2025-04-04 16:53 ` Pierrick Bouvier
2025-04-03 23:49 ` [RFC PATCH-for-10.1 13/19] accel: Replace CPU_RESOLVING_TYPE -> target_cpu_type() Philippe Mathieu-Daudé
2025-04-04 16:52 ` Pierrick Bouvier
2025-04-03 23:49 ` [RFC PATCH-for-10.1 14/19] accel: Implement accel_init_ops_interfaces() for both system/user mode Philippe Mathieu-Daudé
2025-04-04 16:56 ` Pierrick Bouvier
2025-04-03 23:49 ` [RFC PATCH-for-10.1 15/19] accel: Include missing 'qemu/accel.h' header in accel-internal.h Philippe Mathieu-Daudé
2025-04-04 16:56 ` Pierrick Bouvier
2025-04-03 23:49 ` [RFC PATCH-for-10.1 16/19] accel: Make AccelCPUClass structure target-agnostic Philippe Mathieu-Daudé
2025-04-04 16:57 ` Pierrick Bouvier
2025-04-03 23:49 ` [RFC PATCH-for-10.1 17/19] accel: Move target-agnostic code from accel-target.c -> accel-common.c Philippe Mathieu-Daudé
2025-04-04 16:59 ` Pierrick Bouvier
2025-04-17 16:42 ` Philippe Mathieu-Daudé
2025-04-03 23:49 ` [RFC PATCH-for-10.1 18/19] qemu: Prepare per-binary QOM filter via TYPE_BINARY_PREFIX Philippe Mathieu-Daudé
2025-04-04 17:04 ` Pierrick Bouvier
2025-04-03 23:49 ` [RFC PATCH-for-10.1 19/19] system/vl: Filter machine list for binary using machine_binary_filter() Philippe Mathieu-Daudé
2025-04-04 17:10 ` Pierrick Bouvier
2025-04-04 18:01 ` Philippe Mathieu-Daudé
2025-04-04 18:08 ` Pierrick Bouvier
2025-04-04 18:11 ` Pierrick Bouvier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0723c40c-e21e-455b-b99d-5f814a1bd2d9@linaro.org \
--to=pierrick.bouvier@linaro.org \
--cc=alex.bennee@linaro.org \
--cc=armbru@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).