Message ID | 20250206212145.7732-3-sandeen@redhat.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | fstests: enable sparse checking & fix fallout | expand |
On Thu, Feb 06, 2025 at 03:19:57PM -0600, Eric Sandeen wrote: > There are several #ifdef linux guards in the code, but nothing > defined it. This caused several sparse warnings, so define it > when building on linux. cpp in gcc 12.2 defines this: $ touch /tmp/moo.h ; cpp -dM /tmp/moo.h | grep define.linux #define linux 1 --D > Signed-off-by: Eric Sandeen <sandeen@redhat.com> > --- > include/builddefs.in | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/builddefs.in b/include/builddefs.in > index 7274cde8..00dec0ea 100644 > --- a/include/builddefs.in > +++ b/include/builddefs.in > @@ -78,7 +78,7 @@ HAVE_FICLONE = @have_ficlone@ > GCCFLAGS = -funsigned-char -fno-strict-aliasing -Wall > > ifeq ($(PKG_PLATFORM),linux) > -PCFLAGS = -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 $(GCCFLAGS) > +PCFLAGS = -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -Dlinux $(GCCFLAGS) > endif > ifeq ($(PKG_PLATFORM),darwin) > PCFLAGS = -traditional-cpp $(GCCFLAGS) > -- > 2.48.0 > >
On 2/6/25 4:39 PM, Darrick J. Wong wrote: > On Thu, Feb 06, 2025 at 03:19:57PM -0600, Eric Sandeen wrote: >> There are several #ifdef linux guards in the code, but nothing >> defined it. This caused several sparse warnings, so define it >> when building on linux. > > cpp in gcc 12.2 defines this: > > $ touch /tmp/moo.h ; cpp -dM /tmp/moo.h | grep define.linux > #define linux 1 Huh, on my test box too. And yet without this sparse coughs up lots of things for me: tlibio.c:90:20: error: undefined identifier 'LIO_IO_TYPES' tlibio.c:90:33: error: undefined identifier 'LIO_WAIT_TYPES' tlibio.c:92:20: error: undefined identifier 'LIO_IO_TYPES' tlibio.c:92:33: error: undefined identifier 'LIO_WAIT_TYPES' tlibio.c:118:20: error: undefined identifier 'LIO_IO_TYPES' tlibio.c:118:33: error: undefined identifier 'LIO_WAIT_TYPES' because i.e.: #ifdef linux #define LIO_IO_TYPES 00021 /* all io types */ #endif /* linux */ make V=1 shows: /bin/sh ../libtool --quiet --tag=CC --mode=compile gcc -g -O2 -g -O2 -DDEBUG -I../include -DVERSION=\"1.1.1\" -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -funsigned-char -fno-strict-aliasing -Wall -c tlibio.c so not sure what's going on here ? > --D > >> Signed-off-by: Eric Sandeen <sandeen@redhat.com> >> --- >> include/builddefs.in | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/include/builddefs.in b/include/builddefs.in >> index 7274cde8..00dec0ea 100644 >> --- a/include/builddefs.in >> +++ b/include/builddefs.in >> @@ -78,7 +78,7 @@ HAVE_FICLONE = @have_ficlone@ >> GCCFLAGS = -funsigned-char -fno-strict-aliasing -Wall >> >> ifeq ($(PKG_PLATFORM),linux) >> -PCFLAGS = -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 $(GCCFLAGS) >> +PCFLAGS = -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -Dlinux $(GCCFLAGS) >> endif >> ifeq ($(PKG_PLATFORM),darwin) >> PCFLAGS = -traditional-cpp $(GCCFLAGS) >> -- >> 2.48.0 >> >> >
On Thu, Feb 06, 2025 at 07:09:21PM -0600, Eric Sandeen wrote: > On 2/6/25 4:39 PM, Darrick J. Wong wrote: > > On Thu, Feb 06, 2025 at 03:19:57PM -0600, Eric Sandeen wrote: > >> There are several #ifdef linux guards in the code, but nothing > >> defined it. This caused several sparse warnings, so define it > >> when building on linux. > > > > cpp in gcc 12.2 defines this: > > > > $ touch /tmp/moo.h ; cpp -dM /tmp/moo.h | grep define.linux > > #define linux 1 > > Huh, on my test box too. > And yet without this sparse coughs up lots of things for me: > > tlibio.c:90:20: error: undefined identifier 'LIO_IO_TYPES' > tlibio.c:90:33: error: undefined identifier 'LIO_WAIT_TYPES' > tlibio.c:92:20: error: undefined identifier 'LIO_IO_TYPES' > tlibio.c:92:33: error: undefined identifier 'LIO_WAIT_TYPES' > tlibio.c:118:20: error: undefined identifier 'LIO_IO_TYPES' > tlibio.c:118:33: error: undefined identifier 'LIO_WAIT_TYPES' > > because i.e.: > > #ifdef linux > #define LIO_IO_TYPES 00021 /* all io types */ > #endif /* linux */ > > make V=1 shows: > > /bin/sh ../libtool --quiet --tag=CC --mode=compile gcc -g -O2 -g -O2 -DDEBUG -I../include -DVERSION=\"1.1.1\" -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -funsigned-char -fno-strict-aliasing -Wall -c tlibio.c > > so not sure what's going on here ? sparse doesn't define linux by default: $ cat > /tmp/a.c << ENDL #ifdef linux # warning not #else # warning me #endif ENDL $ gcc -o /tmp/a.o /tmp/a.c /tmp/a.c:2:3: warning: #warning not [-Wcpp] 2 | # warning not | ^~~~~~~ /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o: in function `_start': (.text+0x17): undefined reference to `main' collect2: error: ld returned 1 exit status $ sparse /tmp/a.c /tmp/a.c:4:3: warning: me $ sparse /tmp/a.c -Dlinux /tmp/a.c:2:3: warning: not --D > > > --D > > > >> Signed-off-by: Eric Sandeen <sandeen@redhat.com> > >> --- > >> include/builddefs.in | 2 +- > >> 1 file changed, 1 insertion(+), 1 deletion(-) > >> > >> diff --git a/include/builddefs.in b/include/builddefs.in > >> index 7274cde8..00dec0ea 100644 > >> --- a/include/builddefs.in > >> +++ b/include/builddefs.in > >> @@ -78,7 +78,7 @@ HAVE_FICLONE = @have_ficlone@ > >> GCCFLAGS = -funsigned-char -fno-strict-aliasing -Wall > >> > >> ifeq ($(PKG_PLATFORM),linux) > >> -PCFLAGS = -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 $(GCCFLAGS) > >> +PCFLAGS = -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -Dlinux $(GCCFLAGS) > >> endif > >> ifeq ($(PKG_PLATFORM),darwin) > >> PCFLAGS = -traditional-cpp $(GCCFLAGS) > >> -- > >> 2.48.0 > >> > >> > > >
On Thu, Feb 06, 2025 at 06:01:36PM -0800, Darrick J. Wong wrote:
> sparse doesn't define linux by default:
Does it define __linux__? That's really the preferred version these
days and we should probably switch over to that.
On Thu, Feb 06, 2025 at 08:57:54PM -0800, Christoph Hellwig wrote: > On Thu, Feb 06, 2025 at 06:01:36PM -0800, Darrick J. Wong wrote: > > sparse doesn't define linux by default: > > Does it define __linux__? That's really the preferred version these > days and we should probably switch over to that. It seems to do so, yes. --D
diff --git a/include/builddefs.in b/include/builddefs.in index 7274cde8..00dec0ea 100644 --- a/include/builddefs.in +++ b/include/builddefs.in @@ -78,7 +78,7 @@ HAVE_FICLONE = @have_ficlone@ GCCFLAGS = -funsigned-char -fno-strict-aliasing -Wall ifeq ($(PKG_PLATFORM),linux) -PCFLAGS = -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 $(GCCFLAGS) +PCFLAGS = -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -Dlinux $(GCCFLAGS) endif ifeq ($(PKG_PLATFORM),darwin) PCFLAGS = -traditional-cpp $(GCCFLAGS)
There are several #ifdef linux guards in the code, but nothing defined it. This caused several sparse warnings, so define it when building on linux. Signed-off-by: Eric Sandeen <sandeen@redhat.com> --- include/builddefs.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)