[U-Boot] compile errors with gcc-4.5.1 on OXC and RMU boards
Kumar Gala
galak at kernel.crashing.org
Mon Dec 13 15:51:06 CET 2010
On Dec 12, 2010, at 3:49 PM, Wolfgang Denk wrote:
> Dear Scott Wood,
>
> In message <20101210122714.24b2cbef at udp111988uds.am.freescale.net> you wrote:
>> On Fri, 10 Dec 2010 12:14:43 -0600
>> Kumar Gala <galak at kernel.crashing.org> wrote:
>>
>>> On the OXC & RMU boards I'm seeing the following build error:
>>>
>>> powerpc-linux-gnu-gcc -g -Os -mrelocatable -ffunction-sections -fdata-sections -fPIC -meabi -D__KERNEL__ -DCONFIG_SYS_TEXT_BASE=0xFFF00000 -I/local/home/galak/git/u-boot-85xx/include -fno-builtin -ffreestanding -nostdinc -isystem /local/opt/freesc
>> ale/usr/local/gcc-4.5.55-eglibc-2.11.55/powerpc-linux-gnu/bin/../lib/gcc/powerpc-linux-gnu/4.5.1/include -pipe -DCONFIG_PPC -D__powerpc__ -DCONFIG_MPC824X -ffixed-r2 -mstring -mcpu=603e -msoft-float -Wall -Wstrict-prototypes -fno-stack-protector \
>>> -o board.o board.c -c
>>> board.c: In function 'board_init_r':
>>> board.c:761:35: error: token "[" is not valid in preprocessor expressions
>>> make[1]: *** [board.o] Error 1
>>>
>>> Not sure what to be done about it, since OXC.h defines:
>>>
>>> #define CONFIG_SYS_FLASH_BASE (0-flash_info[0].size)
>>
>> This:
>>
>> # elif CONFIG_SYS_MONITOR_BASE == CONFIG_SYS_FLASH_BASE
>>
>> requires that CONFIG_SYS_FLASH_BASE be a preprocessor-evaluatable
>> constant. flash_info[0].size isn't any sort of constant. I don't see
>> how it ever worked -- probably just got evaluated as zero, or a string
>> compare, or something.
>>
>> As for what's to be done, I'll start by getting the attention of anyone
>> who cares about these boards by putting the board names in the
>> subject. :-)
>>
>> Maybe convert the #elif into a regular if-statement?
>
> No, I think this is a bug in the tool chain.
>
> The "#elif" above should never be evaluated because the corresponding
>
> # if defined(CONFIG_OXC) || defined(CONFIG_RMU)
>
> already catches the case for the OXC & RMU boards.
>
>
> Or has the rule officially been dropped that the "#if" in the C
> prepro use the same shortcut logic as the "if" in C?
I'm being told that not reporting this as an error is a bug in previous gcc's not the new one. There isn't anything in the C specs about early out handling from what I can tell.
- k
More information about the U-Boot
mailing list