Re: [PATCH] include/builddefs.in: ignore unused-result warning

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



On Wed, Jan 15, 2025 at 01:45:47PM -0800, Darrick J. Wong wrote:
> On Wed, Jan 15, 2025 at 11:33:27PM +0800, Zorro Lang wrote:
> > On Mon, Jan 06, 2025 at 05:59:06PM +0800, Shiyang Ruan wrote:
> > > When build xfstests, a lot of "unused result" warning are reported:
> > > 
> > >     [CC] write_log.lo
> > > write_log.c: In function 'wlog_record_write':
> > > write_log.c:205:13: warning: ignoring return value of 'write' declared with attribute 'warn_unused_result' [-Wunused-result]
> > >   205 |             write(wfile->w_afd, wbuf, reclen);
> > >       |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > > write_log.c:209:13: warning: ignoring return value of 'write' declared with attribute 'warn_unused_result' [-Wunused-result]
> > >   209 |             write(wfile->w_rfd, wbuf, reclen);
> > >       |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > >     [CC] random.lo
> > 
> > Hi,
> > 
> > I never hit this build warning:
> > 
> > # make
> > ...
> > Building lib
> >     [LTDEP]
> >     [CC] write_log.lo
> >     [LD]
> > Building ltp
> >     [CC]    doio
> >     [CC]    fsstress
> > ...
> > 
> > Besides that ...
> > 
> > > 
> > > Mostly are calused by not using the return value of read()/write()/...
> > > Ignore this warning by adding `-Wno-unused-result` to CCFLAGS.  This
> > > won't cause other problem but make the log clean.
> > > 
> > > Signed-off-by: Shiyang Ruan <ruansy.fnst@xxxxxxxxxxx>
> > > ---
> > >  include/builddefs.in | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/include/builddefs.in b/include/builddefs.in
> > > index 7274cde8d..edf87ff00 100644
> > > --- a/include/builddefs.in
> > > +++ b/include/builddefs.in
> > > @@ -75,7 +75,7 @@ HAVE_RLIMIT_NOFILE = @have_rlimit_nofile@
> > >  NEED_INTERNAL_XFS_IOC_EXCHANGE_RANGE = @need_internal_xfs_ioc_exchange_range@
> > >  HAVE_FICLONE = @have_ficlone@
> > >  
> > > -GCCFLAGS = -funsigned-char -fno-strict-aliasing -Wall
> > > +GCCFLAGS = -funsigned-char -fno-strict-aliasing -Wall -Wno-unused-result
> > 
> > I'm not an expert of gcc. From the manual of gcc, it says:
> > 
> >        -Wno-unused-result
> >            Do not warn if a caller of a function marked with attribute "warn_unused_result" does not use its return value. The default is -Wunused-result.
> > 
> > Looks like the "-Wno-unused-result" works for "a function marked with
> > attribute warn_unused_result", e.g.
> > 
> >     int __attribute__((warn_unused_result)) foo(void)
> > 
> > I think fstests doesn't use that attribute.
> 
> No, but unistd.h does for write():
> 
> extern ssize_t write (int __fd, const void *__buf, size_t __n) __wur
>     __attr_access ((__read_only__, 2, 3));
> 
> where "__wur" is a macro wrapping __attribute__
> ((__warn_unused_result__)) if available and FORTIFY_SOURCE is nonzero.

Oh, good to know that :)

> 
> But, uh, shouldn't we fix these programs either to fail the test because
> some part of its execution failed, or declare that the return value is
> irrelevant if that's the case?

The warning is not a big deal, /but/ I just found GCC-15 changed lots of
default things, especially use -std=gnu23 by default:

  https://gcc.gnu.org/gcc-15/porting_to.html


that causes xfstests can't be built with gcc-15 ... lots of build errors.

It can be "fixed"(skipped) by set -std=gnu17:

-GCCFLAGS = -funsigned-char -fno-strict-aliasing -Wall
+GCCFLAGS = -funsigned-char -fno-strict-aliasing -std=gnu17 -Wall

but I'm not sure if it's a good way. I'm wondering should we port to C23
totally... It needs to changes lots of "old style" C codes.

Thanks,
Zorro

> 
> --D
> 
> > Thanks,
> > Zorro
> > 
> > 
> > >  
> > >  ifeq ($(PKG_PLATFORM),linux)
> > >  PCFLAGS = -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 $(GCCFLAGS)
> > > -- 
> > > 2.43.0
> > > 
> > > 
> > 
> > 
> 





[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux