This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
PE ld -r script fixes
- From: Alan Modra <amodra at gmail dot com>
- To: Nick Clifton <nickc at redhat dot com>
- Cc: binutils at sourceware dot org
- Date: Mon, 20 Feb 2017 21:06:10 +1030
- Subject: PE ld -r script fixes
- Authentication-results: sourceware.org; auth=none
Hi Nick,
I think this patch is good, but I don't play regularly with COFF/PE so
I'd like your OK before applying.
diff --git a/ld/ChangeLog b/ld/ChangeLog
index d02d009..aa1c84c 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,5 +1,11 @@
2017-02-17 Alan Modra <amodra@gmail.com>
+ PR 15041
+ * scripttempl/pe.sc: Don't combine sections for ld -r.
+ * scripttempl/pep.sc: Likewise.
+
+2017-02-17 Alan Modra <amodra@gmail.com>
+
PR 20199
* emulparams/elf32m32c.sh: Define STACK_ADDR and STACK_SENTINEL
rather than using OTHER_SECTIONS.
diff --git a/ld/scripttempl/pe.sc b/ld/scripttempl/pe.sc
index ef9e76c..9981848 100644
--- a/ld/scripttempl/pe.sc
+++ b/ld/scripttempl/pe.sc
@@ -60,7 +60,12 @@ else
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
@@ -90,8 +95,8 @@ SECTIONS
${R_TEXT}
${RELOCATING+ *(.text.*)}
${RELOCATING+ *(.gnu.linkonce.t.*)}
- *(.glue_7t)
- *(.glue_7)
+ ${RELOCATING+*(.glue_7t)}
+ ${RELOCATING+*(.glue_7)}
${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
LONG (-1);*(.ctors); *(.ctor); *(SORT(.ctors.*)); LONG (0); }
${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
@@ -114,7 +119,7 @@ SECTIONS
{
${RELOCATING+__data_start__ = . ;}
*(.data)
- *(.data2)
+ ${RELOCATING+*(.data2)}
${R_DATA}
KEEP(*(.jcr))
${RELOCATING+__data_end__ = . ;}
@@ -125,7 +130,7 @@ SECTIONS
{
${R_RDATA}
${RELOCATING+__rt_psrelocs_start = .;}
- KEEP(*(.rdata_runtime_pseudo_reloc))
+ ${RELOCATING+KEEP(*(.rdata_runtime_pseudo_reloc))}
${RELOCATING+__rt_psrelocs_end = .;}
}
${RELOCATING+__rt_psrelocs_size = __rt_psrelocs_end - __rt_psrelocs_start;}
@@ -136,12 +141,12 @@ SECTIONS
.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__)} :
diff --git a/ld/scripttempl/pep.sc b/ld/scripttempl/pep.sc
index a972942..16dc57f 100644
--- a/ld/scripttempl/pep.sc
+++ b/ld/scripttempl/pep.sc
@@ -60,7 +60,12 @@ else
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
@@ -90,8 +95,8 @@ SECTIONS
${R_TEXT}
${RELOCATING+ *(.text.*)}
${RELOCATING+ *(.gnu.linkonce.t.*)}
- *(.glue_7t)
- *(.glue_7)
+ ${RELOCATING+*(.glue_7t)}
+ ${RELOCATING+*(.glue_7)}
${CONSTRUCTING+. = ALIGN(8);}
${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
LONG (-1); LONG (-1);
@@ -122,7 +127,7 @@ SECTIONS
{
${RELOCATING+__data_start__ = . ;}
*(.data)
- *(.data2)
+ ${RELOCATING+*(.data2)}
${R_DATA}
KEEP(*(.jcr))
${RELOCATING+__data_end__ = . ;}
@@ -133,7 +138,7 @@ SECTIONS
{
${R_RDATA}
${RELOCATING+__rt_psrelocs_start = .;}
- KEEP(*(.rdata_runtime_pseudo_reloc))
+ ${RELOCATING+KEEP(*(.rdata_runtime_pseudo_reloc))}
${RELOCATING+__rt_psrelocs_end = .;}
}
${RELOCATING+__rt_psrelocs_size = __rt_psrelocs_end - __rt_psrelocs_start;}
@@ -144,17 +149,17 @@ SECTIONS
.eh_frame ${RELOCATING+BLOCK(__section_alignment__)} :
{
- KEEP (*(.eh_frame*))
+ KEEP (*(.eh_frame${RELOCATING+*}))
}
.pdata ${RELOCATING+BLOCK(__section_alignment__)} :
{
- KEEP(*(.pdata*))
+ KEEP(*(.pdata${RELOCATING+*}))
}
.xdata ${RELOCATING+BLOCK(__section_alignment__)} :
{
- KEEP(*(.xdata*))
+ KEEP(*(.xdata${RELOCATING+*}))
}
.bss ${RELOCATING+BLOCK(__section_alignment__)} :
--
Alan Modra
Australia Development Lab, IBM