Browse Source

meson: Reject 32-bit hosts

32-bit hosts have been deprecated since 10.0.
As the first step, disable any such at configuration time.
Further patches will remove the dead code.

Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
pull/316/head
Richard Henderson 3 months ago
parent
commit
372ec46b9f
  1. 29
      docs/about/deprecated.rst
  2. 6
      docs/about/removed-features.rst
  3. 17
      meson.build

29
docs/about/deprecated.rst

@ -186,28 +186,6 @@ maintain our cross-compilation CI tests of the architecture. As we no longer
have CI coverage support may bitrot away before the deprecation process
completes.
System emulation on 32-bit x86 hosts (since 8.0)
''''''''''''''''''''''''''''''''''''''''''''''''
Support for 32-bit x86 host deployments is increasingly uncommon in mainstream
OS distributions given the widespread availability of 64-bit x86 hardware.
The QEMU project no longer considers 32-bit x86 support for system emulation to
be an effective use of its limited resources, and thus intends to discontinue
it. Since all recent x86 hardware from the past >10 years is capable of the
64-bit x86 extensions, a corresponding 64-bit OS should be used instead.
TCG Plugin support not enabled by default on 32-bit hosts (since 9.2)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
While it is still possible to enable TCG plugin support for 32-bit
hosts there are a number of potential pitfalls when instrumenting
64-bit guests. The plugin APIs typically pass most addresses as
uint64_t but practices like encoding that address in a host pointer
for passing as user-data will lose data. As most software analysis
benefits from having plenty of host memory it seems reasonable to
encourage users to use 64 bit builds of QEMU for analysis work
whatever targets they are instrumenting.
TCG Plugin support not enabled by default with TCI (since 9.2)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
@ -216,13 +194,6 @@ is going to be so much slower it wouldn't make sense for any serious
instrumentation. Due to implementation differences there will also be
anomalies in things like memory instrumentation.
32-bit host operating systems (since 10.0)
''''''''''''''''''''''''''''''''''''''''''
Keeping 32-bit host support alive is a substantial burden for the
QEMU project. Thus QEMU will in future drop the support for all
32-bit host systems.
System emulator CPUs
--------------------

6
docs/about/removed-features.rst

@ -572,6 +572,12 @@ like the ``akita`` or ``terrier``; it has been deprecated in the
kernel since 2001. None of the board types QEMU supports need
``param_struct`` support, so this option has been removed.
32-bit host operating systems (removed in 11.0)
'''''''''''''''''''''''''''''''''''''''''''''''
Keeping 32-bit host support alive was a substantial burden for the
QEMU project. Thus QEMU dropped all support for all 32-bit host systems.
User-mode emulator command line arguments
-----------------------------------------

17
meson.build

@ -332,6 +332,10 @@ endif
# Compiler flags #
##################
if cc.sizeof('void *') < 8
error('QEMU requires a 64-bit CPU host architecture')
endif
foreach lang : all_languages
compiler = meson.get_compiler(lang)
if compiler.get_id() == 'gcc' and compiler.version().version_compare('>=7.4')
@ -3247,9 +3251,6 @@ if host_os == 'windows'
endif
endif
# Detect host pointer size for the target configuration loop.
host_long_bits = cc.sizeof('void *') * 8
# Detect if ConvertStringToBSTR has been defined in _com_util namespace
if host_os == 'windows'
has_convert_string_to_bstr = cxx.links('''
@ -3360,10 +3361,6 @@ foreach target : target_dirs
target_kconfig = []
foreach sym: accelerators
# Disallow 64-bit on 32-bit emulation and virtualization
if host_long_bits < config_target['TARGET_LONG_BITS'].to_int()
continue
endif
if sym == 'CONFIG_TCG' or target in accelerator_targets.get(sym, [])
config_target += { sym: 'y' }
config_all_accel += { sym: 'y' }
@ -5036,12 +5033,6 @@ if host_arch == 'unknown'
message('configure has succeeded and you can continue to build, but')
message('QEMU will use a slow interpreter to emulate the target CPU.')
endif
elif host_long_bits < 64
message()
warning('DEPRECATED HOST CPU')
message()
message('Support for 32-bit CPU host architecture ' + cpu + ' is going')
message('to be dropped in a future QEMU release.')
elif host_arch == 'mips'
message()
warning('DEPRECATED HOST CPU')

Loading…
Cancel
Save