diff mbox series

[2/7] builddefs: define linux

Message ID 20250206212145.7732-3-sandeen@redhat.com (mailing list archive)
State New
Headers show
Series fstests: enable sparse checking & fix fallout | expand

Commit Message

Eric Sandeen Feb. 6, 2025, 9:19 p.m. UTC
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(-)

Comments

Darrick J. Wong Feb. 6, 2025, 10:39 p.m. UTC | #1
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
> 
>
Eric Sandeen Feb. 7, 2025, 1:09 a.m. UTC | #2
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
>>
>>
>
Darrick J. Wong Feb. 7, 2025, 2:01 a.m. UTC | #3
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
> >>
> >>
> > 
>
Christoph Hellwig Feb. 7, 2025, 4:57 a.m. UTC | #4
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.
Darrick J. Wong Feb. 7, 2025, 5:06 a.m. UTC | #5
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 mbox series

Patch

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)