A small "hello world" program gives an executable of more than 64 kbyte when linked with shared libraries. With binutils-2.14 the same "hello world" program gives an executable of about 6 kbyte. Looking at the result of the following command: readelf -a a.out | grep LOAD shows that the LOAD entries in Program Headers now have an alignment of 0x10000 (64 kbyte) The same command on an a.out generated with binutils-2.14 shows alignment of 0x1000 (4 kbyte) The bintutils-2.14.91 also generates big a.out with alignment of 64 kbyte. This suggests that the alignment value correlates with the a.out size. Curious: on a.out binaries of X86 the alignment is 0x1000 but the executable size is less than 4 kbyte (with binutils-2.15, as found on FC3). For mipsel cross-compilation, I use a cross-compilation toolchain generated with Dan Kegel's crosstools with the following parameters: - crosstools-0.38-rc37 - gcc-3.3.3 - glibc-2.3.2 - binutils-2.14, 2.14.91 or 2.15 - linux-2.4.18
I believe this has been fixed, likely in 2006. At least mips-linux-gcc generates files of size less than 64k in size.