All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Huth <thuth@redhat.com>
To: qemu-devel@nongnu.org, Paolo Bonzini <pbonzini@redhat.com>
Cc: "Daniel P. Berrangé" <berrange@redhat.com>,
	"Eduardo Habkost" <ehabkost@redhat.com>,
	"Juan Quintela" <quintela@redhat.com>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	"Cameron Esfahani" <dirty@apple.com>,
	"Markus Armbruster" <armbru@redhat.com>,
	"Roman Bolshakov" <r.bolshakov@yadro.com>,
	"Wenchao Wang" <wenchao.wang@intel.com>,
	"Sunil Muthuswamy" <sunilmut@microsoft.com>,
	"Colin Xu" <colin.xu@intel.com>
Subject: [PATCH for-6.1 4/4] configure: Poison all current target-specific #defines
Date: Wed, 14 Apr 2021 13:20:04 +0200	[thread overview]
Message-ID: <20210414112004.943383-5-thuth@redhat.com> (raw)
In-Reply-To: <20210414112004.943383-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.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 Makefile              | 2 +-
 configure             | 5 +++++
 include/exec/poison.h | 2 ++
 3 files changed, 8 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 4f374b4889..a0f0601e7e 100755
--- a/configure
+++ b/configure
@@ -6440,6 +6440,11 @@ if test -n "${deprecated_features}"; then
     echo "  features: ${deprecated_features}"
 fi
 
+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 3250fc1d52..ae2f9d1e70 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-04-14 11:22 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-14 11:20 [PATCH for-6.1 0/4] Poison more CONFIG switches Thomas Huth
2021-04-14 11:20 ` [PATCH for-6.1 1/4] include/sysemu: Poison all accelerator CONFIG switches in common code Thomas Huth
2021-04-14 16:56   ` Philippe Mathieu-Daudé
2021-04-14 11:20 ` [PATCH for-6.1 2/4] migration: Move populate_vfio_info() into a separate file Thomas Huth
2021-04-14 12:22   ` Dr. David Alan Gilbert
2021-04-14 12:33   ` Philippe Mathieu-Daudé
2021-05-03  6:04   ` Thomas Huth
2021-04-14 11:20 ` [PATCH for-6.1 3/4] qapi/qom.json: Do not use CONFIG_VIRTIO_CRYPTO in common code Thomas Huth
2021-04-14 13:55   ` Markus Armbruster
2021-04-15  6:15     ` Thomas Huth
2021-04-15  7:44       ` Markus Armbruster
2021-04-15  8:03         ` Thomas Huth
2021-04-14 11:20 ` Thomas Huth [this message]
2021-04-15  8:34   ` [PATCH for-6.1 4/4] configure: Poison all current target-specific #defines Philippe Mathieu-Daudé
2021-04-15 11:21     ` Thomas Huth

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=20210414112004.943383-5-thuth@redhat.com \
    --to=thuth@redhat.com \
    --cc=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=colin.xu@intel.com \
    --cc=dgilbert@redhat.com \
    --cc=dirty@apple.com \
    --cc=ehabkost@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=r.bolshakov@yadro.com \
    --cc=sunilmut@microsoft.com \
    --cc=wenchao.wang@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 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.