[U-Boot] Relocation size penalty calculation

J. William Campbell jwilliamcampbell at comcast.net
Fri Oct 9 00:27:47 CEST 2009


Graeme Russ wrote:
> On Fri, Oct 9, 2009 at 2:58 AM, J. William Campbell
> <jwilliamcampbell at comcast.net> wrote:
>   
>> Graeme Russ wrote:
>>     
>>> Out of curiosity, I wanted to see just how much of a size penalty I am
>>> incurring by using gcc -fpic / ld -pic on my x86 u-boot build. Here are
>>> the results (fixed width font will help - its space, not tab, formatted):
>>>
>>> Section             non-reloc     reloc
>>> ---------------------------------------
>>> .text                000118c4  000137fc <- 0x1f38 bytes (~8kB) bigger
>>> .rodata              00005bad  000059d0
>>> .interp              n/a       00000013
>>> .dynstr              n/a       00000648
>>> .hash                n/a       00000428
>>> .eh_frame            00003268  000034fc
>>> .data                00000a6c  000001dc
>>> .data.rel            n/a       00000098
>>> .data.rel.ro.local   n/a       00000178
>>> .data.rel.local      n/a       000007e4
>>> .got                 00000000  000001f0
>>> .got.plt             n/a       0000000c
>>> .rel.got             n/a       000003e0
>>> .rel.dyn             n/a       00001228
>>> .dynsym              n/a       00000850
>>> .dynamic             n/a       00000080
>>> .u_boot_cmd          000003c0  000003c0
>>> .bss                 00001a34  00001a34
>>> .realmode            00000166  00000166
>>> .bios                0000053e  0000053e
>>> =======================================
>>> Total                0001d5dd  00022287 <- 0x4caa bytes (~19kB) bigger
>>>
>>> Its more than a 16% increase in size!!!
>>>
>>> .text accounts for a little under half of the total bloat, and of that,
>>> the crude dynamic loader accounts for only 341 bytes
>>>
>>>       
>> Hi Graeme,
>>      I would be interested in a third option (column), the x86 build with
>> just -mrelocateable but NOT -fpic. It will not be definitive because there
>> will be extra code that references the GOT and missing code to do some of
>> the relocation, but it would still be interesting.
>>     
>
> x86 does not have -mrelocatable. This is a PPC only option :(
>   
Hi Graeme,
           You are unfortunately correct. However, I wonder if we can 
get essentially the same result by executing the final ld step with the 
--emit-relocs switch included. This may also include some "extra" 
sections that we would want to strip out, but if it works, it could give 
all ELF-based systems a way to a relocatable u-boot.

Best Regards,
Bill Campbell
**
>
>   
>> Best Regards,
>> Bill Campbell
>>     
>>> Have any metrics been done for PPC?
>>>
>>> Regards,
>>>
>>> Graeme
>>>       
>
> Once the reloc branch has been merged, how many arches are left which do
> not support relocation?
>
> Regards,
>
> Graeme
>
>
>   



More information about the U-Boot mailing list