diff mbox

configure: Enable extra compiler warnings

Message ID 1377063869-16834-1-git-send-email-sw@weilnetz.de
State Superseded
Headers show

Commit Message

Stefan Weil Aug. 21, 2013, 5:44 a.m. UTC
Compiler option -Wextra enables an additional set of compiler warnings.

Some of these warnings were already enabled explicitly in QEMU:
-Wold-style-declaration, -Wtype-limits, -Wignored-qualifiers and
-Wempty-body are now redundant and can be removed.

Others don't work with the current code and must be disabled to
avoid warnings: -Wno-missing-field-initializers, -Wno-override-init,
-Wno-sign-compare and -Wno-unused-parameter.

Signed-off-by: Stefan Weil <sw@weilnetz.de>
---
This is a rather old and long tested patch: I use -Wextra in my
QEMU builds for more than a year now. At least one bug was found
by using this warning level (see commit
b22dd1243f38286263d40496ce5298a8a7d96eea).

My tests include Linux and Windows hosts (gcc), but not BSD based hosts,
so maybe those hosts might need additional code fixes.
clang reports lots of -Wunused-value warnings.

Regards,
Stefan

 configure |   14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

Comments

Stefan Weil Sept. 3, 2013, 6:28 p.m. UTC | #1
Am 21.08.2013 07:44, schrieb Stefan Weil:
> Compiler option -Wextra enables an additional set of compiler warnings.
>
> Some of these warnings were already enabled explicitly in QEMU:
> -Wold-style-declaration, -Wtype-limits, -Wignored-qualifiers and
> -Wempty-body are now redundant and can be removed.
>
> Others don't work with the current code and must be disabled to
> avoid warnings: -Wno-missing-field-initializers, -Wno-override-init,
> -Wno-sign-compare and -Wno-unused-parameter.
>
> Signed-off-by: Stefan Weil <sw@weilnetz.de>
> ---
> This is a rather old and long tested patch: I use -Wextra in my
> QEMU builds for more than a year now. At least one bug was found
> by using this warning level (see commit
> b22dd1243f38286263d40496ce5298a8a7d96eea).
>
> My tests include Linux and Windows hosts (gcc), but not BSD based hosts,
> so maybe those hosts might need additional code fixes.
> clang reports lots of -Wunused-value warnings.
>
> Regards,
> Stefan
>
>  configure |   14 +++++++++-----
>  1 file changed, 9 insertions(+), 5 deletions(-)

Ping? I'd appreciate getting this patch committed.
Is it trivial enough for qemu-trivial?

Stefan

See also http://patchwork.ozlabs.org/patch/268687/
Michael Tokarev Sept. 14, 2013, 12:18 p.m. UTC | #2
03.09.2013 22:28, Stefan Weil wrote:
> Am 21.08.2013 07:44, schrieb Stefan Weil:
>> Compiler option -Wextra enables an additional set of compiler warnings.
>>
>> Some of these warnings were already enabled explicitly in QEMU:
>> -Wold-style-declaration, -Wtype-limits, -Wignored-qualifiers and
>> -Wempty-body are now redundant and can be removed.
>>
>> Others don't work with the current code and must be disabled to
>> avoid warnings: -Wno-missing-field-initializers, -Wno-override-init,
>> -Wno-sign-compare and -Wno-unused-parameter.
>>
>> Signed-off-by: Stefan Weil <sw@weilnetz.de>
>> ---
>> This is a rather old and long tested patch: I use -Wextra in my
>> QEMU builds for more than a year now. At least one bug was found
>> by using this warning level (see commit
>> b22dd1243f38286263d40496ce5298a8a7d96eea).
>>
>> My tests include Linux and Windows hosts (gcc), but not BSD based hosts,
>> so maybe those hosts might need additional code fixes.
>> clang reports lots of -Wunused-value warnings.
[]
> Ping? I'd appreciate getting this patch committed.
> Is it trivial enough for qemu-trivial?
>
> Stefan
>
> See also http://patchwork.ozlabs.org/patch/268687/

Well.  I see at least one hidden flag here which is not covered by the
description:

-gcc_flags="-Wendif-labels $gcc_flags"
+gcc_flags="-fstack-protector-all -Wendif-labels $gcc_flags"

Is it intentional?

As for the rest, I think it may go to -trivial just fine.  The patch
does not apply to current git, but is easy to fix.

I'll fire a FreeBSD compile test with it applied.

Thanks,

/mjt
Stefan Weil Sept. 14, 2013, 3:30 p.m. UTC | #3
Am 14.09.2013 14:18, schrieb Michael Tokarev:
> 03.09.2013 22:28, Stefan Weil wrote:
>> Am 21.08.2013 07:44, schrieb Stefan Weil:
>>> Compiler option -Wextra enables an additional set of compiler warnings.
>>>
>>> Some of these warnings were already enabled explicitly in QEMU:
>>> -Wold-style-declaration, -Wtype-limits, -Wignored-qualifiers and
>>> -Wempty-body are now redundant and can be removed.
>>>
>>> Others don't work with the current code and must be disabled to
>>> avoid warnings: -Wno-missing-field-initializers, -Wno-override-init,
>>> -Wno-sign-compare and -Wno-unused-parameter.
>>>
>>> Signed-off-by: Stefan Weil <sw@weilnetz.de>
>>> ---
>>> This is a rather old and long tested patch: I use -Wextra in my
>>> QEMU builds for more than a year now. At least one bug was found
>>> by using this warning level (see commit
>>> b22dd1243f38286263d40496ce5298a8a7d96eea).
>>>
>>> My tests include Linux and Windows hosts (gcc), but not BSD based
>>> hosts,
>>> so maybe those hosts might need additional code fixes.
>>> clang reports lots of -Wunused-value warnings.
> []
>> Ping? I'd appreciate getting this patch committed.
>> Is it trivial enough for qemu-trivial?
>>
>> Stefan
>>
>> See also http://patchwork.ozlabs.org/patch/268687/
>
> Well.  I see at least one hidden flag here which is not covered by the
> description:
>
> -gcc_flags="-Wendif-labels $gcc_flags"
> +gcc_flags="-fstack-protector-all -Wendif-labels $gcc_flags"
>
> Is it intentional?

No, -fstack-protector-all should not be there. It might be a relict of
a previous patch rebase: I added -Wextra in my local branch a long
time ago, and -fstack-protector-all was obviously moved to another
location in configure during that time.

I can send an updated patch later, or you can just remove it from
my original patch.


>
> As for the rest, I think it may go to -trivial just fine.  The patch
> does not apply to current git, but is easy to fix.
>
> I'll fire a FreeBSD compile test with it applied.
>
> Thanks,
>
> /mjt
Michael Tokarev Sept. 14, 2013, 5:38 p.m. UTC | #4
14.09.2013 19:30, Stefan Weil wrote:
> Am 14.09.2013 14:18, schrieb Michael Tokarev:
[]
>> Well.  I see at least one hidden flag here which is not covered by the
>> description:
>>
>> -gcc_flags="-Wendif-labels $gcc_flags"
>> +gcc_flags="-fstack-protector-all -Wendif-labels $gcc_flags"
>>
>> Is it intentional?
>
> No, -fstack-protector-all should not be there. It might be a relict of
> a previous patch rebase: I added -Wextra in my local branch a long
> time ago, and -fstack-protector-all was obviously moved to another
> location in configure during that time.
>
> I can send an updated patch later, or you can just remove it from
> my original patch.

Please take a look at the resulting patch at
  http://git.corpit.ru/?p=qemu.git;a=shortlog;h=refs/heads/trivial-patches-next
and see if this is the patch you want to be applied.

I verified it compiles on FreeBSD 9.1, but I tried only minimal set
of optional dependencies so things might still break, but I think
we can fix it later.

If it looks okay, I'll send a pull request today.

Thanks,

/mjt
Stefan Weil Sept. 14, 2013, 5:46 p.m. UTC | #5
Am 14.09.2013 19:38, schrieb Michael Tokarev:
> 14.09.2013 19:30, Stefan Weil wrote:
>> Am 14.09.2013 14:18, schrieb Michael Tokarev:
> []
>>> Well.  I see at least one hidden flag here which is not covered by the
>>> description:
>>>
>>> -gcc_flags="-Wendif-labels $gcc_flags"
>>> +gcc_flags="-fstack-protector-all -Wendif-labels $gcc_flags"
>>>
>>> Is it intentional?
>>
>> No, -fstack-protector-all should not be there. It might be a relict of
>> a previous patch rebase: I added -Wextra in my local branch a long
>> time ago, and -fstack-protector-all was obviously moved to another
>> location in configure during that time.
>>
>> I can send an updated patch later, or you can just remove it from
>> my original patch.
>
> Please take a look at the resulting patch at
>  http://git.corpit.ru/?p=qemu.git;a=shortlog;h=refs/heads/trivial-patches-next
>
> and see if this is the patch you want to be applied.
>
> I verified it compiles on FreeBSD 9.1, but I tried only minimal set
> of optional dependencies so things might still break, but I think
> we can fix it later.
>
> If it looks okay, I'll send a pull request today.
>
> Thanks,
>
> /mjt


It looks good, but I'd prefer my v2:
http://patchwork.ozlabs.org/patch/274928/.
It's nearly identical to your version, but sorts some options
alphabetically.

Thanks for your work.

Stefan
diff mbox

Patch

diff --git a/configure b/configure
index 18fa608..252214b 100755
--- a/configure
+++ b/configure
@@ -299,7 +299,7 @@  sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
 
 # default flags for all hosts
 QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
-QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
+QEMU_CFLAGS="-Wall -Wextra -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"
 QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
@@ -1199,11 +1199,15 @@  if test -z "$werror" ; then
     fi
 fi
 
-gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
-gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
-gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
-gcc_flags="-Wendif-labels $gcc_flags"
+gcc_flags="-Wold-style-definition"
+gcc_flags="-Wformat-security -Wformat-y2k -Winit-self $gcc_flags"
+gcc_flags="-Wmissing-include-dirs -Wnested-externs $gcc_flags"
+gcc_flags="-fstack-protector-all -Wendif-labels $gcc_flags"
 gcc_flags="-Wno-initializer-overrides $gcc_flags"
+gcc_flags="-Wno-missing-field-initializers $gcc_flags"
+gcc_flags="-Wno-override-init $gcc_flags"
+gcc_flags="-Wno-sign-compare $gcc_flags"
+gcc_flags="-Wno-unused-parameter $gcc_flags"
 # Note that we do not add -Werror to gcc_flags here, because that would
 # enable it for all configure tests. If a configure test failed due
 # to -Werror this would just silently disable some features,