Skip to contentSkip to conversation

sparse and mips

DISCUSSION Jeroen Vreeken 4 participants 7 messages Feb 27, 2005 – Mar 3, 2005 MIPS

lore
Share & tools
lore
#0 lore raw

Hi,

I tried compiling my switch driver with sparse to see if I did some stupid casts and got a lot of warnings.... (attached below) Are others using sparse with mips kernels and getting the same?
Or has nobody taken the time to fix it up?
(The byteorder stuff should creap up everywhere or not?)

Jeroen

pe1rxq@laptop:~/edimax/linux-2.6.10-adm$ make vmlinuz C=1              
 CHK     include/linux/version.h
make[1]: `arch/mips/kernel/offset.s' is up to date.
 CHK     include/asm-mips/offset.h
make[1]: `arch/mips/kernel/reg.s' is up to date.
 CHK     include/asm-mips/reg.h
 CHK     include/linux/compile.h
 CHK     usr/initramfs_list
 CHECK   drivers/net/adm5120sw.c
include/asm/byteorder.h:27:4: warning: "MIPS, but neither __MIPSEB__, nor __MIPSEL__???"
include/linux/kernel.h:200:2: warning: "Please fix asm/byteorder.h"
include/linux/aio_abi.h:59:2: warning: edit for your odd byteorder.
include/linux/types.h:24:26: warning: Expected ; at end of declaration
include/linux/types.h:24:26: warning: got nlink_t
include/linux/types.h:64:26: warning: Expected ; at end of declaration
include/linux/types.h:64:26: warning: got size_t
include/linux/types.h:69:26: warning: Expected ; at end of declaration
include/linux/types.h:69:26: warning: got ssize_t
include/linux/types.h:74:28: warning: Expected ; at end of declaration
include/linux/types.h:74:28: warning: got ptrdiff_t
include/asm/bitops.h:75:9: warning: Expected ) after asm
include/asm/bitops.h:75:9: warning: got __LL
include/asm/bitops.h:83:9: warning: Expected ) after asm
include/asm/bitops.h:83:9: warning: got __LL
include/asm/bitops.h:135:9: warning: Expected ) after asm
include/asm/bitops.h:135:9: warning: got __LL
include/asm/bitops.h:143:9: warning: Expected ) after asm
include/asm/bitops.h:143:9: warning: got __LL
include/asm/bitops.h:194:9: warning: Expected ) after asm
include/asm/bitops.h:194:9: warning: got __LL
include/asm/bitops.h:205:9: warning: Expected ) after asm
include/asm/bitops.h:205:9: warning: got __LL
include/asm/bitops.h:256:9: warning: Expected ) after asm
include/asm/bitops.h:256:9: warning: got __LL
include/asm/bitops.h:275:9: warning: Expected ) after asm
include/asm/bitops.h:275:9: warning: got __LL
include/asm/bitops.h:346:9: warning: Expected ) after asm
include/asm/bitops.h:346:9: warning: got __LL
include/asm/bitops.h:366:9: warning: Expected ) after asm
include/asm/bitops.h:366:9: warning: got __LL
include/asm/bitops.h:438:9: warning: Expected ) after asm
include/asm/bitops.h:438:9: warning: got __LL
include/asm/bitops.h:457:9: warning: Expected ) after asm
include/asm/bitops.h:457:9: warning: got __LL
include/linux/kernel.h:83:40: warning: Expected ) in function declarator
include/linux/kernel.h:83:40: warning: got size
include/linux/kernel.h:85:40: warning: Expected ) in function declarator
include/linux/kernel.h:85:40: warning: got size
include/linux/kernel.h:86:41: warning: Expected ) in function declarator
include/linux/kernel.h:86:41: warning: got size
include/linux/kernel.h:88:41: warning: Expected ) in function declarator
include/linux/kernel.h:88:41: warning: got size
include/asm/string.h:44:77: warning: Expected ) in function declarator
include/asm/string.h:44:77: warning: got __n
include/asm/string.h:48:11: warning: Expected ) in function declarator
include/asm/string.h:48:11: warning: got ==
include/asm/string.h:48:3: warning: Trying to use reserved word 'if' as identifier
make[2]: *** [drivers/net/adm5120sw.o] Error 139
make[1]: *** [drivers/net] Error 2
make: *** [drivers] Error 2
#1 lore raw
Quoted 5 lines · Jeroen Vreeken

I tried compiling my switch driver with sparse to see if I did some stupid casts and got a lot of warnings.... (attached below) Are others using sparse with mips kernels and getting the same? Or has nobody taken the time to fix it up?
(The byteorder stuff should creap up everywhere or not?)

Not to my knowledge. I always meant to as a preventive maintenance meassure but somehow there was always something more important to do ...

Quoted 3 lines

include/asm/byteorder.h:27:4: warning: "MIPS, but neither __MIPSEB__, nor __MIPSEL__???"
include/linux/kernel.h:200:2: warning: "Please fix asm/byteorder.h"

A result of sparse not knowing about MIPS yet.

Quoted 1 line

include/linux/aio_abi.h:59:2: warning: edit for your odd byteorder.

Same.

The others don't really make sense at the first look.

73,

Ralf

#2 lore raw
Quoted 14 lines · Ralf Baechle
Quoted 5 lines · Jeroen Vreeken

I tried compiling my switch driver with sparse to see if I did some stupid casts and got a lot of warnings.... (attached below) Are others using sparse with mips kernels and getting the same? Or has nobody taken the time to fix it up?
(The byteorder stuff should creap up everywhere or not?)

Not to my knowledge. I always meant to as a preventive maintenance meassure but somehow there was always something more important to do ...

Quoted 3 lines

include/asm/byteorder.h:27:4: warning: "MIPS, but neither __MIPSEB__, nor __MIPSEL__???"
include/linux/kernel.h:200:2: warning: "Please fix asm/byteorder.h"

Quoted 5 lines

A result of sparse not knowing about MIPS yet.

Quoted 1 line

include/linux/aio_abi.h:59:2: warning: edit for your odd byteorder.

Same.

You're using 2.6.10?

When I played with sparse on m68k (cross-compile environment), I had to make some modifications to arch/m68k/Makefile, to pass a few additional flags to sparse in case of cross-compilation. Later these changes were moved to the main Makefile, since they were valid for all architectures if cross-compilation was involved.

So I suggest to take a look at CHECKFLAGS in the main Makefile of the latest version (2.6.11-rc5) first, and see whether it works there.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

#3 lore raw
Quoted 12 lines · Geert Uytterhoeven

You're using 2.6.10?

When I played with sparse on m68k (cross-compile environment), I had to make some modifications to arch/m68k/Makefile, to pass a few additional flags to sparse in case of cross-compilation. Later these changes were moved to the main Makefile, since they were valid for all architectures if cross-compilation was involved.

So I suggest to take a look at CHECKFLAGS in the main Makefile of the latest version (2.6.11-rc5) first, and see whether it works there.

Adding the following few lines fixes the problems with the headers (they are normally defined by gcc)...
I am not sure that is all that is needed (the rest might just be me doing bad things in my driver) but since they are mips specific I think arch/mips/Makefile would be the right place for them:

CHECKFLAGS += -D__mips__
ifdef CONFIG_MIPS32
CHECKFLAGS += -D_MIPS_SZLONG=32
else
CHECKFLAGS += -D_MIPS_SZLONG=64
endif
ifdef CONFIG_CPU_LITTLE_ENDIAN
CHECKFLAGS += -D__MIPSEL__
else
CHECKFLAGS += -D__MIPSEB__
endif

Jeroen

#4 lore raw
Quoted 9 lines · Jeroen Vreeken

Adding the following few lines fixes the problems with the headers (they are normally defined by gcc)...
I am not sure that is all that is needed (the rest might just be me doing bad things in my driver) but since they are mips specific I think arch/mips/Makefile would be the right place for them:

CHECKFLAGS += -D__mips__
ifdef CONFIG_MIPS32
CHECKFLAGS += -D_MIPS_SZLONG=32

I went for something slightly more beautyful:

CHECKFLAGS-y += -D__linux__ -D__mips__

CHECKFLAGS-$(CONFIG_MIPS32)             += -D_MIPS_SZLONG=32 \
                                           -D__PTRDIFF_TYPE__=int
CHECKFLAGS-$(CONFIG_MIPS64)             += -D_MIPS_SZLONG=64 \
                                           -D__PTRDIFF_TYPE__="long int"

CHECKFLAGS-$(CONFIG_CPU_BIG_ENDIAN) += -D__MIPSEL__
CHECKFLAGS-$(CONFIG_CPU_LITTLE_ENDIAN) += -D__MIPSEL__

Still needs a few more symbols I guess. And I fixed a few of the worst offenders, especially uaccess.h.

Ralf

#5 lore raw
Quoted 2 lines · Ralf Baechle

CHECKFLAGS-$(CONFIG_CPU_BIG_ENDIAN) += -D__MIPSEL__
CHECKFLAGS-$(CONFIG_CPU_LITTLE_ENDIAN) += -D__MIPSEL__

typo? ;)

Uli

#6 lore raw
Quoted 5 lines · Ulrich Eckhardt
Quoted 2 lines · Ralf Baechle

CHECKFLAGS-$(CONFIG_CPU_BIG_ENDIAN) += -D__MIPSEL__
CHECKFLAGS-$(CONFIG_CPU_LITTLE_ENDIAN) += -D__MIPSEL__

typo? ;)

Guess I've been assimilated ;)

Ralf