All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Huth <thuth@redhat.com>
To: qemu-devel@nongnu.org, Peter Maydell <peter.maydell@linaro.org>
Cc: "Philippe Mathieu-Daudé" <philmd@redhat.com>,
	"Alex Bennée" <alex.bennee@linaro.org>
Subject: [PULL 17/20] configure: Poison all current target-specific #defines
Date: Fri, 14 May 2021 14:15:15 +0200	[thread overview]
Message-ID: <20210514121518.832729-18-thuth@redhat.com> (raw)
In-Reply-To: <20210514121518.832729-1-thuth@redhat.com>

We are generating a lot of target-specific defines in the *-config-devices.h
and *-config-target.h files. Using them in common code is wrong and leads
to very subtle bugs since a "#ifdef CONFIG_SOMETHING" is not working there
as expected. To avoid these issues, we are already poisoning many of the
macros in include/exec/poison.h - but it's cumbersome to maintain this
list manually. Thus let's generate an additional list of poisoned macros
automatically from the current config switches - this should give us a
much better test coverage via the different CI configurations.

Note that CONFIG_TCG (which is also defined in config-host.h) and
CONFIG_USER_ONLY are special, so we have to filter these out.

Message-Id: <20210414112004.943383-5-thuth@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 Makefile              | 2 +-
 configure             | 7 +++++++
 include/exec/poison.h | 2 ++
 3 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index bcbbec71a1..4cab10a2a4 100644
--- a/Makefile
+++ b/Makefile
@@ -213,7 +213,7 @@ qemu-%.tar.bz2:
 
 distclean: clean
 	-$(quiet-@)test -f build.ninja && $(NINJA) $(NINJAFLAGS) -t clean -g || :
-	rm -f config-host.mak config-host.h*
+	rm -f config-host.mak config-host.h* config-poison.h
 	rm -f tests/tcg/config-*.mak
 	rm -f config-all-disas.mak config.status
 	rm -f roms/seabios/config.mak roms/vgabios/config.mak
diff --git a/configure b/configure
index f05ca143b3..0e4233fd8a 100755
--- a/configure
+++ b/configure
@@ -6473,6 +6473,13 @@ if test -n "${deprecated_features}"; then
     echo "  features: ${deprecated_features}"
 fi
 
+# Create list of config switches that should be poisoned in common code...
+# but filter out CONFIG_TCG and CONFIG_USER_ONLY which are special.
+sed -n -e '/CONFIG_TCG/d' -e '/CONFIG_USER_ONLY/d' \
+    -e '/^#define / { s///; s/ .*//; s/^/#pragma GCC poison /p; }' \
+    *-config-devices.h *-config-target.h | \
+    sort -u > config-poison.h
+
 # Save the configure command line for later reuse.
 cat <<EOD >config.status
 #!/bin/sh
diff --git a/include/exec/poison.h b/include/exec/poison.h
index a527def5f0..7ad4ad18e8 100644
--- a/include/exec/poison.h
+++ b/include/exec/poison.h
@@ -4,6 +4,8 @@
 #ifndef HW_POISON_H
 #define HW_POISON_H
 
+#include "config-poison.h"
+
 #pragma GCC poison TARGET_I386
 #pragma GCC poison TARGET_X86_64
 #pragma GCC poison TARGET_AARCH64
-- 
2.27.0



  parent reply	other threads:[~2021-05-14 12:26 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-14 12:14 [PULL 00/20] CI, qtest, and misc patches Thomas Huth
2021-05-14 12:14 ` [PULL 01/20] tests/docker/dockerfiles: Add ccache to containers where it was missing Thomas Huth
2021-05-14 12:15 ` [PULL 02/20] gitlab-ci: Replace YAML anchors by extends (container_job) Thomas Huth
2021-05-14 12:15 ` [PULL 03/20] gitlab-ci: Replace YAML anchors by extends (native_build_job) Thomas Huth
2021-05-14 12:15 ` [PULL 04/20] gitlab-ci: Replace YAML anchors by extends (native_test_job) Thomas Huth
2021-05-14 12:15 ` [PULL 05/20] libqos/qgraph: fix "UNAVAILBLE" typo Thomas Huth
2021-05-14 12:15 ` [PULL 06/20] docs/devel/qgraph: add troubleshooting information Thomas Huth
2021-05-14 12:15 ` [PULL 07/20] libqtest: refuse QTEST_QEMU_BINARY=qemu-kvm Thomas Huth
2021-05-14 12:15 ` [PULL 08/20] util/compatfd.c: Replaced a malloc call with g_malloc Thomas Huth
2021-05-14 12:15 ` [PULL 09/20] tests/qtest/ahci-test.c: Calculate iso_size with 64-bit arithmetic Thomas Huth
2021-05-14 12:15 ` [PULL 10/20] tests/qtest/npcm7xx_pwm-test.c: Avoid g_assert_true() for non-test assertions Thomas Huth
2021-05-14 12:15 ` [PULL 11/20] tests/migration-test: Fix "true" vs true Thomas Huth
2021-05-14 12:15 ` [PULL 12/20] tests/qtest/tpm-util.c: Free memory with correct free function Thomas Huth
2021-05-14 12:15 ` [PULL 13/20] tests/qtest/rtc-test: Remove pointless NULL check Thomas Huth
2021-05-14 12:15 ` [PULL 14/20] tests: Avoid side effects inside g_assert() arguments Thomas Huth
2021-05-14 12:15 ` [PULL 15/20] include/sysemu: Poison all accelerator CONFIG switches in common code Thomas Huth
2021-05-14 12:15 ` [PULL 16/20] migration: Move populate_vfio_info() into a separate file Thomas Huth
2021-05-14 12:15 ` Thomas Huth [this message]
2021-05-16 20:58   ` [PULL 17/20] configure: Poison all current target-specific #defines Philippe Mathieu-Daudé
2021-05-19 10:43     ` Thomas Huth
2021-05-14 12:15 ` [PULL 18/20] tests/qtest/migration-test: Use g_autofree to avoid leaks on error paths Thomas Huth
2021-05-14 12:15 ` [PULL 19/20] pc-bios/s390-ccw: Fix inline assembly for older versions of Clang Thomas Huth
2021-05-14 12:15 ` [PULL 20/20] cirrus.yml: Fix the MSYS2 task Thomas Huth
2021-05-16 16:19 ` [PULL 00/20] CI, qtest, and misc patches Peter Maydell

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=20210514121518.832729-18-thuth@redhat.com \
    --to=thuth@redhat.com \
    --cc=alex.bennee@linaro.org \
    --cc=peter.maydell@linaro.org \
    --cc=philmd@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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.