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 > > > > > > > > > > >