From: "Alex Bennée" <alex.bennee@linaro.org>
To: qemu-devel@nongnu.org
Cc: qemu-s390x@nongnu.org, "Thomas Huth" <thuth@redhat.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
qemu-ppc@nongnu.org, "Ilya Leoshkevich" <iii@linux.ibm.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
"Alexandre Iooss" <erdnaxe@crans.org>,
"Eduardo Habkost" <eduardo@habkost.net>,
"Daniel Henrique Barboza" <danielhb413@gmail.com>,
"Yanan Wang" <wangyanan55@huawei.com>,
"Nicholas Piggin" <npiggin@gmail.com>,
"David Hildenbrand" <david@redhat.com>,
devel@lists.libvirt.org,
"Mahmoud Mandour" <ma.mandourr@gmail.com>,
"Zhao Liu" <zhao1.liu@intel.com>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Pierrick Bouvier" <pierrick.bouvier@linaro.org>
Subject: [PATCH v2 01/18] deprecation: don't enable TCG plugins by default on 32 bit hosts
Date: Mon, 16 Sep 2024 09:53:43 +0100 [thread overview]
Message-ID: <20240916085400.1046925-2-alex.bennee@linaro.org> (raw)
In-Reply-To: <20240916085400.1046925-1-alex.bennee@linaro.org>
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.
Message-Id: <20240910140733.4007719-12-alex.bennee@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
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 7f6eb6b331..f376fa24b3 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.5
next prev parent reply other threads:[~2024-09-16 8:57 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-16 8:53 [PATCH v2 00/18] tcg plugins pre-PR (deprecations, mem apis, contrib plugins) Alex Bennée
2024-09-16 8:53 ` Alex Bennée [this message]
2024-09-16 8:53 ` [PATCH v2 02/18] deprecation: don't enable TCG plugins by default with TCI Alex Bennée
2024-09-16 8:53 ` [PATCH v2 03/18] contrib/plugins: control flow plugin Alex Bennée
2024-09-16 8:53 ` [PATCH v2 04/18] plugins: save value during memory accesses Alex Bennée
2024-09-16 8:53 ` [PATCH v2 05/18] plugins: extend API to get latest memory value accessed Alex Bennée
2024-09-16 8:53 ` [PATCH v2 06/18] tests/tcg: add mechanism to run specific tests with plugins Alex Bennée
2024-09-16 8:53 ` [PATCH v2 07/18] tests/tcg: allow to check output of plugins Alex Bennée
2024-09-16 8:53 ` [PATCH v2 08/18] tests/tcg/plugins/mem: add option to print memory accesses Alex Bennée
2024-09-16 8:53 ` [PATCH v2 09/18] tests/tcg/multiarch: add test for plugin memory access Alex Bennée
2024-09-16 8:53 ` [PATCH v2 10/18] tests/tcg: clean up output of memory system test Alex Bennée
2024-09-16 8:53 ` [PATCH v2 11/18] tests/tcg: only read/write 64 bit words on 64 bit systems Alex Bennée
2024-09-16 8:53 ` [PATCH v2 12/18] tests/tcg: ensure s390x-softmmu output redirected Alex Bennée
2024-09-16 10:31 ` Ilya Leoshkevich
2024-09-17 7:45 ` Thomas Huth
2024-09-16 8:53 ` [PATCH v2 13/18] tests/tcg: add a system test to check memory instrumentation Alex Bennée
2024-09-18 18:52 ` Pierrick Bouvier
2024-09-16 8:53 ` [PATCH v2 14/18] util/timer: avoid deadlock when shutting down Alex Bennée
2024-09-18 18:51 ` Pierrick Bouvier
2024-09-30 16:16 ` Michael Tokarev
2024-09-30 16:52 ` Alex Bennée
2024-09-16 8:53 ` [PATCH v2 15/18] contrib/plugins: Add a plugin to generate basic block vectors Alex Bennée
2024-09-16 8:53 ` [PATCH v2 16/18] plugins: add plugin API to read guest memory Alex Bennée
2024-09-16 8:53 ` [PATCH v2 17/18] plugins: add option to dump write argument to syscall plugin Alex Bennée
2024-09-16 8:54 ` [PATCH v2 18/18] contrib/plugins: avoid hanging program Alex Bennée
2024-09-18 18:51 ` 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=20240916085400.1046925-2-alex.bennee@linaro.org \
--to=alex.bennee@linaro.org \
--cc=danielhb413@gmail.com \
--cc=david@redhat.com \
--cc=devel@lists.libvirt.org \
--cc=eduardo@habkost.net \
--cc=erdnaxe@crans.org \
--cc=iii@linux.ibm.com \
--cc=ma.mandourr@gmail.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=npiggin@gmail.com \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=pierrick.bouvier@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=thuth@redhat.com \
--cc=wangyanan55@huawei.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).