From: Thomas Huth <thuth@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>, qemu-devel@nongnu.org
Cc: "Pierrick Bouvier" <pierrick.bouvier@linaro.org>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Zhao Liu" <zhao1.liu@intel.com>,
"Thomas Huth" <thuth@redhat.com>
Subject: [PATCH 04/10] cpu: Add a way to detect 32-bit mode from argv0
Date: Thu, 2 Apr 2026 11:51:26 +0200 [thread overview]
Message-ID: <20260402095132.29245-5-thuth@redhat.com> (raw)
In-Reply-To: <20260402095132.29245-1-thuth@redhat.com>
From: Thomas Huth <thuth@redhat.com>
In the future, we might want to avoid compiling certain targets separately
for 32-bit mode (i.e. -i386, -arm and -ppc) where the 64-bit variant is a
superset of the 32-bit variant. But it would be good to provide a way to
mimic the 32-bit behavior via the program name in case the users need this
compatibility for some scenarios. Thus add a function that checks
for the old 32-bit program names and sets a flag accordingly.
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
include/qemu/target-info.h | 7 +++++++
system/vl.c | 1 +
target-info.c | 20 ++++++++++++++++++--
3 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/include/qemu/target-info.h b/include/qemu/target-info.h
index 0713ab4bb16..aa9b2e9b0cf 100644
--- a/include/qemu/target-info.h
+++ b/include/qemu/target-info.h
@@ -9,6 +9,13 @@
#ifndef QEMU_TARGET_INFO_H
#define QEMU_TARGET_INFO_H
+/**
+ * target_info_adjust:
+ *
+ * Returns: Adjust the target according to the binary name of the executable.
+ */
+void target_info_adjust(const char *argv0);
+
/**
* target_name:
*
diff --git a/system/vl.c b/system/vl.c
index 246623b3196..45c9f5d5c7a 100644
--- a/system/vl.c
+++ b/system/vl.c
@@ -2884,6 +2884,7 @@ void qemu_init(int argc, char **argv)
error_init(argv[0]);
qemu_init_exec_dir(argv[0]);
+ target_info_adjust(argv[0]);
os_setup_limits();
diff --git a/target-info.c b/target-info.c
index dea73b5fbca..b18fd4e0060 100644
--- a/target-info.c
+++ b/target-info.c
@@ -12,6 +12,21 @@
#include "qemu/target-info-impl.h"
#include "qapi/error.h"
+static bool force_32bit;
+
+void target_info_adjust(const char *argv0)
+{
+ switch (target_arch()) {
+ case SYS_EMU_TARGET_X86_64:
+ if (g_str_has_suffix(argv0, "-i386")) {
+ force_32bit = true;
+ }
+ break;
+ default:
+ break;
+ }
+}
+
const char *target_name(void)
{
return target_info()->target_name;
@@ -107,10 +122,11 @@ bool target_base_x86(void)
bool target_i386(void)
{
- return target_arch() == SYS_EMU_TARGET_I386;
+ return target_arch() == SYS_EMU_TARGET_I386 ||
+ (target_arch() == SYS_EMU_TARGET_X86_64 && force_32bit);
}
bool target_x86_64(void)
{
- return target_arch() == SYS_EMU_TARGET_X86_64;
+ return target_arch() == SYS_EMU_TARGET_X86_64 && !force_32bit;
}
--
2.53.0
next prev parent reply other threads:[~2026-04-02 9:53 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-02 9:51 [PATCH for-11.1 00/10] Deprecate the qemu-system-i386 binary Thomas Huth
2026-04-02 9:51 ` [PATCH 01/10] target/i386/tcg/sysemu: Move target specific SMM code to separate functions Thomas Huth
2026-04-02 9:51 ` [PATCH 02/10] target/i386/tcg/sysemu: Allow 32-bit SMM code to be used in the 64-bit binary Thomas Huth
2026-04-02 9:51 ` [PATCH 03/10] target-info: Add functions for querying whether the target is i386 or x86_64 Thomas Huth
2026-04-02 9:51 ` Thomas Huth [this message]
2026-04-02 9:51 ` [PATCH 05/10] target/i386/cpu: Allow to limit the 64-bit binary to 32-bit mode only Thomas Huth
2026-04-02 9:51 ` [PATCH 06/10] target/i386: Select a 32-bit/64-bit default CPU during runtime Thomas Huth
2026-04-02 9:51 ` [PATCH 07/10] target/i386: Adjust the suffix of the CPU devices to 32-bit/64-bit mode Thomas Huth
2026-04-02 9:51 ` [PATCH 08/10] hw/i386/isapc: Adjust the check for valid CPUs in the isapc machine Thomas Huth
2026-04-02 9:51 ` [PATCH 09/10] target/i386: Support migrating from i386 to x86_64 target Thomas Huth
2026-04-02 9:51 ` [PATCH 10/10] docs/about/deprecated: Deprecate the qemu-system-i386 binary Thomas Huth
2026-04-02 10:06 ` Daniel P. Berrangé
2026-04-02 10:11 ` Thomas Huth
2026-04-02 10:41 ` Daniel P. Berrangé
2026-04-02 10:44 ` Daniel P. Berrangé
2026-04-02 11:20 ` [PATCH for-11.1 00/10] " Peter Maydell
2026-04-02 13:02 ` Thomas Huth
2026-04-02 16:37 ` Daniel P. Berrangé
2026-04-02 16:44 ` Thomas Huth
2026-04-06 4:47 ` Pierrick Bouvier
2026-04-08 7:20 ` Thomas Huth
2026-04-08 15:42 ` 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=20260402095132.29245-5-thuth@redhat.com \
--to=thuth@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=pierrick.bouvier@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=zhao1.liu@intel.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.