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: Peter Maydell
Subject: Re: s390-ccw: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
Date: Thu, 22 Apr 2021 11:30:55 +0100

On Thu, 22 Apr 2021 at 11:18, Daniel P. Berrangé <berrange@redhat.com> wrote:
>
> On Thu, Apr 22, 2021 at 06:47:30AM +0200, Thomas Huth wrote:
> > On 22/04/2021 06.18, Philippe Mathieu-Daudé wrote:
> > > Hi Thomas, Daniel, Stefano,
> > >
> > > Regarding the following warning (GCC 11 on Fedora 34):
> > >
> > > 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;
> > >
> > >        |         ~~~~~^~~
> > >
> > > Daniel were right on IRC:
> > >
> > > danpb: it is from a call  memset((char *)S390EP, 0, 6)     where  S390EP
> > > is just a constant address 0x10008
> > > danpb: the compiler doesn't now how big that is, so it seems to assume
> > > it is zero length
> > >
> > > This is a known GCC issue:
> > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99578
> > > "gcc-11 -Warray-bounds or -Wstringop-overread warning when accessing a
> > > pointer from integer literal"
> >
> >  Hi Philippe,
> >
> > thanks for following up with the gcc bugzilla!
> >
> > ... so the problem is that GCC thinks we're in fact dereferencing a NULL
> > pointer at offset 0x10008 here? Wow, that's ... crazy.
> >
> > Not sure what to do now - wait for the bug to get resolved? Compile the
> > s390-ccw bios with -Wno-stringop-overread ? Add "volatiles" here and there
> > to hope that these silence the compiler warnings? ... I tend to wait for the
> > bug ticket to see whether the GCC folks change the behavior of the compiler
> > again, but I'm open for other suggestions.
>
> Assuming it is just this one place in the code ,then we should just
> use "pragma" to temporarily disable/re-enable that single warning flag
> either side of the problem.

The gcc bug report suggests that use of 'volatile' also sidesteps
the warning. Is that a sensible approach here ?

thanks
-- PMM



reply via email to

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