From: Philippe Mathieu-Daudé <philmd@redhat.com>
When building on Fedora 34 (gcc version 11.0.0 20210210) we get:
In file included from pc-bios/s390-ccw/main.c:11:
In function ‘memset’,
inlined from ‘boot_setup’ at pc-bios/s390-ccw/main.c:185:5,
inlined from ‘main’ at pc-bios/s390-ccw/main.c:288:5:
pc-bios/s390-ccw/libc.h:28:14: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
28 | p[i] = c;
| ~~~~~^~~
The offending code is:
memset((char *)S390EP, 0, 6);
where S390EP is a const address:
#define S390EP 0x10008
The compiler doesn't now how big that pointed area is, so assume its
length is zero. This has been reported as BZ#99578 to GCC:
"gcc-11 -Warray-bounds or -Wstringop-overread warning when accessing a
pointer from integer literal"
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99578
As this warning does us more harm than good in the BIOS code (where
lot of direct accesses to low memory are done), silence this warning
for all BIOS objects.
Suggested-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20210422145911.2513980-1-philmd@redhat.com>
Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
[thuth: Use the pre-existing cc-option macro instead of adding a new one]
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
pc-bios/s390-ccw/Makefile | 1 +
1 file changed, 1 insertion(+)
diff --git a/pc-bios/s390-ccw/Makefile b/pc-bios/s390-ccw/Makefile
index f0fe84c9eb..83fb1afb73 100644
--- a/pc-bios/s390-ccw/Makefile
+++ b/pc-bios/s390-ccw/Makefile
@@ -30,6 +30,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-option,-Werror $(QEMU_CFLAGS),-Wno-stringop-overflow)
QEMU_CFLAGS += -ffreestanding -fno-delete-null-pointer-checks -fno-common -fPIE
QEMU_CFLAGS += -fwrapv -fno-strict-aliasing -fno-asynchronous-unwind-tables
QEMU_CFLAGS += $(call cc-option, $(QEMU_CFLAGS), -fno-stack-protector)
--
2.27.0
On Sun, 2 May 2021 19:48:35 +0200 Thomas Huth <thuth@redhat.com> wrote: > From: Philippe Mathieu-Daudé <philmd@redhat.com> > > When building on Fedora 34 (gcc version 11.0.0 20210210) we get: > > In file included from pc-bios/s390-ccw/main.c:11: > In function ‘memset’, > inlined from ‘boot_setup’ at pc-bios/s390-ccw/main.c:185:5, > inlined from ‘main’ at pc-bios/s390-ccw/main.c:288:5: > pc-bios/s390-ccw/libc.h:28:14: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] > 28 | p[i] = c; > | ~~~~~^~~ > > The offending code is: > > memset((char *)S390EP, 0, 6); > > where S390EP is a const address: > > #define S390EP 0x10008 > > The compiler doesn't now how big that pointed area is, so assume its s/now/know/ s/assume/it assumes that/ > length is zero. This has been reported as BZ#99578 to GCC: > "gcc-11 -Warray-bounds or -Wstringop-overread warning when accessing a > pointer from integer literal" > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99578 > > As this warning does us more harm than good in the BIOS code (where > lot of direct accesses to low memory are done), silence this warning > for all BIOS objects. > > Suggested-by: Thomas Huth <thuth@redhat.com> > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> > Message-Id: <20210422145911.2513980-1-philmd@redhat.com> > Acked-by: Christian Borntraeger <borntraeger@de.ibm.com> > [thuth: Use the pre-existing cc-option macro instead of adding a new one] > Signed-off-by: Thomas Huth <thuth@redhat.com> > --- > pc-bios/s390-ccw/Makefile | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/pc-bios/s390-ccw/Makefile b/pc-bios/s390-ccw/Makefile > index f0fe84c9eb..83fb1afb73 100644 > --- a/pc-bios/s390-ccw/Makefile > +++ b/pc-bios/s390-ccw/Makefile > @@ -30,6 +30,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-option,-Werror $(QEMU_CFLAGS),-Wno-stringop-overflow) > QEMU_CFLAGS += -ffreestanding -fno-delete-null-pointer-checks -fno-common -fPIE > QEMU_CFLAGS += -fwrapv -fno-strict-aliasing -fno-asynchronous-unwind-tables > QEMU_CFLAGS += $(call cc-option, $(QEMU_CFLAGS), -fno-stack-protector) Reviewed-by: Cornelia Huck <cohuck@redhat.com>
On 5/3/21 11:00 AM, Cornelia Huck wrote: > On Sun, 2 May 2021 19:48:35 +0200 > Thomas Huth <thuth@redhat.com> wrote: > >> From: Philippe Mathieu-Daudé <philmd@redhat.com> >> >> When building on Fedora 34 (gcc version 11.0.0 20210210) we get: >> >> In file included from pc-bios/s390-ccw/main.c:11: >> In function ‘memset’, >> inlined from ‘boot_setup’ at pc-bios/s390-ccw/main.c:185:5, >> inlined from ‘main’ at pc-bios/s390-ccw/main.c:288:5: >> pc-bios/s390-ccw/libc.h:28:14: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] >> 28 | p[i] = c; >> | ~~~~~^~~ >> >> The offending code is: >> >> memset((char *)S390EP, 0, 6); >> >> where S390EP is a const address: >> >> #define S390EP 0x10008 >> >> The compiler doesn't now how big that pointed area is, so assume its > > s/now/know/ > s/assume/it assumes that/ Oops, thanks. Thomas, do you want me to repost this patch fixed? >> length is zero. This has been reported as BZ#99578 to GCC: >> "gcc-11 -Warray-bounds or -Wstringop-overread warning when accessing a >> pointer from integer literal" >> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99578 >> >> As this warning does us more harm than good in the BIOS code (where >> lot of direct accesses to low memory are done), silence this warning >> for all BIOS objects. >> >> Suggested-by: Thomas Huth <thuth@redhat.com> >> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> >> Message-Id: <20210422145911.2513980-1-philmd@redhat.com> >> Acked-by: Christian Borntraeger <borntraeger@de.ibm.com> >> [thuth: Use the pre-existing cc-option macro instead of adding a new one] >> Signed-off-by: Thomas Huth <thuth@redhat.com> >> --- >> pc-bios/s390-ccw/Makefile | 1 + >> 1 file changed, 1 insertion(+)
On 03/05/2021 11.30, Philippe Mathieu-Daudé wrote: > On 5/3/21 11:00 AM, Cornelia Huck wrote: >> On Sun, 2 May 2021 19:48:35 +0200 >> Thomas Huth <thuth@redhat.com> wrote: >> >>> From: Philippe Mathieu-Daudé <philmd@redhat.com> >>> >>> When building on Fedora 34 (gcc version 11.0.0 20210210) we get: >>> >>> In file included from pc-bios/s390-ccw/main.c:11: >>> In function ‘memset’, >>> inlined from ‘boot_setup’ at pc-bios/s390-ccw/main.c:185:5, >>> inlined from ‘main’ at pc-bios/s390-ccw/main.c:288:5: >>> pc-bios/s390-ccw/libc.h:28:14: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] >>> 28 | p[i] = c; >>> | ~~~~~^~~ >>> >>> The offending code is: >>> >>> memset((char *)S390EP, 0, 6); >>> >>> where S390EP is a const address: >>> >>> #define S390EP 0x10008 >>> >>> The compiler doesn't now how big that pointed area is, so assume its >> >> s/now/know/ >> s/assume/it assumes that/ > > Oops, thanks. Thomas, do you want me to repost this patch fixed? I can fix it up in my tree here, no need to resend. Thomas
On 5/3/21 11:31 AM, Thomas Huth wrote: > On 03/05/2021 11.30, Philippe Mathieu-Daudé wrote: >> On 5/3/21 11:00 AM, Cornelia Huck wrote: >>> On Sun, 2 May 2021 19:48:35 +0200 >>> Thomas Huth <thuth@redhat.com> wrote: >>> >>>> From: Philippe Mathieu-Daudé <philmd@redhat.com> >>>> >>>> When building on Fedora 34 (gcc version 11.0.0 20210210) we get: >>>> >>>> In file included from pc-bios/s390-ccw/main.c:11: >>>> In function ‘memset’, >>>> inlined from ‘boot_setup’ at pc-bios/s390-ccw/main.c:185:5, >>>> inlined from ‘main’ at pc-bios/s390-ccw/main.c:288:5: >>>> pc-bios/s390-ccw/libc.h:28:14: warning: writing 1 byte into a >>>> region of size 0 [-Wstringop-overflow=] >>>> 28 | p[i] = c; >>>> | ~~~~~^~~ >>>> >>>> The offending code is: >>>> >>>> memset((char *)S390EP, 0, 6); >>>> >>>> where S390EP is a const address: >>>> >>>> #define S390EP 0x10008 >>>> >>>> The compiler doesn't now how big that pointed area is, so assume its >>> >>> s/now/know/ >>> s/assume/it assumes that/ >> >> Oops, thanks. Thomas, do you want me to repost this patch fixed? > > I can fix it up in my tree here, no need to resend. Great, thank you! Phil.
© 2016 - 2026 Red Hat, Inc.