# Linker script for PE.
#
-# Copyright (C) 2014-2016 Free Software Foundation, Inc.
-#
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
+#
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved.
R_TEXT='*(SORT(.text$*))'
if test "x$LD_FLAG" = "xauto_import" ; then
R_DATA='*(SORT(.data$*))
- *(.rdata)
+ *(.rdata)
*(SORT(.rdata$*))'
R_RDATA=''
else
R_DATA='*(SORT(.data$*))'
R_RDATA='*(.rdata)
- *(SORT(.rdata$*))'
+ *(SORT(.rdata$*))'
fi
R_IDATA234='
KEEP (SORT(*)(.idata$2))
R_IDATA234=
R_IDATA5=
R_IDATA67=
- R_CRT=
+ R_CRT_XC=
+ R_CRT_XI=
+ R_CRT_XL=
+ R_CRT_XP=
+ R_CRT_XT=
+ R_TLS='*(.tls)'
R_RSRC='*(.rsrc)'
fi
cat <<EOF
-/* Copyright (C) 2014-2016 Free Software Foundation, Inc.
+/* Copyright (C) 2014-2018 Free Software Foundation, Inc.
Copying and distribution of this script, with or without modification,
are permitted in any medium without royalty provided the copyright
${R_TEXT}
${RELOCATING+ *(.text.*)}
${RELOCATING+ *(.gnu.linkonce.t.*)}
- *(.glue_7t)
- *(.glue_7)
- ${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
- LONG (-1);*(.ctors); *(.ctor); *(SORT(.ctors.*)); LONG (0); }
- ${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
- LONG (-1); *(.dtors); *(.dtor); *(SORT(.dtors.*)); LONG (0); }
- ${RELOCATING+ *(.fini)}
+ ${RELOCATING+*(.glue_7t)}
+ ${RELOCATING+*(.glue_7)}
+ ${CONSTRUCTING+
+ PROVIDE(___CTOR_LIST__ = .);
+ PROVIDE(__CTOR_LIST__ = .);
+ LONG (-1);
+ KEEP(*(.ctors));
+ KEEP(*(.ctor));
+ KEEP(*(SORT_BY_NAME(.ctors.*)));
+ LONG (0);
+ }
+ ${CONSTRUCTING+
+ PROVIDE(___DTOR_LIST__ = .);
+ PROVIDE(__DTOR_LIST__ = .);
+ LONG (-1);
+ KEEP(*(.dtors));
+ KEEP(*(.dtor));
+ KEEP(*(SORT_BY_NAME(.dtors.*)));
+ LONG (0);
+ }
+ ${RELOCATING+ KEEP (*(.fini))}
/* ??? Why is .gcc_exc here? */
${RELOCATING+ *(.gcc_exc)}
${RELOCATING+PROVIDE (etext = .);}
${RELOCATING+PROVIDE (_etext = .);}
- ${RELOCATING+ *(.gcc_except_table)}
+ ${RELOCATING+ KEEP (*(.gcc_except_table))}
}
/* The Cygwin32 library uses a section to avoid copying certain data
{
${RELOCATING+__data_start__ = . ;}
*(.data)
- *(.data2)
+ ${RELOCATING+*(.data2)}
${R_DATA}
KEEP(*(.jcr))
${RELOCATING+__data_end__ = . ;}
{
${R_RDATA}
${RELOCATING+__rt_psrelocs_start = .;}
- *(.rdata_runtime_pseudo_reloc)
+ ${RELOCATING+KEEP(*(.rdata_runtime_pseudo_reloc))}
${RELOCATING+__rt_psrelocs_end = .;}
}
${RELOCATING+__rt_psrelocs_size = __rt_psrelocs_end - __rt_psrelocs_start;}
.eh_frame ${RELOCATING+BLOCK(__section_alignment__)} :
{
- KEEP(*(.eh_frame*))
+ KEEP(*(.eh_frame${RELOCATING+*}))
}
.pdata ${RELOCATING+BLOCK(__section_alignment__)} :
{
- KEEP(*(.pdata))
+ KEEP(*(.pdata${RELOCATING+*}))
}
.bss ${RELOCATING+BLOCK(__section_alignment__)} :
${R_IDATA67}
}
.CRT ${RELOCATING+BLOCK(__section_alignment__)} :
- {
+ {
${RELOCATING+___crt_xc_start__ = . ;}
${R_CRT_XC}
${RELOCATING+___crt_xc_end__ = . ;}
be at the beginning of the section to enable SECREL32 relocations with TLS
data. */
.tls ${RELOCATING+BLOCK(__section_alignment__)} :
- {
+ {
${RELOCATING+___tls_start__ = . ;}
${R_TLS}
${RELOCATING+___tls_end__ = . ;}
{
*(.zdebug_types${RELOCATING+ .gnu.linkonce.wt.*})
}
+
+ /* For Go and Rust. */
+ .debug_gdb_scripts ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
+ {
+ *(.debug_gdb_scripts)
+ }
+ .zdebug_gdb_scripts ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
+ {
+ *(.zdebug_gdb_scripts)
+ }
}
EOF