[U-Boot] Relocation size penalty calculation

Graeme Russ
2009-10-08T11:54:40Z

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

Have any metrics been done for PPC?

Regards,

Graeme