With the BUG_ON() use in linux/list.h I get this: CC init/initramfs.o In file included from include/linux/wait.h:23, from include/linux/fs.h:205, from init/initramfs.c:2: include/linux/list.h: In function `list_del': include/linux/list.h:164: warning: implicit declaration of function `printk' In file included from include/linux/spinlock.h:13, from include/linux/wait.h:25, from include/linux/fs.h:205, from init/initramfs.c:2: include/linux/kernel.h: At top level: include/linux/kernel.h:116: error: conflicting types for 'printk' include/linux/kernel.h:116: note: a parameter list with an ellipsis can't match an empty parameter name list declaration include/linux/list.h:164: error: previous implicit declaration of 'printk' was here make[1]: *** [init/initramfs.o] Error 1 make: *** [init] Error 2
It looks like this is a result of having asm/bug.h included and not having linux/kernel.h included before it, as adding that makes this go away. This seems like it will be a problem for platforms that use printk() in their BUG() definitions (in the HAVE_ARCH_BUG case) without dragging in this header from somewhere else. With this I can build on sh again. The other solution is to add the include to asm/bug.h directly, but it would be nice to avoid linux/ includes from asm/ context in general.. Thoughts? Or ideas for a more appropriate fix? --- linux-sh-2.6.11-mm2.orig/include/linux/list.h 2005-03-08 15:46:50.601565604 +0200 +++ linux-sh-2.6.11-mm2/include/linux/list.h 2005-03-08 15:46:53.882114403 +0200 @@ -5,6 +5,7 @@ #include <linux/stddef.h> #include <linux/prefetch.h> +#include <linux/kernel.h> #include <asm/system.h> #include <asm/bug.h>
pgpuV9OL4DcI1.pgp
Description: PGP signature