[U-Boot] armv8 relocation questions

fenghua at phytium.com.cn fenghua at phytium.com.cn
Mon May 26 15:11:14 CEST 2014


hi Wolfgang,
     I am will glad to share my understanding.

> Dear David,
> 
> In message <0579E649-F359-415B-A8ED-E1D4267F8A24 at phytium.com.cn> you wrote:
>> 
>>> And if any text base alignment is less than the image's maximum
>>> alignment requirement, the load will fail, and then we likely scratch
>>> our heads and set the CONFIG_SYS_TEXT_BASE alignment higher until it
>>> works.
>> 
>> Whatever CONFIG_SYS_TEXT_BASE is the alignment will be ok if the
>> relocated address satisfy the align requirement. So CONFIG_SYS_TEXT_BASE
>> could be any value(compiler maybe require the text base aligned with
>> 0x20),  just make relocated address has the same offset.
> 
> There is a point which has not been answered yet, wnd which I really
> would like to understand.  maybe you could be so kind and try to
> explain it to me?
> 
> I wonder if the use of the "ardp" instruction by the compiler can be
> influenced or maybe even prevent for specific code parts, for example
> by specific compiler options?  For example, there is a number of
> PIC/PIE-related compiler options - would these have any influence
> here?
I did not find any options that can prevent the use of adrp.

> 
> I wonder how "adrp" would work in any code that is supposed to be
> position-independent?
In my understanding, with adrp the program is still relocatable except that
the text base should be 4KB aligned or the relocated address has the same
offset with text base. Darwin want CONFIG_SYS_TEXT_BASE to be not 4KB aligned, so the
relocated address should be offsetted in the same manner.

Position-independent code is usually page aligned, so gcc-aarch64 implicitly apply
the restriction of text base.

Actually, u-boot for aarch64 apply another align requirement that 
is interrupt vector. The interrupt vector should be 2KB aligned. 
So, even without adrp CONFIG_SYS_TEXT_BASE should be 2KB aligned yet
or relocated with the same offset, otherwise bug exist.


Best regards,
David




More information about the U-Boot mailing list