Message ID | 20210502174836.838816-4-thuth@redhat.com |
---|---|
State | New |
Headers | show |
Series | pc-bios/s390-ccw: Allow building with Clang, too | expand |
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.
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)