[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 11/26] deprecation: don't enable TCG plugins by default on 32 bit
From: |
Alex Bennée |
Subject: |
[PATCH 11/26] deprecation: don't enable TCG plugins by default on 32 bit hosts |
Date: |
Tue, 10 Sep 2024 15:07:18 +0100 |
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.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
v2
- don't manually set based on CPU type, use __SIZEOF_POINTER__
---
docs/about/deprecated.rst | 11 +++++++++++
configure | 21 ++++++++++++++++++++-
2 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index 88f0f03786..f7c7c33d39 100644
--- a/docs/about/deprecated.rst
+++ b/docs/about/deprecated.rst
@@ -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
--------------------
diff --git a/configure b/configure
index 40186d865e..14581c1b9a 100755
--- a/configure
+++ b/configure
@@ -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
--
2.39.2
- Re: [PATCH 03/26] docs/devel: fix duplicate line, (continued)
- [PATCH 01/26] tests/docker: remove debian-armel-cross, Alex Bennée, 2024/09/10
- [PATCH 06/26] gdbstub: Add support for MTE in system mode, Alex Bennée, 2024/09/10
- [PATCH 02/26] tests/docker: update debian i686 and mipsel images to bookworm, Alex Bennée, 2024/09/10
- [PATCH 08/26] tests/tcg/aarch64: Improve linker script organization, Alex Bennée, 2024/09/10
- [PATCH 07/26] tests/guest-debug: Support passing arguments to the GDB test script, Alex Bennée, 2024/09/10
- [PATCH 05/26] gdbstub: Use specific MMU index when probing MTE addresses, Alex Bennée, 2024/09/10
- [PATCH 09/26] tests/tcg/aarch64: Extend MTE gdbstub tests to system mode, Alex Bennée, 2024/09/10
- [PATCH 11/26] deprecation: don't enable TCG plugins by default on 32 bit hosts,
Alex Bennée <=
- [PATCH 10/26] contrib/plugins/Makefile: Add a 'distclean' target, Alex Bennée, 2024/09/10
- [PATCH 16/26] tests/tcg: add mechanism to run specific tests with plugins, Alex Bennée, 2024/09/10
- [PATCH 13/26] contrib/plugins: control flow plugin, Alex Bennée, 2024/09/10
- [PATCH 15/26] plugins: extend API to get latest memory value accessed, Alex Bennée, 2024/09/10
- [PATCH 14/26] plugins: save value during memory accesses, Alex Bennée, 2024/09/10
- [PATCH 12/26] deprecation: don't enable TCG plugins by default with TCI, Alex Bennée, 2024/09/10
- [PATCH 18/26] tests/plugin/mem: add option to print memory accesses, Alex Bennée, 2024/09/10