This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

PE ld -r script fixes


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]