qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: s390-ccw: warning: writing 1 byte into a region of size 0 [-Wstringo


From: Thomas Huth
Subject: Re: s390-ccw: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
Date: Thu, 22 Apr 2021 18:07:17 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.9.1

On 22/04/2021 17.52, Stefano Garzarella wrote:
On Thu, Apr 22, 2021 at 05:38:26PM +0200, Thomas Huth wrote:
On 22/04/2021 16.31, Philippe Mathieu-Daudé wrote:
On 4/22/21 2:41 PM, Christian Borntraeger wrote:
On 22.04.21 13:47, Thomas Huth wrote:
On 22/04/2021 13.24, Philippe Mathieu-Daudé wrote:
On 4/22/21 12:30 PM, Peter Maydell wrote:
On Thu, 22 Apr 2021 at 11:18, Daniel P. Berrangé
<berrange@redhat.com> wrote:

This silents the warning however:

-- >8 --
diff --git a/pc-bios/s390-ccw/libc.h b/pc-bios/s390-ccw/libc.h
index bcdc45732d..2dea399904 100644
--- a/pc-bios/s390-ccw/libc.h
+++ b/pc-bios/s390-ccw/libc.h
@@ -19,6 +19,8 @@ typedef unsigned short     uint16_t;
  typedef unsigned int       uint32_t;
  typedef unsigned long long uint64_t;

+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wstringop-overflow"
  static inline void *memset(void *s, int c, size_t n)
  {
      size_t i;
@@ -30,6 +32,7 @@ static inline void *memset(void *s, int c, size_t n)

      return s;
  }
+#pragma GCC diagnostic pop

Honestly, that compiler "bug" sounds like it could trigger at any
other spot in the bios code, too, since we are doing lots of direct
accesses to low memory there. I think it's likely best if we shut it
off with -Wno-stringop-overflow in the pc-bios/s390-ccw/Makefile ...
could you please try to add it there?


We are good with:

-- >8 --
diff --git a/pc-bios/s390-ccw/Makefile b/pc-bios/s390-ccw/Makefile
index 29fd9019b8..dcec09b6f9 100644
--- a/pc-bios/s390-ccw/Makefile
+++ b/pc-bios/s390-ccw/Makefile
@@ -8,6 +8,9 @@ CFLAGS = -O2 -g
 quiet-command = $(if $(V),$1,$(if $(2),@printf "  %-7s %s\n" $2 $3 &&
$1, @$1))
 cc-option = $(if $(shell $(CC) $1 -S -o /dev/null -xc /dev/null >
/dev/null \
              2>&1 && echo OK), $1, $2)
+cc-c-option = $(if $(shell $(CC) $1 $2 -c -o /dev/null -xc /dev/null \
+                >/dev/null 2>&1 && echo OK), $2, $3)

 VPATH_SUFFIXES = %.c %.h %.S %.m %.mak %.sh %.rc Kconfig% %.json.in
 set-vpath = $(if $1,$(foreach PATTERN,$(VPATH_SUFFIXES),$(eval vpath
$(PATTERN) $1)))
@@ -30,6 +33,7 @@ OBJECTS = start.o main.o bootmap.o jump2ipl.o sclp.o
menu.o \
          virtio.o virtio-scsi.o virtio-blkdev.o libc.o cio.o dasd-ipl.o

 QEMU_CFLAGS := -Wall $(filter -W%, $(QEMU_CFLAGS))
+QEMU_CFLAGS += $(call cc-c-option, $(QEMU_CFLAGS), -Wno-stringop-overflow)
 QEMU_CFLAGS += -ffreestanding -fno-delete-null-pointer-checks

I think you don't need the "cc-c-option" magic here. Just add the -Wno-stringop-overflow. All supported versions of GCC and Clang simply silently ignore unknown -Wno-something options (try e.g. "gcc -Wno-yadayadayada" on the command line).

Clang seems not to like it. It's always a mess to do anything for gcc and clang :-(

Maybe we can set also `-Wno-unknown-warning-option`.

$ clang -Wno-stringop-overflow -Werror main.c
error: unknown warning option '-Wno-stringop-overflow'; did you mean '-Wno-shift-overflow'? [-Werror,-Wunknown-warning-option]

D'oh, I was pretty sure that Clang behaves the same with regards to -Wno-something, but seems I was wrong, sorry.

So I think we should simply keep this v1 of Philippe's patch.

I'll queue it to my s390-ccw branch.

 Thomas




reply via email to

[Prev in Thread] Current Thread [Next in Thread]