[U-Boot] [PATCH] powerpc/ppc4xx: add ENTRY() to linker script

jozsef imrek mazsi at imrek.org
Fri Mar 25 00:54:18 CET 2011


dear wolfgang,


On Fri, 25 Mar 2011, Wolfgang Denk wrote:

> > Add ENTRY() command to the linker script so that entry point is
> > correctly marked in the final ELF file.
> 
> Which exact problem are you trying to fix?

i'm sorry, i probably should have been more verbose in the
changelog.
     

when cross-compiling u-boot for the avnet virtex-4 minimodule 
(make fx12mm_config; make, with SYS_TEXT_BASE=0x02000000) i end
up with a u-boot.lds linker script that has no ENTRY() command.

this will result in an incorrect ELF file: the entry point in 
the ELF header points to the first byte of the first loadable 
segment (which is ~the version string at 0x02000004: "U-Boot 
2011..") instead of the first instruction to be executed at 
_start (at 0x02002100 in this case).


powerpc-405-linux-gnu-readelf -e u-boot:

ELF Header:
  Magic:   7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF32
  Data:                              2's complement, big endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           PowerPC
  Version:                           0x1
  Entry point address:               0x2000000
  ..
     

powerpc-405-linux-gnu-objdump -d u-boot:

Disassembly of section .text:

02000000 <version_string-0x4>:
 2000000:       27 05 19 56     dozi    r24,r5,6486

02000004 <version_string>:
 2000004:       55 2d 42 6f     rlwinm. r13,r9,8,9,23
 2000008:       6f 74 20 32     xoris   r20,r27,8242
 200000c:       30 31 31 2e     addic   r1,r17,12590
 2000010:       30 33 2d 72     addic   r1,r19,11634
        ...

02002100 <_start>:
 2002100:       38 80 00 00     li      r4,0
 2002104:       7c 99 eb a6     mtpmc1  r4
 2002108:       7c 9a eb a6     mtdcwr  r4
 200210c:       7c 94 f3 a6     mtesr   r4
 2002110:       7c 9a f3 a6     mttcr   r4
        ...

     
anything trying to load and run this ELF file (eg xilinx's XMD 
debugger, or a bootloader stored in the FPGA fabric) will fail 
to do so because the processor will jump to 0x02000000 and try 
to execute the version string.



best regards,

-- 
mazsi

----------------------------------------------------------------
strawberry fields forever!                       mazsi at imrek.org
----------------------------------------------------------------


More information about the U-Boot mailing list