deprecation: don't enable TCG plugins by default on 32 bit hosts
The existing plugins already liberally use host pointer stuffing for passing user data which will fail when doing 64 bit guests on 32 bit hosts. We should discourage this by officially deprecating support and adding another nail to the 32 bit host coffin. Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20240916085400.1046925-2-alex.bennee@linaro.org>
This commit is contained in:
parent
14556211bc
commit
cf2a78cbbb
21
configure
vendored
21
configure
vendored
@ -516,6 +516,25 @@ case "$cpu" in
|
||||
;;
|
||||
esac
|
||||
|
||||
# Now we have our CPU_CFLAGS we can check if we are targeting a 32 or
|
||||
# 64 bit host.
|
||||
|
||||
check_64bit_host() {
|
||||
cat > $TMPC <<EOF
|
||||
#if __SIZEOF_POINTER__ != 8
|
||||
#error not 64 bit system
|
||||
#endif
|
||||
int main(void) { return 0; }
|
||||
EOF
|
||||
compile_object "$1"
|
||||
}
|
||||
|
||||
if check_64bit_host "$CPU_CFLAGS"; then
|
||||
host_bits=64
|
||||
else
|
||||
host_bits=32
|
||||
fi
|
||||
|
||||
if test -n "$host_arch" && {
|
||||
! test -d "$source_path/linux-user/include/host/$host_arch" ||
|
||||
! test -d "$source_path/common-user/host/$host_arch"; }; then
|
||||
@ -1028,7 +1047,7 @@ if test "$static" = "yes" ; then
|
||||
fi
|
||||
plugins="no"
|
||||
fi
|
||||
if test "$plugins" != "no"; then
|
||||
if test "$plugins" != "no" && test $host_bits -eq 64; then
|
||||
plugins=yes
|
||||
subdirs="$subdirs contrib/plugins"
|
||||
fi
|
||||
|
@ -184,6 +184,17 @@ 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.
|
||||
|
||||
System emulator CPUs
|
||||
--------------------
|
||||
|
Loading…
Reference in New Issue
Block a user