From e427836cc6f3e07aea350385e281e845cb3d7ad1 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Fri, 21 Feb 2014 21:34:16 +0000 Subject: [PATCH] * cygwin.sc.in: More closely emulate default pe/i386 linker script. --- winsup/cygwin/ChangeLog | 4 ++++ winsup/cygwin/cygwin.sc.in | 44 ++++++++++++++++++++++---------------- 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 95667c751..56e580669 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -33,6 +33,10 @@ when !winpid. Simplify logic. Don't do duplicate detection for winpid. +2014-02-11 Christopher Faylor + + * cygwin.sc.in: More closely emulate default pe/i386 linker script. + 2014-02-10 Corinna Vinschen * cygheap.cc (cwcsdup): Change parameter to correct PWCSTR. diff --git a/winsup/cygwin/cygwin.sc.in b/winsup/cygwin/cygwin.sc.in index db64a80e4..279da858f 100644 --- a/winsup/cygwin/cygwin.sc.in +++ b/winsup/cygwin/cygwin.sc.in @@ -59,9 +59,17 @@ SECTIONS { *(.rdata) *(SORT(.rdata$*)) - *(.eh_frame) *(.rdata_cygwin_nocopy) + __rt_psrelocs_start = .; + *(.rdata_runtime_pseudo_reloc) + __rt_psrelocs_end = .; + } + __rt_psrelocs_size = __rt_psrelocs_end - __rt_psrelocs_start; + ___RUNTIME_PSEUDO_RELOC_LIST_END__ = .; + __RUNTIME_PSEUDO_RELOC_LIST_END__ = .; + ___RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size; + __RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size; .eh_frame ALIGN(__section_alignment__) : { *(.eh_frame*) @@ -87,11 +95,6 @@ SECTIONS { *(.edata) } - .rsrc BLOCK(__section_alignment__) : - { - *(.rsrc) - *(SORT(.rsrc$*)) - } .reloc BLOCK(__section_alignment__) : { *(.reloc) @@ -100,6 +103,20 @@ SECTIONS { *(.cygwin_dll_common) } + .idata ALIGN(__section_alignment__) : + { + /* This cannot currently be handled with grouped sections. + See pe.em:sort_sections. */ + SORT(*)(.idata$2) + 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) + SORT(*)(.idata$5) + SORT(*)(.idata$6) + SORT(*)(.idata$7) + . = ALIGN(16); + } .gnu_debuglink_overlay ALIGN(__section_alignment__) (NOLOAD): { BYTE(0) /* c */ @@ -116,19 +133,10 @@ SECTIONS BYTE(0) /* \0 */ LONG(0) /* checksum */ } - .idata ALIGN(__section_alignment__) : + .rsrc BLOCK(__section_alignment__) : { - /* This cannot currently be handled with grouped sections. - See pe.em:sort_sections. */ - SORT(*)(.idata$2) - 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) - SORT(*)(.idata$5) - SORT(*)(.idata$6) - SORT(*)(.idata$7) - . = ALIGN(16); + *(.rsrc) + *(SORT(.rsrc$*)) _SYM (_cygheap_start) = ABSOLUTE(.); } .cygheap ALIGN(__section_alignment__) :