[U-Boot] ARM relocation, question to Heiko

Reinhard Meyer u-boot at emk-elektronik.de
Mon Oct 4 09:27:32 CEST 2010


Dear Albert ARIBAUD,
> 
> Right now I can build (not run, mind you) u-boot for edminiv2 without 
> -fPIC/-fPIE, with -pie and a modified u-boot.lds and start.S. Almost all 
> of the .rel.dyn fixup entries are type 23, that is, relative to the base 
> address, which is good. However, here are about ten at the end which are 
> type 2 -- symbol-relative -- and I am studying them in order to see if 
> they are needed.
> 
> If type 23 relocations are all that is needed, then a first ARM ELF 
> relocation implementation should 'simply' trade GOT vs .rel.dyn 
> relocation in start.S (I am almost there) and remove fixups in 
> board_init_r. Start.S would apply type 23 fixups only and ignore the 
> rest. Later on we could add a build stage to rewrite the .rel.dyn 
> section as suggested, by filtering out non-type-23 relocs and keeping 
> only the address part of type-23 ones, reducing the .rel.dyn table 
> roughly by half.
> 
> The good news is, I can spare a couple more hours today on this. I'll 
> let you all know how this fares!

Thats good news! How much did the image size increase with this table?

And I am willing to test your efforts on AT91 here, maybe you can send me
the changes to .lds and start.S beforehand so I can see what type of
relocation info gets produced here.

A rather wild, but quite arch independant additional "build stage" for
relocation would be to link u-boot for two different TEXT_BASE values
e.g. TEXT_BASE (as desired) and TEXT_BASE+0x00010010. A special "diff"
tool should find the 32 bit places where relocation is required and
add a table to the end of u-boot.bin... (Just a rough idea)

Best Regards,
Reinhard



More information about the U-Boot mailing list