All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Huth <thuth@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>, kvm@vger.kernel.org
Cc: "David Hildenbrand" <david@redhat.com>,
	"Radim Krčmář" <rkrcmar@redhat.com>,
	"Laurent Vivier" <lvivier@redhat.com>,
	"Drew Jones" <drjones@redhat.com>
Subject: Re: [kvm-unit-tests PATCH] Replace -Wextra with a saner list of warning flags
Date: Thu, 29 Jun 2017 19:19:42 +0200	[thread overview]
Message-ID: <c8217793-f52f-99c5-ce44-dad99032433c@redhat.com> (raw)
In-Reply-To: <03cc1365-c175-53c1-3c92-7ff8b9a29190@redhat.com>

On 29.06.2017 19:07, Paolo Bonzini wrote:
> 
> 
> On 29/06/2017 17:40, Thomas Huth wrote:
>> Using -Wextra together with -Werror is troublesome - various versions
>> of GCC produce suspicious or even wrong warnings with -Wextra which
>> then become fatal errors with -Werror. For example, the current state
>> of the kvm-unit-tests does not compile anymore with GCC 4.8.1 for
>> s390x due to an inadequate -Wmissing-field-initializers warning.
>> That's annoying for users who just would like to compile the
>> kvm-unit-tests and cumbersome for the developers who have to work
>> around these problems in the source code. So let's replace -Wextra
>> by a saner lists of warning flags that are normally enabled by -Wextra.
>> Most of them are added to the architecture independent CFLAGS list,
>> so that x86 now benefits from these checks, too. The ones that
>> could not be added there are placed in the architecture specific
>> CFLAGS instead.
>>
>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>> ---
>>  Makefile                | 5 +++--
>>  arm/Makefile.common     | 3 ++-
>>  powerpc/Makefile.common | 3 ++-
>>  s390x/Makefile          | 3 ++-
>>  4 files changed, 9 insertions(+), 5 deletions(-)
>>
>> diff --git a/Makefile b/Makefile
>> index e79cf93..56d2fd7 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -50,8 +50,9 @@ include $(SRCDIR)/$(TEST_DIR)/Makefile
>>  cc-option = $(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null \
>>                > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
>>  
>> -CFLAGS += -g
>> -CFLAGS += $(autodepend-flags) -Wall -Wwrite-strings -Werror
>> +CFLAGS += -g $(autodepend-flags)
>> +CFLAGS += -Wall -Wwrite-strings -Wclobbered -Wempty-body -Wignored-qualifiers
>> +CFLAGS += -Wtype-limits -Wuninitialized -Wunused-but-set-parameter -Werror
>>  frame-pointer-flag=-f$(if $(KEEP_FRAME_POINTER),no-,)omit-frame-pointer
>>  fomit_frame_pointer := $(call cc-option, $(frame-pointer-flag), "")
>>  fnostack_protector := $(call cc-option, -fno-stack-protector, "")
>> diff --git a/arm/Makefile.common b/arm/Makefile.common
>> index 03b497b..2840c2a 100644
>> --- a/arm/Makefile.common
>> +++ b/arm/Makefile.common
>> @@ -24,7 +24,8 @@ phys_base = $(LOADADDR)
>>  
>>  CFLAGS += -std=gnu99
>>  CFLAGS += -ffreestanding
>> -CFLAGS += -Wextra
>> +CFLAGS += -Wmissing-parameter-type -Wold-style-declaration -Woverride-init
>> +CFLAGS += -Wsign-compare
>>  CFLAGS += -O2
>>  CFLAGS += -I $(SRCDIR)/lib -I $(SRCDIR)/lib/libfdt -I lib
>>  
>> diff --git a/powerpc/Makefile.common b/powerpc/Makefile.common
>> index db5ba62..50c4b24 100644
>> --- a/powerpc/Makefile.common
>> +++ b/powerpc/Makefile.common
>> @@ -19,7 +19,8 @@ all: directories $(TEST_DIR)/boot_rom.bin $(tests-all)
>>  
>>  CFLAGS += -std=gnu99
>>  CFLAGS += -ffreestanding
>> -CFLAGS += -Wextra
>> +CFLAGS += -Wmissing-parameter-type -Wold-style-declaration -Woverride-init
>> +CFLAGS += -Wsign-compare
>>  CFLAGS += -O2
>>  CFLAGS += -I $(SRCDIR)/lib -I $(SRCDIR)/lib/libfdt -I lib
>>  CFLAGS += -Wa,-mregnames
>> diff --git a/s390x/Makefile b/s390x/Makefile
>> index 470cbba..3b8f5d9 100644
>> --- a/s390x/Makefile
>> +++ b/s390x/Makefile
>> @@ -7,7 +7,8 @@ test_cases: $(tests)
>>  
>>  CFLAGS += -std=gnu99
>>  CFLAGS += -ffreestanding
>> -CFLAGS += -Wextra
>> +CFLAGS += -Wmissing-parameter-type -Wold-style-declaration -Woverride-init
>> +CFLAGS += -Wsign-compare
>>  CFLAGS += -I $(SRCDIR)/lib
>>  CFLAGS += -O2
>>  CFLAGS += -march=z900
> 
> I am not sure about -Wsign-compare, which can have a lot of false
> positives.  Other opinions?

I'm fine if we drop it - I also had to do a lot of boring casting due to
this option in other projects... sometimes it helps to find bugs, but
often it's rather annoying.

> x86 cannot use "Wmissing-parameter-type -Wold-style-declaration
> -Woverride-init" only because they're not valid in C++.  Maybe we should
> split CFLAGS into COMMON_CCFLAGS and CFLAGS proper, so that CXXFLAGS and
> LDFLAGS can be assigned with
> 
> CXXFLAGS += $(COMMON_CCFLAGS)
> LDFLAGS += $(COMMON_CCFLAGS)
> 
> Then those three could go in CFLAGS, and the others in COMMON_CCFLAGS.

That's of course a good idea. I'll send a v2 ...

 Thomas

  reply	other threads:[~2017-06-29 17:19 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-29 15:40 [kvm-unit-tests PATCH] Replace -Wextra with a saner list of warning flags Thomas Huth
2017-06-29 16:30 ` Thomas Huth
2017-06-29 16:35   ` Andrew Jones
2017-06-29 17:00     ` Paolo Bonzini
2017-06-29 16:56 ` Laurent Vivier
2017-06-29 17:07 ` Paolo Bonzini
2017-06-29 17:19   ` Thomas Huth [this message]
2017-06-30 10:40     ` Paolo Bonzini

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=c8217793-f52f-99c5-ce44-dad99032433c@redhat.com \
    --to=thuth@redhat.com \
    --cc=david@redhat.com \
    --cc=drjones@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=lvivier@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=rkrcmar@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.