From: Akihiko Odaki <akihiko.odaki@daynix.com>
To: "Paolo Bonzini" <pbonzini@redhat.com>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Thomas Huth" <thuth@redhat.com>
Cc: qemu-devel@nongnu.org, Akihiko Odaki <akihiko.odaki@daynix.com>
Subject: [PATCH] configure: Disable -Werror by default if sanitizers are enabled
Date: Wed, 27 Mar 2024 17:35:30 +0900 [thread overview]
Message-ID: <20240327-werror-v1-1-5d2ccce9a17e@daynix.com> (raw)
With GCC 13.2.1 I got the following warning when sanitizers are enabled:
../hw/net/rtl8139.c: In function 'rtl8139_io_writeb':
../hw/net/rtl8139.c:2273:17: error: writing 8 bytes into a region of size 0 [-Werror=stringop-overflow=]
2273 | memcpy(data_to_checksum, saved_ip_header + 12, 8);
The bug is reported upstream and you can find details at:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114494
The GCC documentation states it is not recommended to combine -Werror
and sanitizers so disable -Werror by default if sanitizers are enabled.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
---
configure | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/configure b/configure
index 3cd736b139f3..3407f9971db1 100755
--- a/configure
+++ b/configure
@@ -262,6 +262,7 @@ unset target_list_exclude
# The following Meson options are handled manually (still they
# are included in the automatically generated help message)
# because they automatically enable/disable other options
+sanitizers=no
tcg="auto"
cfi="false"
@@ -713,6 +714,10 @@ for opt do
meson_option_add -Doptimization=0
default_cflags='-O0 -g'
;;
+ --disable-sanitizers) sanitizers=no
+ ;;
+ --enable-sanitizers) sanitizers=yes
+ ;;
--disable-tcg) tcg="disabled"
;;
--enable-tcg) tcg="enabled"
@@ -1706,9 +1711,15 @@ if test "$skip_meson" = no; then
echo "cpp_link_args = [$(meson_quote $CXXFLAGS $LDFLAGS $EXTRA_CXXFLAGS $EXTRA_LDFLAGS)]" >> $cross
# Only enable by default for git builds and on select OSes
+ # Also don't enable if sanitizers are enabled. The GCC documentation says:
+ # > Note that sanitizers tend to increase the rate of false positive warnings,
+ # > most notably those around -Wmaybe-uninitialized. We recommend against
+ # > combining -Werror and [the use of] sanitizers.
+ # https://gcc.gnu.org/onlinedocs/gcc-13.2.0/gcc/Instrumentation-Options.html
echo "# environment defaults, can still be overridden on " >> $cross
echo "# the command line" >> $cross
if test -e "$source_path/.git" && \
+ test "$sanitizers" == no && \
{ test "$host_os" = linux || test "$host_os" = "windows"; }; then
echo 'werror = true' >> $cross
fi
@@ -1789,6 +1800,7 @@ if test "$skip_meson" = no; then
test -n "${LIB_FUZZING_ENGINE+xxx}" && meson_option_add "-Dfuzzing_engine=$LIB_FUZZING_ENGINE"
test "$plugins" = yes && meson_option_add "-Dplugins=true"
test "$tcg" != enabled && meson_option_add "-Dtcg=$tcg"
+ test "$sanitizers" = yes && meson_option_add -Dsanitizers=true
run_meson() {
NINJA=$ninja $meson setup "$@" "$PWD" "$source_path"
}
---
base-commit: ba49d760eb04630e7b15f423ebecf6c871b8f77b
change-id: 20240327-werror-5d2e974c3d7d
Best regards,
--
Akihiko Odaki <akihiko.odaki@daynix.com>
reply other threads:[~2024-03-27 8:36 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=20240327-werror-v1-1-5d2ccce9a17e@daynix.com \
--to=akihiko.odaki@daynix.com \
--cc=alex.bennee@linaro.org \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=thuth@redhat.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.