https://sourceware.org/bugzilla/show_bug.cgi?id=33344
Rin Okuyama <rokuyama.rk at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|NOTABUG |--- Status|RESOLVED |REOPENED --- Comment #8 from Rin Okuyama <rokuyama.rk at gmail dot com> --- (In reply to H.J. Lu from comment #6) > (In reply to Rin Okuyama from comment #5) > > (In reply to H.J. Lu from comment #4) > > > (In reply to H.J. Lu from comment #3) > > > > (In reply to Rin Okuyama from comment #0) > > > > > You can see the size of segment is not changed at all. This results in > > > > > regression of stripped-binary sizes for NetBSD. > > > > > > > > Did you mean segment size, not file size? > > > > > > The segment size difference is kind of random. Please compare segment > > > sizes for "strip -R .note.netbsd.ident -R .note.netbsd.pax" with binutils > > > 2.42 and 2.45. > > > > What we are concerned about is the binary size. > > > > I mentioned the segment size as a cause of increase in the binary size. > > > > I saw: > > [hjl@gnu-cfl-3 bug33344]$ ls -l > total 80 > -rwxr-xr-x 1 hjl hjl 22072 Aug 31 03:25 hello.242 > -rwxr-xr-x 1 hjl hjl 11568 Aug 31 03:25 hello.242.stripped > -rwxr-xr-x 1 hjl hjl 22088 Aug 31 03:28 hello.245 > -rwxr-xr-x 1 hjl hjl 11608 Aug 31 03:28 hello.245.stripped > -rw-r--r-- 1 hjl hjl 79 Aug 31 03:24 hello.c > -rw-r--r-- 1 hjl hjl 1288 Aug 31 03:24 hello.o > [hjl@gnu-cfl-3 bug33344]$ > > The 2.45 file size increased slightly due to different section layouts. No, this is not due to section layouts; the difference scales with .eh_frame and .eh_frame_hdr. For dynamically-linked binaries, .eh_frame{,_hdr} are small, and difficult to recognize due to alignments b/w segments. I've uploaded statically-linked versions as a better example: ``` % ls -l *.stripped -rwxr-xr-x 1 rin wsrc 745816 Sep 4 14:35 static.242.stripped -rwxr-xr-x 1 rin wsrc 799128 Sep 4 14:35 static.245.stripped ``` These are stripped binaries with `strip -R .eh_frame -R .eh_frame_hdr`. This difference cannot be explained only by section layouts. Let us see sections for binaries before/after strip(1): ``` % readelf -l static.245 [Nr] Name Type Address Offset Size EntSize Flags Link Info Align ... [ 4] .rodata PROGBITS 000000000049f000 0009f000 0000000000006ac8 0000000000000000 A 0 0 32 [ 5] .eh_frame PROGBITS 00000000004a5ac8 000a5ac8 000000000000d7d4 0000000000000000 A 0 0 8 [ 6] .note.netbsd[...] NOTE 00000000004b329c 000b329c 0000000000000018 0000000000000000 A 0 0 4 ... % readelf -l static.245.stripped ... [ 4] .rodata PROGBITS 000000000049f000 0009f000 0000000000006ac8 0000000000000000 A 0 0 32 [ 5] .note.netbsd[...] NOTE 00000000004b329c 000b329c 0000000000000018 0000000000000000 A 0 0 4 ... ``` Here, offset of .note.netbsd.ident is not changed even though .eh_frame is stripped. hexdump(1) shows that .eh_frame section is zero-cleared for stripped binary. ``` % hexdump -C static.245.stripped ... 000a5ac0 75 d4 fe ff 5d d6 fe ff 00 00 00 00 00 00 00 00 |u...]...........| 000a5ad0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000b3290 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 |................| 000b32a0 04 00 00 00 01 00 00 00 4e 65 74 42 53 44 00 00 |........NetBSD..| ... ``` strip(1) cannot remove .eh_frame because .note.netbsd.ident is behind .eh_frame, and offset of the former should be conserved. Note that for statically-linked binaries, .eh_frame_hdr is not present, but it is for dynamically-linked binaries. -- You are receiving this mail because: You are on the CC list for the bug.