Hello Wolfgang, Tom.
> > Currently U-boot defins bool type by including <stdbool.h> > > rather than defining directly. > > But it does not work for some cross compilers. > > Can you explain why this fails? At first, I have to admit that I misunderstood the reason of the error. It turned out that this is __not__ a compiler issue. I tried another Blackfin cross compiler, which is available at: https://www.kernel.org/pub/tools/crosstool/ But compiling faied at the same place. $ make CROSS_COMPILE=bfin-uclinux- bct-brettl2 <<snipped>> bfin-uclinux-gcc -g -Os -ffixed-P3 -fomit-frame-pointer -mno-fdpic -ffunction-sections -fdata-sections -mcpu=bf536-0.3 -D__KERNEL__ -I/home/yamada/u-boot/include -I/home/yamada/u-boot/arch/blackfin/include -fno-builtin -ffreestanding -nostdinc -isystem /opt/gcc-4.6.3-nolibc/bfin-uclinux/bin/../lib/gcc/bfin-uclinux/4.6.3/include -pipe -DCONFIG_BLACKFIN -Wall -Wstrict-prototypes -fno-stack-protector -Wno-format-nonliteral -Wno-format-security -o cmd_test.o cmd_test.c -c In file included from /home/yamada/u-boot/arch/blackfin/include/asm/blackfin.h:13:0, from /home/yamada/u-boot/include/common.h:92, from cmd_test.c:17: /home/yamada/u-boot/arch/blackfin/include/asm/blackfin_local.h:54:1: error: unknown type name 'bool' make[2]: *** [cmd_test.o] Error 1 make[2]: Leaving directory `/home/yamada/u-boot/common' make[1]: *** [common/built-in.o] Error 2 make[1]: Leaving directory `/home/yamada/u-boot' make: *** [bct-brettl2] Error 2 The issue resides in common/cmd_test.c I posted a patch to fix this build error in a different way. http://patchwork.ozlabs.org/patch/292247/ Tom, I think both can fix the error and you can select. - This patch - http://patchwork.ozlabs.org/patch/292247/ > > +enum { > > + false = 0, > > + true = 1 > > +}; > > + > > This looks fishy to me. Files that used to include <stdbool.h> do > not necessarily include <linux/stddef.h>, so they may now be missing > the definitions of "true" and "false". Yes. I noticed this. But it is Linux's way. So I intentionally put "bool" in <include/linux/types.h> and "true" and "false" in <include/linux/stddef.h>. > I can't say that I'm happy with that. I think we should first > understand the real cause of the problem. Now the real cause is clear. FYI: stdbool.h is usually something like follows. Note it uses _STDBOOL_H as an include gurad. /* * ISO C Standard: 7.16 Boolean type and values <stdbool.h> */ #ifndef _STDBOOL_H #define _STDBOOL_H #ifndef __cplusplus #define bool _Bool #define true 1 #define false 0 #else /* __cplusplus */ /* Supporting <stdbool.h> in C++ is a GCC extension. */ #define _Bool bool #define bool bool #define false false #define true true #endif /* __cplusplus */ /* Signal that all the definitions are present. */ #define __bool_true_false_are_defined 1 #endif /* stdbool.h */ Best Regards Masahiro Yamada _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot