--- binutils-2.21.1/ld/scripttempl/pe.sc 2011-06-27 16:39:14.000000000 +0900 +++ binutils-2.21.1.coff-gc/ld/scripttempl/pe.sc 2011-10-05 12:28:07.000000000 +0900 @@ -24,25 +24,25 @@ *(SORT(.rdata$*))' fi R_IDATA234=' - SORT(*)(.idata$2) - SORT(*)(.idata$3) + KEEP(SORT(*)(.idata$2)) + KEEP(SORT(*)(.idata$3)) /* These zeroes mark the end of the import list. */ LONG (0); LONG (0); LONG (0); LONG (0); LONG (0); - SORT(*)(.idata$4)' - R_IDATA5='SORT(*)(.idata$5)' + KEEP(SORT(*)(.idata$4))' + R_IDATA5='KEEP(SORT(*)(.idata$5))' R_IDATA67=' - SORT(*)(.idata$6) - SORT(*)(.idata$7)' - R_CRT_XC='*(SORT(.CRT$XC*)) /* C initialization */' - R_CRT_XI='*(SORT(.CRT$XI*)) /* C++ initialization */' - R_CRT_XL='*(SORT(.CRT$XL*)) /* TLS callbacks */' - R_CRT_XP='*(SORT(.CRT$XP*)) /* Pre-termination */' - R_CRT_XT='*(SORT(.CRT$XT*)) /* Termination */' + KEEP(SORT(*)(.idata$6)) + KEEP(SORT(*)(.idata$7))' + R_CRT_XC='KEEP(*(SORT(.CRT$XC*))) /* C initialization */' + R_CRT_XI='KEEP(*(SORT(.CRT$XI*))) /* C++ initialization */' + R_CRT_XL='KEEP(*(SORT(.CRT$XL*))) /* TLS callbacks */' + R_CRT_XP='KEEP(*(SORT(.CRT$XP*))) /* Pre-termination */' + R_CRT_XT='KEEP(*(SORT(.CRT$XT*))) /* Termination */' R_TLS=' - *(.tls) - *(.tls$) - *(SORT(.tls$*))' - R_RSRC='*(SORT(.rsrc$*))' + KEEP(*(.tls)) + KEEP(*(.tls$)) + KEEP(*(SORT(.tls$*)))' + R_RSRC='KEEP(*(SORT(.rsrc$*)))' else R_TEXT= R_DATA= @@ -69,17 +69,17 @@ ${RELOCATING+. = ALIGN(__section_alignment__);} .text ${RELOCATING+ __image_base__ + ( __section_alignment__ < ${TARGET_PAGE_SIZE} ? . : __section_alignment__ )} : { - ${RELOCATING+ *(.init)} + ${RELOCATING+ KEEP(*(.init))} *(.text) ${R_TEXT} ${RELOCATING+ *(.text.*)} *(.glue_7t) *(.glue_7) ${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ; - LONG (-1);*(.ctors); *(.ctor); *(SORT(.ctors.*)); LONG (0); } + LONG (-1); KEEP(*(.ctors)); KEEP(*(.ctor)); KEEP(*(SORT(.ctors.*))); LONG (0); } ${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ; - LONG (-1); *(.dtors); *(.dtor); *(SORT(.dtors.*)); LONG (0); } - ${RELOCATING+ *(.fini)} + LONG (-1); KEEP(*(.dtors)); KEEP(*(.dtor)); KEEP(*(SORT(.dtors.*))); LONG (0); } + ${RELOCATING+ KEEP(*(.fini))} /* ??? Why is .gcc_exc here? */ ${RELOCATING+ *(.gcc_exc)} ${RELOCATING+PROVIDE (etext = .);} @@ -98,7 +98,7 @@ *(.data) *(.data2) ${R_DATA} - *(.jcr) + KEEP(*(.jcr)) ${RELOCATING+__data_end__ = . ;} ${RELOCATING+*(.data_cygwin_nocopy)} } @@ -195,7 +195,7 @@ .rsrc ${RELOCATING+BLOCK(__section_alignment__)} : { - *(.rsrc) + KEEP(*(.rsrc)) ${R_RSRC} }