All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Maydell <peter.maydell@linaro.org>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: QEMU Developers <qemu-devel@nongnu.org>,
	Patch Tracking <patches@linaro.org>,
	Markus Armbruster <armbru@redhat.com>
Subject: Re: [Qemu-devel] [PATCH] configure: Always compile with -fwrapv
Date: Tue, 13 Sep 2016 16:41:46 +0100	[thread overview]
Message-ID: <CAFEAcA_E_eAZHpNLGSn_F7z3dicsta4H1riEwziVKETFX4LYtg@mail.gmail.com> (raw)
In-Reply-To: <3e775214-ded0-d5f8-3e5f-4f82ede22e0d@redhat.com>

On 12 September 2016 at 18:06, Paolo Bonzini <pbonzini@redhat.com> wrote:
>
>
> On 12/09/2016 15:10, Peter Maydell wrote:
>> QEMU's code relies on left shifts of signed integers always
>> being defined behaviour with the obvious 2s-complement
>> semantics. The only way to tell the compiler (and any
>> associated undefined-behaviour sanitizer) that we require a
>> C dialect with these semantics is to use the -fwrapv option.
>> This is a bit of a heavy hammer for the job as it also gives
>> us guaranteed semantics on integer arithmetic overflow which
>> in theory we don't require.
>>
>> In an ideal world this would allow us to drop the warning
>> flag -Wno-shift-negative-value, but we must retain this to
>> avoid spurious warnings on clang versions predating the
>> fix to https://llvm.org/bugs/show_bug.cgi?id=25552.
>>
>> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
>> ---
>> We agreed before 2.7 release that this was the best long term
>> approach to our shift issues, since it's now clear that both
>> clang and gcc do agree that -fwrapv provides the semantics we
>> want.
>>
>>  configure | 6 +++++-
>>  1 file changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/configure b/configure
>> index 331c36f..14efce3 100755
>> --- a/configure
>> +++ b/configure
>> @@ -389,7 +389,11 @@ sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
>>  ARFLAGS="${ARFLAGS-rv}"
>>
>>  # default flags for all hosts
>> -QEMU_CFLAGS="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
>> +# We use -fwrapv to tell the compiler that we require a C dialect where
>> +# left shift of signed integers is well defined and has the expected
>> +# 2s-complement style results. (Both clang and gcc agree that it
>> +# provides these semantics.)
>> +QEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
>>  QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
>>  QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
>>  QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
>>
>
> Acked-by: Paolo Bonzini <pbonzini@redhat.com>

Applied to master, thanks.

-- PMM

      reply	other threads:[~2016-09-13 15:43 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-12 13:10 [Qemu-devel] [PATCH] configure: Always compile with -fwrapv Peter Maydell
2016-09-12 15:04 ` Markus Armbruster
2016-09-12 16:22   ` Peter Maydell
2016-09-12 17:06 ` Paolo Bonzini
2016-09-13 15:41   ` Peter Maydell [this message]

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=CAFEAcA_E_eAZHpNLGSn_F7z3dicsta4H1riEwziVKETFX4LYtg@mail.gmail.com \
    --to=peter.maydell@linaro.org \
    --cc=armbru@redhat.com \
    --cc=patches@linaro.org \
    --cc=pbonzini@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.