[U-Boot] ARM relocation, question to Heiko

Heiko Schocher
2010-10-04T08:57:20Z

Hello Albert,

Albert ARIBAUD wrote:
> Le 04/10/2010 09:27, Reinhard Meyer a ?crit :
>> 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?
>
> ./MAKEALL edminiv2 results:
>
> text data bss dec hex filename
> 141376 4388 16640 162404 27a64 ./u-boot (for GOT
> reloc)
> 150160 3819 16640 170619 29a7b ./u-boot (for ELF
> reloc)
>
> u-boot.bin size in bytes:
>
> 145764 (for GOT reloc)
> 153976 (for ELF reloc)

Huh...

> The .rel.dyn table is 18472 bytes, and should eventually shrink by half,
> losing about 9 KB. That would bring the u-boot.bin size down to
> 145 KB, roughly the same size as GOT reloc -- plus we'd save a few code

... puuh ;-)

> bytes since reloc fixup functions in board_init_r would not be needed
> any more.

Sounds good. And we can easy test this, by defining CONFIG_RELOC_FIXUP_WORKS
for all arm boards ...

>> 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.
>
> I'll post an RFC patch within one or two hours.

Thanks! I am wating for it, and try your patches too.

bye,
Heiko
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany