The produced file sometimes have a 2MB zeroed gap between sections. Actual results: -rwxr-xr-x 1 root root 2475480 Aug 7 17:12 cups-1.3.7-2.x86_64/usr/sbin/cupsd*
Expected results: -rwxr-xr-x 1 root root 355264 May 13 13:14 /usr/sbin/cupsd* Additional info: Section Headers: [Nr] Name Type Addr Off Size ES Flags Lk Inf Al ... [15] .eh_frame_hdr PROGBITS 0000000000056830 00056830 00000944 0 A 0 0 4 [16] .eh_frame PROGBITS 0000000000057178 00057178 00002a5c 0 A 0 0 8 [17] .ctors PROGBITS 0000000000259bd0 00259bd0 00000010 0 WA 0 0 8 [18] .dtors PROGBITS 0000000000259be0 00259be0 00000010 0 WA 0 0 8 On Thu, 07 Aug 2008 16:55:23 +0200, Ulrich Drepper wrote: ------------------------------------------------------------------------ This looks like a linker bug. The .ctors section has to be on a separate page (given the page size assumed for the binary, which is 2M) because it is the first writable section. But this doesn't mean that the same offset has to be used in the binary itself. In fact, what should happen is exactly what you see in the other file, namely, the the address and file offset differ in the resulting file. ------------------------------------------------------------------------ .eh_frame ends at 0x59bd4 but .ctors starts at 0x259bd0. This makes the runtime mapping overlap and a whole MAXPAGE (2MB) range gets inserted into the file. It is because lang_size_sections() condition if (expld.dataseg.base - (1 << max_alignment_power) < old_min_base) expld.dataseg.base += expld.dataseg.pagesize; does not work as OLD_MIN_BASE is there 0x200000 and for example (0x259bec - 32) can never get under it. Fixed OLD_MIN_BASE in the attached patch to ensure a positive gap size for the runtime. -- Summary: Linker sometimes produces 2MB section gap Product: binutils Version: 2.19 (HEAD) Status: NEW Severity: minor Priority: P3 Component: ld AssignedTo: jan dot kratochvil at redhat dot com ReportedBy: jan dot kratochvil at redhat dot com CC: bug-binutils at gnu dot org GCC build triplet: x86_64-unknown-linux-gnu GCC host triplet: x86_64-unknown-linux-gnu GCC target triplet: x86_64-unknown-linux-gnu http://sourceware.org/bugzilla/show_bug.cgi?id=6833 ------- You are receiving this mail because: ------- You are on the CC list for the bug, or are watching someone who is. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-binutils