
Le 22/10/2010 20:38, Kristoffer Ericson a écrit :
On Fri, Oct 22, 2010 at 05:26:33PM +0200, Albert ARIBAUD wrote:
Le 22/10/2010 17:01, Kristoffer Ericson a écrit :
On Fri, Oct 22, 2010 at 03:22:58PM +0200, Albert ARIBAUD wrote:
Le 22/10/2010 15:07, Kristoffer Ericson a écrit :
Greetings,
Getting this when trying to build (using same toolchain which has worked before). Someone else must have hit this, so before I start bugtracking.
Best wishes Kristoffer Ericson
arm-linux-ar crv libsa1100.a cpu.o timer.o r - cpu.o r - timer.o make[1]: Leaving directory `/home/kristoffer/work/projects/u-boot.git/arch/arm/cpu/sa1100' make -C arch/arm/lib/ make[1]: Entering directory `/home/kristoffer/work/projects/u-boot.git/arch/arm/lib' arm-linux-gcc -g -Os -fno-common -ffixed-r8 -msoft-float -malignment-traps -D__KERNEL__ -DCONFIG_SYS_TEXT_BASE=0xC1F00000 -I/home/kristoffer/work/projects/u-boot.git/include -fno-builtin -ffreestanding -nostdinc -isystem /opt/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/lib/gcc/arm-softfloat-linux-gnu/3.4.5/include -pipe -DCONFIG_SYS_ARM_WITHOUT_RELOC -DCONFIG_ARM -D__ARM__ -marm -mapcs-32 -mno-thumb-interwork -march=armv4 -mtune=strongarm1100 -Wall -Wstrict-prototypes \ -o board.o board.c -c board.c: In function `start_armboot': board.c:293: error: `_armboot_start' undeclared (first use in this function) board.c:293: error: (Each undeclared identifier is reported only once board.c:293: error: for each function it appears in.) board.c:303: error: `_bss_start' undeclared (first use in this function) make[1]: *** [board.o] Fel 1 make[1]: Leaving directory `/home/kristoffer/work/projects/u-boot.git/arch/arm/lib' make: *** [arch/arm/lib/libarm.a] Fel 2 [kristoffer@boggieman u-boot.git]$
Which branch do you build? If this has ELF relocations (elf_reloc of mainline u-boot repo), the board you're compiling probably misses support for ELF relocations.
Forgot that im setting without relocation in the config. Its really weird, both those (_armboot_start/_bss_start) are declared within arch/cpu/sa1100/start.S but for some reason doesnt get grabbed/builtin and therefore believed to be undeclared.
For board.c to see them as declared, you have to have them in a header file, namely arch/arm/include/asm/u-boot-arm.h, regardless of whether they are defined in start.S. What does your u-boot-arm.h say about them?
They are not included in arch/arm/include/asm/u-boot-arm.h. However _bss_start_ofs / _armboot_start_ofs are, not sure if its a misspell.
Not exactly misspelled... I renamed them myself in the ELF relocation patch -- which means your arch/arm/include/asm/u-boot-arm.h is that of the elf_reloc branch -- which means your board.c is not up to date.
Adding _bss_start + _armboot_start into u-boot-arm.h makes it compile nicely :) Big thanks. Still cant understand why it showed up now and not in my e79f48393dd919079b34f37957c933f8e75c164d revision(from 13th of october). And also why people with arm boards arent hitting this all the time, or is everyone running with relocation already?
Everyone should be. Now is a transition period where ARM board owners must support (ELF) relocation or else the boards are going to be removed, IIUC.
Anyhow, the quick fix in case someone needs it:
This is not a quick fix; this is a workaround to a weird source tree issue.
Either you should build on the master branch (and then your .h file should already have _bss_start and _armboot_start or you build on the elf_reloc branch and should not refer to _bss_start and _armboot_start but to their _ofs counterparts throughout the code; you can look up how this is done on arm926ejs.
Amicalement,