[U-Boot] Relocation size penalty calculation

Graeme Russ graeme.russ at gmail.com
Fri Oct 9 00:39:39 CEST 2009


On Fri, Oct 9, 2009 at 9:27 AM, J. William Campbell
<jwilliamcampbell at comcast.net> wrote:
> 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.
>

I don't think --emit-relocs is necessary with -pic. I haven't gone through
all the permutations to see if there is a smaller option, but gcc -fpic and
ld -pie creates enough information to perform relocation on the x86
platform

Regards,

Graeme


> 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