Skip to contentSkip to conversation

uboot compilation error when using the toolchain arm-elf-tools from uClinux.org

U-Boot-Users Shawn Jin 3 participants 5 messages Aug 10, 2004

lore
Share & tools
lore

Shawn Jin

author
#0 lore raw

Hi,

I checked out u-boot code from CVS today and tried to compile it for ARM IntegratorCP board. The cross toolchain I used is arm-elf-tools downloaded from uClinux.org. Unfortunately I got the following compilation error.

arm-elf-gcc -g -Os -fno-strict-aliasing -fno-common -ffixed-r8
-mshort-load-bytes -msoft-float
-D__KERNEL__ -DTEXT_BASE=0x01000000 -I/u/code/denx/u-boot/include
-fno-builtin -ffreestandin
g -nostdinc -isystem /usr/local/lib/gcc-lib/arm-elf/2.95.3/include -pipe -DCONFIG_ARM -D__ARM__ -
mapcs-32 -march=armv4 -Wall -Wstrict-prototypes -c -o cfi_flash.o cfi_flash.c In file included from cfi_flash.c:48:
/u/code/denx/u-boot/include/asm/processor.h:52: parse error before 1' /u/code/denx/u-boot/include/asm/processor.h:52: warning: no semicolon at end of struct or union /u/code/denx/u-boot/include/asm/processor.h:54: parse error before }' /u/code/denx/u-boot/include/asm/processor.h:58: field `insn' has incomplete type

The code is extracted from the header file processor.h.

51> union debug_insn {

52>      u32     arm;
53>      u16     thumb;
54> };
55>
56> struct debug_entry {
57>        u32                     address;
58>        union debug_insn        insn;

59> };

However I really don't think there is any syntax error. It might be a toolchain problem?

Signature · 3 lines
Best regards,

Shawn Jin
#1 lore raw

Jivin Shawn Jin lays it down ...

Quoted 31 lines

Hi,

I checked out u-boot code from CVS today and tried to compile it for ARM IntegratorCP board. The cross toolchain I used is arm-elf-tools downloaded from uClinux.org. Unfortunately I got the following compilation error.

arm-elf-gcc -g -Os -fno-strict-aliasing -fno-common -ffixed-r8

(quoted diff) +0 -2
-mshort-load-bytes -msoft-float
 -D__KERNEL__ -DTEXT_BASE=0x01000000 -I/u/code/denx/u-boot/include
-fno-builtin -ffreestandin

g -nostdinc -isystem /usr/local/lib/gcc-lib/arm-elf/2.95.3/include -pipe -DCONFIG_ARM -D__ARM__ -
mapcs-32 -march=armv4 -Wall -Wstrict-prototypes -c -o cfi_flash.o cfi_flash.c In file included from cfi_flash.c:48:
/u/code/denx/u-boot/include/asm/processor.h:52: parse error before 1' /u/code/denx/u-boot/include/asm/processor.h:52: warning: no semicolon at end of struct or union /u/code/denx/u-boot/include/asm/processor.h:54: parse error before }' /u/code/denx/u-boot/include/asm/processor.h:58: field `insn' has incomplete type

The code is extracted from the header file processor.h.

51> union debug_insn {

52>      u32     arm;
53>      u16     thumb;
54> };
55>
56> struct debug_entry {
57>        u32                     address;
58>        union debug_insn        insn;
Quoted 4 lines

59> };

However I really don't think there is any syntax error. It might be a toolchain problem?

I think, at least for that version of the toolchain, it implicitly defines "arm", and I suspect it defines it to be "1", thus the errors you are seeing. You may be able to add a -Uarm to eth build line,

Cheers,
Davidm

Signature · 2 lines
David McCullough, davidm at snapgear.com  Ph:+61 7 34352815 http://www.SnapGear.com
Custom Embedded Solutions + Security   Fx:+61 7 38913630 http://www.uCdot.org
author
#2 lore raw

Dear David,

Quoted 12 lines
Quoted 12 lines

The code is extracted from the header file processor.h.

51> union debug_insn {

52>      u32     arm;
53>      u16     thumb;
54> };
55>
56> struct debug_entry {
57>        u32                     address;
58>        union debug_insn        insn;

59> };

Quoted 6 lines
Quoted 2 lines

However I really don't think there is any syntax error. It might be a toolchain problem?

I think, at least for that version of the toolchain, it implicitly defines "arm", and I suspect it defines it to be "1", thus the errors you are seeing. You may be able to add a -Uarm to eth build line,

It did solve the problem. Thank you!

Would you please explain a little bit more why the toolchain implicitly defines "arm"? Should or should not for a toolchain to define this? Or we can simply re-name "arm" in struct debug_insn to another name?

Signature · 2 lines
Best regards,
-Shawn Jin
#3 lore raw

Jivin Shawn Jin lays it down ...

Quoted 21 lines

Dear David,

Quoted 12 lines
Quoted 12 lines

The code is extracted from the header file processor.h.

51> union debug_insn {

52>      u32     arm;
53>      u16     thumb;
54> };
55>
56> struct debug_entry {
57>        u32                     address;
58>        union debug_insn        insn;

59> };

Quoted 6 lines
Quoted 2 lines

However I really don't think there is any syntax error. It might be a toolchain problem?

I think, at least for that version of the toolchain, it implicitly defines "arm", and I suspect it defines it to be "1", thus the errors you are seeing. You may be able to add a -Uarm to eth build line,

Quoted 6 lines

It did solve the problem. Thank you!

Would you please explain a little bit more why the toolchain implicitly defines "arm"? Should or should not for a toolchain to define this? Or we can simply re-name "arm" in struct debug_insn to another name?

Most compilers predefine a number of things to help coders port/identify what the code is being built for. For example, on a coldfire target __mcf5200 may be defined. Have a look at:

	http://www.ucdot.org/article.pl?sid=02/10/02/035241

I don't think the newer gcc's define "arm" and I cannot recall why the current 2.95.3 compiler does, but if you can easily change the name of that field in the structure it would be the safest option IMO,

Cheers,
Davidm

Signature · 2 lines
David McCullough, davidm at snapgear.com  Ph:+61 7 34352815 http://www.SnapGear.com
Custom Embedded Solutions + Security   Fx:+61 7 38913630 http://www.uCdot.org
#4 lore raw
In reply to Shawn Jin
Quoted 5 lines · In message <[email protected]> you wrote:

I checked out u-boot code from CVS today and tried to compile it for ARM IntegratorCP board. The cross toolchain I used is arm-elf-tools downloaded from uClinux.org. Unfortunately I got the following compilation error.

...

Quoted 2 lines

In file included from cfi_flash.c:48:
/u/code/denx/u-boot/include/asm/processor.h:52: parse error before `1'

Note that there is no '1' in line 52 in this file!

Quoted 15 lines

/u/code/denx/u-boot/include/asm/processor.h:52: warning: no semicolon at end of struct or union /u/code/denx/u-boot/include/asm/processor.h:54: parse error before }' /u/code/denx/u-boot/include/asm/processor.h:58: field insn' has incomplete type

The code is extracted from the header file processor.h.

51> union debug_insn {

52>      u32     arm;
53>      u16     thumb;
54> };
55>
56> struct debug_entry {
57>        u32                     address;
58>        union debug_insn        insn;
Quoted 4 lines

59> };

However I really don't think there is any syntax error. It might be a toolchain problem?

The code compiles fine using our ELDK. It is probably a toolchain problem, but also check that the source tree is not corrupted and/or stored in DOS file format.

Best regards,

Wolfgang Denk

Signature · 4 lines
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-4596-87  Fax: (+49)-8142-4596-88  Email: wd at denx.de
Life would be so much easier if we could  just  look  at  the  source
code.                                                   -- Dave Olson