https://sourceware.org/bugzilla/show_bug.cgi?id=30907
Nick Clifton <nickc at redhat dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |nickc at redhat dot com --- Comment #2 from Nick Clifton <nickc at redhat dot com> --- (In reply to nilus from comment #0) Hi Nilus, > When we use binutils 2.39 (or higher, like 2.40) to compile files on > aarch64, we find that the newly compiled binary file size is 128K larger > than the binary file compiled using binutils 2.38. Are you concerned about disk space usage or memory usage ? The larger version will probably not be occupying a lot more disk space, since the unused sections of the file will not be allocated to real disk space. Likewise the altered layout of the larger file will only matter to the runtime if they cause extra pages to be allocated. > LOAD 0x0000000000000000 0x0000000000000000 0x0000000000000000 > 0x0000000000003448 0x0000000000003448 R E 0x10000 > LOAD 0x000000000000fc60 0x000000000001fc60 0x000000000001fc60 > 0x00000000000003a8 0x00000000000003b0 RW 0x10000 > Segment Sections... > 00 .note.gnu.property .note.gnu.build-id .gnu.hash .dynsym .dynstr > .gnu.version .gnu.version_r .rela.dyn .rela.plt .init .plt .text .fini > .rodata .eh_frame_hdr .eh_frame > 01 .init_array .fini_array .dynamic .got .data .bss vs... > LOAD 0x0000000000000000 0x0000000000000000 0x0000000000000000 > 0x0000000000001168 0x0000000000001168 R 0x10000 > LOAD 0x0000000000010000 0x0000000000010000 0x0000000000010000 > 0x0000000000001dc0 0x0000000000001dc0 R E 0x10000 > LOAD 0x0000000000020000 0x0000000000020000 0x0000000000020000 > 0x0000000000000a8c 0x0000000000000a8c R 0x10000 > LOAD 0x000000000002fc30 0x000000000003fc30 0x000000000003fc30 > 0x00000000000003d8 0x00000000000003e0 RW 0x10000 > Segment Sections... > 00 .note.gnu.property .note.gnu.build-id .gnu.hash .dynsym .dynstr > .gnu.version .gnu.version_r .rela.dyn .rela.plt > 01 .init .plt .text .fini > 02 .rodata .eh_frame_hdr .eh_frame > 03 .init_array .fini_array .dynamic .got .data .bss This is a security issue. Notice how in the first version you have a segment with Execute permission that contains lots of sections that do not need the execution ability. In the second version these sections are relegated to their own, just read only, segment. Likewise data is completely separated from code, so the .rodata section for example no longer shares a segment with .text. If you do not like this behaviour, you should be able to turn it off by linking with "-z,noseparate-code". Cheers Nick -- You are receiving this mail because: You are on the CC list for the bug.