Bloated binaries following the use of AT(...) linker script command

Prasad B bprasad@cs.arizona.edu
Tue Jun 16 01:24:00 GMT 2009


Hello All,

To change the load address of an application through the AT(...)
command, the linker script has been changed as:

PHDRS {
-       text PT_LOAD FLAGS(7);  /* RWX */
+      text PT_LOAD AT(0xffffffff84000000) FLAGS(7);   /* RWX */
        note PT_NOTE FLAGS(4);  /* R__ */
}

However, due to the above change the executable bloats up from about
16MB to about a Gibabyte. The output of the readelf indicates that the
start of section headers shifted by large value:

Entry point address:             0xc00050b0
Start of program headers:    52 (bytes into file)
Start of section headers:      1069295608 (bytes into file)

Although the sum of the sizes of individual section is only about
16MB, the size of the segment (only one segment) increases by the
bloated size:

Program Headers:
Type        Offset        VirtAddr        PhysAddr      FileSiz
  MemSiz     Flg      Align
LOAD     0x002000 0xc0000000 0x84000000 0x3fbbc8a0 0x3fc27f50 RWE   0x2000

Could someone indicate the possible reasons for the bloating of the executable ?

thank you,
Prasad.



More information about the Binutils mailing list