On Sat, Nov 7, 2026 at 1:47 AM Pierrick Bouvier
<[email protected]> wrote:
>
> On 11/6/2026 9:46 AM, Yonggang Luo wrote:
> > On Sat, Nov 7, 2026 at 1:44 AM Pierrick Bouvier
> > <[email protected]> wrote:
> >>
> >> On 11/5/2026 11:03 AM, Yonggang Luo wrote:
> >>> Return the QEMU_ARCH_* mask of the selected target. System mode
> >>> returns QEMU_ARCH_ALL until a target is selected. User mode returns
> >>> that target's bit. Tools return 0.
> >>>
> >>> Signed-off-by: Yonggang Luo <[email protected]>
> >>> ---
> >>> include/qemu/target-info-init.h | 15 ++++++++++-----
> >>> include/qemu/target-info.h | 9 +++++++++
> >>> stubs/meson.build | 1 +
> >>> stubs/target-mask-selected.c | 13 +++++++++++++
> >>> target-info-def.c | 3 +++
> >>> target-info-qom.c | 10 ++++++++++
> >>> 6 files changed, 46 insertions(+), 5 deletions(-)
> >>> create mode 100644 stubs/target-mask-selected.c
> >>>
> >>> diff --git a/include/qemu/target-info-init.h
> >>> b/include/qemu/target-info-init.h
> >>> index b7024c9fae..8492986832 100644
> >>> --- a/include/qemu/target-info-init.h
> >>> +++ b/include/qemu/target-info-init.h
> >>> @@ -24,12 +24,17 @@ module_init(do_qemu_init_target_info,
> >>> MODULE_INIT_TARGET_INFO)
> >>>
> >>> /*
> >>> * User mode does not support multiple targets in the same binary, so
> >>> just
> >>> - * define target_info().
> >>> + * define target_info() and target_mask_selected(). The target is always
> >>> + * selected.
> >>> */
> >>> -#define target_info_init(ti_var) \
> >>> -const TargetInfo *target_info(void) \
> >>> -{ \
> >>> - return &ti_var; \
> >>> +#define target_info_init(ti_var) \
> >>> +const TargetInfo *target_info(void) \
> >>> +{ \
> >>> + return &ti_var; \
> >>> +} \
> >>> +uint64_t target_mask_selected(void) \
> >>> +{ \
> >>> + return QEMU_ARCH_BIT((ti_var).target_arch); \
> >>> }
> >>>
> >>> #else /* CONFIG_USER_ONLY */
> >>> diff --git a/include/qemu/target-info.h b/include/qemu/target-info.h
> >>> index 2cd4cc5671..5673d10eba 100644
> >>> --- a/include/qemu/target-info.h
> >>> +++ b/include/qemu/target-info.h
> >>> @@ -134,4 +134,13 @@ bool target_base_riscv(void);
> >>> */
> >>> bool target_riscv64(void);
> >>>
> >>> +/**
> >>> + * target_mask_selected:
> >>> + *
> >>> + * Returns the QEMU_ARCH_* mask of the selected target. System mode
> >>> + * returns QEMU_ARCH_ALL until a target is selected. User mode returns
> >>> + * that target's bit. Tools return 0.
> >>> + */
> >>> +uint64_t target_mask_selected(void);
> >>> +
> >>> #endif
> >>> diff --git a/stubs/meson.build b/stubs/meson.build
> >>> index 744fb759a2..49cede8582 100644
> >>> --- a/stubs/meson.build
> >>> +++ b/stubs/meson.build
> >>> @@ -12,6 +12,7 @@ stub_ss.add(files('monitor-hmp.c'))
> >>> stub_ss.add(files('qapi-event-emit.c'))
> >>> stub_ss.add(files('replay-mode.c'))
> >>> stub_ss.add(files('trace-control.c'))
> >>> +stub_ss.add(files('target-mask-selected.c'))
> >>>
> >>
> >> For which configs is the stub required?
> >> target-info-def will always be present.
> >
> > For tools
> >
>
> Can you post the exact link error that exposes the absence of this symbol?
There is very much, I extract part of them:
[61/389] Linking target tests/fp/fp-test
FAILED: [code=1] tests/fp/fp-test
gcc -m64 -o tests/fp/fp-test
libevent-loop-base.a.p/event-loop-base.c.o
libqom.a.p/qom_container.c.o libqom.a.p/qom_object.c.o
libqom.a.p/qom_object_interfaces.c.o libqom.a.p/qom_qom-qobject.c.o
libqom.a.p/qom_compat-properties.c.o tests/fp/fp-test.p/fp-test.c.o
tests/fp/fp-test.p/.._.._fpu_softfloat.c.o -Wl,--as-needed
-Wl,--no-undefined -pie -fstack-protector-strong -Wl,-z,relro
-Wl,-z,now -Wl,--start-group libqemuutil.a
subprojects/libvhost-user/libvhost-user-glib.a
subprojects/libvhost-user/libvhost-user.a
subprojects/berkeley-softfloat-3/libsoftfloat.a
subprojects/berkeley-testfloat-3/libtestfloat.a
subprojects/berkeley-testfloat-3/libslowfloat.a -lnuma
/usr/lib/x86_64-linux-gnu/liburing.so
/usr/lib/x86_64-linux-gnu/libgio-2.0.so
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so
/usr/lib/x86_64-linux-gnu/libglib-2.0.so -Wl,--export-dynamic
/usr/lib/x86_64-linux-gnu/libgmodule-2.0.so -pthread -lm
/usr/lib/x86_64-linux-gnu/libpixman-1.so
/usr/lib/x86_64-linux-gnu/libepoxy.so -Wl,--end-group
/usr/bin/x86_64-linux-gnu-ld.bfd: libqom.a.p/qom_object.c.o: in
function `type_register_internal':
/build/release-amd64/../../qom/object.c:243:(.text+0x1c2): undefined
reference to `target_mask_selected'
/usr/bin/x86_64-linux-gnu-ld.bfd: libqom.a.p/qom_object.c.o: in
function `target_mask_filter':
/build/release-amd64/../../qom/object.c:120:(.text+0x1df): undefined
reference to `target_mask_selected'
/usr/bin/x86_64-linux-gnu-ld.bfd:
/build/release-amd64/../../qom/object.c:120:(.text+0x37a): undefined
reference to`target_mask_selected'
/usr/bin/x86_64-linux-gnu-ld.bfd:
/build/release-amd64/../../qom/object.c:120:(.text+0x1ebf): undefined
reference to `target_mask_selected'
collect2: error: ld returned 1 exit status
[62/389] Linking target tests/bench/benchmark-crypto-akcipher
FAILED: [code=1] tests/bench/benchmark-crypto-akcipher
gcc -m64 -o tests/bench/benchmark-crypto-akcipher
libevent-loop-base.a.p/event-loop-base.c.o
libqom.a.p/qom_container.c.o libqom.a.p/qom_object.c.o
libqom.a.p/qom_object_interfaces.c.o libqom.a.p/qom_qom-qobject.c.o
libqom.a.p/qom_compat-properties.c.o libcrypto.a.p/crypto_afsplit.c.o
libcrypto.a.p/crypto_akcipher.c.o libcrypto.a.p/crypto_block-luks.c.o
libcrypto.a.p/crypto_block-qcow.c.o libcrypto.a.p/crypto_block.c.o
libcrypto.a.p/crypto_cipher.c.o libcrypto.a.p/crypto_der.c.o
libcrypto.a.p/crypto_hash.c.o libcrypto.a.p/crypto_hmac.c.o
libcrypto.a.p/crypto_ivgen-essiv.c.o
libcrypto.a.p/crypto_ivgen-plain.c.o
libcrypto.a.p/crypto_ivgen-plain64.c.o libcrypto.a.p/crypto_ivgen.c.o
libcrypto.a.p/crypto_pbkdf.c.o libcrypto.a.p/crypto_secret_common.c.o
libcrypto.a.p/crypto_secret.c.o libcrypto.a.p/crypto_tlscreds.c.o
libcrypto.a.p/crypto_tlscredsanon.c.o
libcrypto.a.p/crypto_tlscredspsk.c.o
libcrypto.a.p/crypto_tlscredsx509.c.o
libcrypto.a.p/crypto_tlssession.c.o libcrypto.a.p/crypto_rsakey.c.o
libcrypto.a.p/crypto_x509-utils.c.o
libcrypto.a.p/crypto_hash-nettle.c.o
libcrypto.a.p/crypto_hmac-nettle.c.o
libcrypto.a.p/crypto_pbkdf-nettle.c.o
libcrypto.a.p/crypto_secret_keyring.c.o libauthz.a.p/authz_base.c.o
libauthz.a.p/authz_list.c.o libauthz.a.p/authz_listfile.c.o
libauthz.a.p/authz_simple.c.o
tests/bench/benchmark-crypto-akcipher.p/benchmark-crypto-akcipher.c.o
-Wl,--as-needed -Wl,--no-undefined -pie -fstack-protector-strong
-Wl,-z,relro -Wl,-z,now -Wl,--start-group libqemuutil.a
subprojects/libvhost-user/libvhost-user-glib.a
subprojects/libvhost-user/libvhost-user.a
/usr/lib/x86_64-linux-gnu/libnettle.so
/usr/lib/x86_64-linux-gnu/libgmp.so
/usr/lib/x86_64-linux-gnu/libhogweed.so -lnuma
/usr/lib/x86_64-linux-gnu/liburing.so
/usr/lib/x86_64-linux-gnu/libgio-2.0.so
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so
/usr/lib/x86_64-linux-gnu/libglib-2.0.so -Wl,--export-dynamic
/usr/lib/x86_64-linux-gnu/libgmodule-2.0.so -pthread -lm
/usr/lib/x86_64-linux-gnu/libpixman-1.so
/usr/lib/x86_64-linux-gnu/libepoxy.so -Wl,--end-group
/usr/bin/x86_64-linux-gnu-ld.bfd: libqom.a.p/qom_object.c.o: in
function `type_register_internal':
/build/release-amd64/../../qom/object.c:243:(.text+0x1c2): undefined
reference to `target_mask_selected'
/usr/bin/x86_64-linux-gnu-ld.bfd: libqom.a.p/qom_object.c.o: in
function `target_mask_filter':
/build/release-amd64/../../qom/object.c:120:(.text+0x1df): undefined
reference to `target_mask_selected'
/usr/bin/x86_64-linux-gnu-ld.bfd:
/build/release-amd64/../../qom/object.c:120:(.text+0x37a): undefined
reference to`target_mask_selected'
/usr/bin/x86_64-linux-gnu-ld.bfd:
/build/release-amd64/../../qom/object.c:120:(.text+0x1ebf): undefined
reference to `target_mask_selected'
collect2: error: ld returned 1 exit status
[63/389] Linking target tests/bench/benchmark-crypto-hash
FAILED: [code=1] tests/bench/benchmark-crypto-hash
gcc -m64 -o tests/bench/benchmark-crypto-hash
libevent-loop-base.a.p/event-loop-base.c.o
libqom.a.p/qom_container.c.o libqom.a.p/qom_object.c.o
libqom.a.p/qom_object_interfaces.c.o libqom.a.p/qom_qom-qobject.c.o
libqom.a.p/qom_compat-properties.c.o libcrypto.a.p/crypto_afsplit.c.o
libcrypto.a.p/crypto_akcipher.c.o libcrypto.a.p/crypto_block-luks.c.o
libcrypto.a.p/crypto_block-qcow.c.o libcrypto.a.p/crypto_block.c.o
libcrypto.a.p/crypto_cipher.c.o libcrypto.a.p/crypto_der.c.o
libcrypto.a.p/crypto_hash.c.o libcrypto.a.p/crypto_hmac.c.o
libcrypto.a.p/crypto_ivgen-essiv.c.o
libcrypto.a.p/crypto_ivgen-plain.c.o
libcrypto.a.p/crypto_ivgen-plain64.c.o libcrypto.a.p/crypto_ivgen.c.o
libcrypto.a.p/crypto_pbkdf.c.o libcrypto.a.p/crypto_secret_common.c.o
libcrypto.a.p/crypto_secret.c.o libcrypto.a.p/crypto_tlscreds.c.o
libcrypto.a.p/crypto_tlscredsanon.c.o
libcrypto.a.p/crypto_tlscredspsk.c.o
libcrypto.a.p/crypto_tlscredsx509.c.o
libcrypto.a.p/crypto_tlssession.c.o libcrypto.a.p/crypto_rsakey.c.o
libcrypto.a.p/crypto_x509-utils.c.o
libcrypto.a.p/crypto_hash-nettle.c.o
libcrypto.a.p/crypto_hmac-nettle.c.o
libcrypto.a.p/crypto_pbkdf-nettle.c.o
libcrypto.a.p/crypto_secret_keyring.c.o libauthz.a.p/authz_base.c.o
libauthz.a.p/authz_list.c.o libauthz.a.p/authz_listfile.c.o
libauthz.a.p/authz_simple.c.o
tests/bench/benchmark-crypto-hash.p/benchmark-crypto-hash.c.o
-Wl,--as-needed -Wl,--no-undefined -pie -fstack-protector-strong
-Wl,-z,relro -Wl,-z,now -Wl,--start-group libqemuutil.a
subprojects/libvhost-user/libvhost-user-glib.a
subprojects/libvhost-user/libvhost-user.a
/usr/lib/x86_64-linux-gnu/libnettle.so
/usr/lib/x86_64-linux-gnu/libgmp.so
/usr/lib/x86_64-linux-gnu/libhogweed.so -lnuma
/usr/lib/x86_64-linux-gnu/liburing.so
/usr/lib/x86_64-linux-gnu/libgio-2.0.so
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so
/usr/lib/x86_64-linux-gnu/libglib-2.0.so -Wl,--export-dynamic
/usr/lib/x86_64-linux-gnu/libgmodule-2.0.so -pthread -lm
/usr/lib/x86_64-linux-gnu/libpixman-1.so
/usr/lib/x86_64-linux-gnu/libepoxy.so -Wl,--end-group
/usr/bin/x86_64-linux-gnu-ld.bfd: libqom.a.p/qom_object.c.o: in
function `type_register_internal':
/build/release-amd64/../../qom/object.c:243:(.text+0x1c2): undefined
reference to `target_mask_selected'
/usr/bin/x86_64-linux-gnu-ld.bfd: libqom.a.p/qom_object.c.o: in
function `target_mask_filter':
/build/release-amd64/../../qom/object.c:120:(.text+0x1df): undefined
reference to `target_mask_selected'
/usr/bin/x86_64-linux-gnu-ld.bfd:
/build/release-amd64/../../qom/object.c:120:(.text+0x37a): undefined
reference to`target_mask_selected'
/usr/bin/x86_64-linux-gnu-ld.bfd:
/build/release-amd64/../../qom/object.c:120:(.text+0x1ebf): undefined
reference to `target_mask_selected'
collect2: error: ld returned 1 exit status
[64/389] Linking target tools/qemu-vnc/qemu-vnc
FAILED: [code=1] tools/qemu-vnc/qemu-vnc
gcc -m64 -o tools/qemu-vnc/qemu-vnc
tools/qemu-vnc/qemu-vnc.p/meson-generated_.._.._.._ui_dbus-display1.c.o
tools/qemu-vnc/qemu-vnc.p/meson-generated_.._qemu-vnc1.c.o
libio.a.p/io_channel-buffer.c.o libio.a.p/io_channel-command.c.o
libio.a.p/io_channel-file.c.o libio.a.p/io_channel-null.c.o
libio.a.p/io_channel-socket.c.o libio.a.p/io_channel-tls.c.o
libio.a.p/io_channel-util.c.o libio.a.p/io_channel-watch.c.o
libio.a.p/io_channel-websock.c.o libio.a.p/io_channel.c.o
libio.a.p/io_dns-resolver.c.o libio.a.p/io_net-listener.c.o
libio.a.p/io_task.c.o libcrypto.a.p/crypto_afsplit.c.o
libcrypto.a.p/crypto_akcipher.c.o libcrypto.a.p/crypto_block-luks.c.o
libcrypto.a.p/crypto_block-qcow.c.o libcrypto.a.p/crypto_block.c.o
libcrypto.a.p/crypto_cipher.c.o libcrypto.a.p/crypto_der.c.o
libcrypto.a.p/crypto_hash.c.o libcrypto.a.p/crypto_hmac.c.o
libcrypto.a.p/crypto_ivgen-essiv.c.o
libcrypto.a.p/crypto_ivgen-plain.c.o
libcrypto.a.p/crypto_ivgen-plain64.c.o libcrypto.a.p/crypto_ivgen.c.o
libcrypto.a.p/crypto_pbkdf.c.o libcrypto.a.p/crypto_secret_common.c.o
libcrypto.a.p/crypto_secret.c.o libcrypto.a.p/crypto_tlscreds.c.o
libcrypto.a.p/crypto_tlscredsanon.c.o
libcrypto.a.p/crypto_tlscredspsk.c.o
libcrypto.a.p/crypto_tlscredsx509.c.o
libcrypto.a.p/crypto_tlssession.c.o libcrypto.a.p/crypto_rsakey.c.o
libcrypto.a.p/crypto_x509-utils.c.o
libcrypto.a.p/crypto_hash-nettle.c.o
libcrypto.a.p/crypto_hmac-nettle.c.o
libcrypto.a.p/crypto_pbkdf-nettle.c.o
libcrypto.a.p/crypto_secret_keyring.c.o libauthz.a.p/authz_base.c.o
libauthz.a.p/authz_list.c.o libauthz.a.p/authz_listfile.c.o
libauthz.a.p/authz_simple.c.o libqom.a.p/qom_container.c.o
libqom.a.p/qom_object.c.o libqom.a.p/qom_object_interfaces.c.o
libqom.a.p/qom_qom-qobject.c.o libqom.a.p/qom_compat-properties.c.o
libevent-loop-base.a.p/event-loop-base.c.o
ui/libqemuui.a.p/clipboard.c.o ui/libqemuui.a.p/console.c.o
ui/libqemuui.a.p/cursor.c.o ui/libqemuui.a.p/dmabuf.c.o
ui/libqemuui.a.p/display-surface.c.o ui/libqemuui.a.p/input-keymap.c.o
ui/libqemuui.a.p/kbd-state.c.o ui/libqemuui.a.p/keymaps.c.o
ui/libqemuui.a.p/qemu-pixman.c.o ui/libqemuui.a.p/spice-module.c.o
ui/libqemuui.a.p/vgafont.c.o ui/libqemuui.a.p/cp437.c.o
ui/libqemuui.a.p/vt100.c.o tools/qemu-vnc/qemu-vnc.p/qemu-vnc.c.o
tools/qemu-vnc/qemu-vnc.p/display.c.o
tools/qemu-vnc/qemu-vnc.p/input.c.o
tools/qemu-vnc/qemu-vnc.p/audio.c.o
tools/qemu-vnc/qemu-vnc.p/chardev.c.o
tools/qemu-vnc/qemu-vnc.p/clipboard.c.o
tools/qemu-vnc/qemu-vnc.p/console.c.o
tools/qemu-vnc/qemu-vnc.p/dbus.c.o tools/qemu-vnc/qemu-vnc.p/stubs.c.o
tools/qemu-vnc/qemu-vnc.p/utils.c.o
tools/qemu-vnc/qemu-vnc.p/.._.._ui_vnc.c.o
tools/qemu-vnc/qemu-vnc.p/.._.._ui_vnc-enc-zlib.c.o
tools/qemu-vnc/qemu-vnc.p/.._.._ui_vnc-enc-hextile.c.o
tools/qemu-vnc/qemu-vnc.p/.._.._ui_vnc-enc-tight.c.o
tools/qemu-vnc/qemu-vnc.p/.._.._ui_vnc-palette.c.o
tools/qemu-vnc/qemu-vnc.p/.._.._ui_vnc-enc-zrle.c.o
tools/qemu-vnc/qemu-vnc.p/.._.._ui_vnc-auth-vencrypt.c.o
tools/qemu-vnc/qemu-vnc.p/.._.._ui_vnc-ws.c.o
tools/qemu-vnc/qemu-vnc.p/.._.._ui_vnc-jobs.c.o
tools/qemu-vnc/qemu-vnc.p/.._.._ui_vnc-clipboard.c.o
tools/qemu-vnc/qemu-vnc.p/.._.._ui_vnc-auth-sasl.c.o -Wl,--as-needed
-Wl,--no-undefined -pie -fstack-protector-strong -Wl,-z,relro
-Wl,-z,now -Wl,--start-group libqemuutil.a
subprojects/libvhost-user/libvhost-user-glib.a
subprojects/libvhost-user/libvhost-user.a
/usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libjpeg.so
/usr/lib/x86_64-linux-gnu/libpng16.so -lsasl2
/usr/lib/x86_64-linux-gnu/libnettle.so
/usr/lib/x86_64-linux-gnu/libgmp.so
/usr/lib/x86_64-linux-gnu/libhogweed.so
/usr/lib/x86_64-linux-gnu/libgio-2.0.so/usr/lib/x86_64-linux-gnu/libgobject-2.0.so
/usr/lib/x86_64-linux-gnu/libglib-2.0.so
/usr/lib/x86_64-linux-gnu/libpixman-1.so -lnuma
/usr/lib/x86_64-linux-gnu/liburing.so -Wl,--export-dynamic
/usr/lib/x86_64-linux-gnu/libgmodule-2.0.so -pthread -lm
/usr/lib/x86_64-linux-gnu/libepoxy.so -Wl,--end-group
/usr/bin/x86_64-linux-gnu-ld.bfd: libqom.a.p/qom_object.c.o: in
function `type_register_internal':
/build/release-amd64/../../qom/object.c:243:(.text+0x1c2): undefined
reference to `target_mask_selected'
/usr/bin/x86_64-linux-gnu-ld.bfd: libqom.a.p/qom_object.c.o: in
function `target_mask_filter':
/build/release-amd64/../../qom/object.c:120:(.text+0x1df): undefined
reference to `target_mask_selected'
/usr/bin/x86_64-linux-gnu-ld.bfd:
/build/release-amd64/../../qom/object.c:120:(.text+0x37a): undefined
reference to`target_mask_selected'
/usr/bin/x86_64-linux-gnu-ld.bfd:
/build/release-amd64/../../qom/object.c:120:(.text+0x1ebf): undefined
reference to `target_mask_selected'
collect2: error: ld returned 1 exit status
[65/389] Generating block.syms with a custom command (wrapped by meson
to capture output)
[66/389] Generating qemu.syms with a custom command (wrapped by meson
to capture output)
>
> >>
> >>> if have_block
> >>> stub_ss.add(files('bdrv-next-monitor-owned.c'))
> >>> diff --git a/stubs/target-mask-selected.c b/stubs/target-mask-selected.c
> >>> new file mode 100644
> >>> index 0000000000..510a515851
> >>> --- /dev/null
> >>> +++ b/stubs/target-mask-selected.c
> >>> @@ -0,0 +1,13 @@
> >>> +/*
> >>> + * Tools have no selected target.
> >>> + *
> >>> + * SPDX-License-Identifier: GPL-2.0-or-later
> >>> + */
> >>> +
> >>> +#include "qemu/osdep.h"
> >>> +#include "qemu/target-info.h"
> >>> +
> >>> +uint64_t target_mask_selected(void)
> >>> +{
> >>> + return 0;
> >>> +}
> >>> diff --git a/target-info-def.c b/target-info-def.c
> >>> index bcf9cfe1e4..a992019626 100644
> >>> --- a/target-info-def.c
> >>> +++ b/target-info-def.c
> >>> @@ -9,6 +9,9 @@
> >>> #include "qemu/osdep.h"
> >>> #include "qemu/target-info.h"
> >>> #include "qemu/target-info-def.h"
> >>> +#ifdef CONFIG_USER_ONLY
> >>> +#include "qemu/base-arch-defs.h"
> >>> +#endif
> >>> #include "qemu/target-info-init.h"
> >>> #include "hw/core/boards.h"
> >>> #include "cpu.h"
> >>> diff --git a/target-info-qom.c b/target-info-qom.c
> >>> index aeeedb7e81..fb4c9835e5 100644
> >>> --- a/target-info-qom.c
> >>> +++ b/target-info-qom.c
> >>> @@ -9,6 +9,8 @@
> >>> #include "qemu/osdep.h"
> >>> #include "qapi/error.h"
> >>> #include "qom/object.h"
> >>> +#include "qemu/base-arch-defs.h"
> >>> +#include "qemu/target-info.h"
> >>> #include "qemu/target-info-def.h"
> >>> #include "qemu/target-info-init.h"
> >>> #include "qemu/target-info-qom.h"
> >>> @@ -40,6 +42,14 @@ const TargetInfo *target_info(void)
> >>> return target_info_ptr;
> >>> }
> >>>
> >>> +uint64_t target_mask_selected(void)
> >>> +{
> >>> + if (!target_info_ptr) {
> >>> + return QEMU_ARCH_ALL;
> >>> + }
> >>> + return QEMU_ARCH_BIT(target_info_ptr->target_arch);
> >>> +}
> >>> +
> >>> void target_info_qom_set_target(void)
> >>> {
> >>> g_autoptr(GSList) targets = object_class_get_list(TYPE_TARGET_INFO,
> >>> false);
> >>
> >
> >
>
--
此致
礼
罗勇刚
Yours
sincerely,
Yonggang Luo