aboutsummaryrefslogtreecommitdiff
path: root/ld/scripttempl/pe.sc
diff options
context:
space:
mode:
Diffstat (limited to 'ld/scripttempl/pe.sc')
-rw-r--r--ld/scripttempl/pe.sc34
1 files changed, 23 insertions, 11 deletions
diff --git a/ld/scripttempl/pe.sc b/ld/scripttempl/pe.sc
index 59ce042..6cf59ea 100644
--- a/ld/scripttempl/pe.sc
+++ b/ld/scripttempl/pe.sc
@@ -39,12 +39,25 @@ if test "${RELOCATING}"; then
R_CRT_XP='*(SORT(.CRT$XP*)) /* Pre-termination */'
R_CRT_XT='*(SORT(.CRT$XT*)) /* Termination */'
R_TLS='
- *(.tls$AAA)
+ *(.tls$AAA)
*(.tls)
*(.tls$)
*(SORT(.tls$*))
*(.tls$ZZZ)'
- R_RSRC='*(SORT(.rsrc$*))'
+ if test -z "$DEFAULT_MANIFEST"; then
+ R_RSRC='
+ *(.rsrc)
+ *(SORT(.rsrc$*))'
+ else
+ R_RSRC="
+ /* The default manifest contains information necessary for
+ binaries to run under Windows 8 (or later). It is included as
+ the last resource file so that if the application has provided
+ its own manifest then that one will take precedence. */
+ *(EXCLUDE_FILE ($DEFAULT_MANIFEST) .rsrc)
+ *(SORT(.rsrc*))
+ KEEP ($DEFAULT_MANIFEST(.rsrc))"
+ fi
else
R_TEXT=
R_DATA=
@@ -53,7 +66,7 @@ else
R_IDATA5=
R_IDATA67=
R_CRT=
- R_RSRC=
+ R_RSRC='*(.rsrc)'
fi
cat <<EOF
@@ -69,7 +82,7 @@ SECTIONS
${RELOCATING+ lower than the target page size. */}
${RELOCATING+. = SIZEOF_HEADERS;}
${RELOCATING+. = ALIGN(__section_alignment__);}
- .text ${RELOCATING+ __image_base__ + ( __section_alignment__ < ${TARGET_PAGE_SIZE} ? . : __section_alignment__ )} :
+ .text ${RELOCATING+ __image_base__ + ( __section_alignment__ < ${TARGET_PAGE_SIZE} ? . : __section_alignment__ )} :
{
${RELOCATING+ *(.init)}
*(.text)
@@ -78,9 +91,9 @@ SECTIONS
${RELOCATING+ *(.gnu.linkonce.t.*)}
*(.glue_7t)
*(.glue_7)
- ${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
+ ${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
LONG (-1);*(.ctors); *(.ctor); *(SORT(.ctors.*)); LONG (0); }
- ${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
+ ${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
LONG (-1); *(.dtors); *(.dtor); *(SORT(.dtors.*)); LONG (0); }
${RELOCATING+ *(.fini)}
/* ??? Why is .gcc_exc here? */
@@ -96,7 +109,7 @@ SECTIONS
breaks building the cygwin32 dll. Instead, we name the section
".data_cygwin_nocopy" and explicitly include it after __data_end__. */
- .data ${RELOCATING+BLOCK(__section_alignment__)} :
+ .data ${RELOCATING+BLOCK(__section_alignment__)} :
{
${RELOCATING+__data_start__ = . ;}
*(.data)
@@ -202,13 +215,12 @@ SECTIONS
}
.rsrc ${RELOCATING+BLOCK(__section_alignment__)} :
- {
- *(.rsrc)
+ {
${R_RSRC}
}
.reloc ${RELOCATING+BLOCK(__section_alignment__)} :
- {
+ {
*(.reloc)
}
@@ -226,7 +238,7 @@ SECTIONS
Symbols in the DWARF debugging sections are relative to the beginning
of the section. Unlike other targets that fake this by putting the
section VMA at 0, the PE format will not allow it. */
-
+
/* DWARF 1.1 and DWARF 2. */
.debug_aranges ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
{