2010-09-22 Kai Tietz <kai.tietz@onevision.com>
[deliverable/binutils-gdb.git] / ld / scripttempl / pe.sc
index 91c6c554484c6bd67987c6818a0e960c37785b43..e178fce0d3b1d0ee36697968d84a4cab29de96e6 100644 (file)
@@ -13,18 +13,31 @@ fi
 # use grouped sections instead).
 if test "${RELOCATING}"; then
   R_TEXT='*(SORT(.text$*))'
-  R_DATA='*(SORT(.data$*))'
-  R_RDATA='*(SORT(.rdata$*))'
-  R_IDATA='
+  if test "x$LD_FLAG" = "xauto_import" ; then
+    R_DATA='*(SORT(.data$*))
+            *(.rdata)
+           *(SORT(.rdata$*))'
+    R_RDATA=''
+  else
+    R_DATA='*(SORT(.data$*))'
+    R_RDATA='*(.rdata)
+             *(SORT(.rdata$*))'
+  fi
+  R_IDATA234='
     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$4)'
+  R_IDATA5='SORT(*)(.idata$5)'
+  R_IDATA67='
     SORT(*)(.idata$6)
     SORT(*)(.idata$7)'
-  R_CRT='*(SORT(.CRT$*))'
+  R_CRT_XC='*(SORT(.CRT$XC*))  /* C initialization */'
+  R_CRT_XI='*(SORT(.CRT$XI*))  /* C++ initialization */'
+  R_CRT_XL='*(SORT(.CRT$XL*))  /* TLS callbacks */'
+  R_CRT_XP='*(SORT(.CRT$XP*))  /* Pre-termination */'
+  R_CRT_XT='*(SORT(.CRT$XT*))  /* Termination */'
   R_TLS='
     *(.tls)
     *(.tls$)
@@ -33,8 +46,10 @@ if test "${RELOCATING}"; then
 else
   R_TEXT=
   R_DATA=
-  R_RDATA=
-  R_IDATA=
+  R_RDATA='*(.rdata)'
+  R_IDATA234=
+  R_IDATA5=
+  R_IDATA67=
   R_CRT=
   R_RSRC=
 fi
@@ -46,15 +61,18 @@ ${OUTPUT_ARCH+OUTPUT_ARCH(${OUTPUT_ARCH})}
 
 ${LIB_SEARCH_DIRS}
 
-ENTRY(${ENTRY})
-
 SECTIONS
 {
-  .text ${RELOCATING+ __image_base__ + __section_alignment__ } : 
+  ${RELOCATING+/* Make the virtual address and file offset synced if the alignment is}
+  ${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__ )} : 
   {
     ${RELOCATING+ *(.init)}
     *(.text)
     ${R_TEXT}
+    ${RELOCATING+ *(.text.*)}
     *(.glue_7t)
     *(.glue_7)
     ${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ; 
@@ -65,7 +83,7 @@ SECTIONS
     /* ??? Why is .gcc_exc here?  */
     ${RELOCATING+ *(.gcc_exc)}
     ${RELOCATING+PROVIDE (etext = .);}
-    *(.gcc_except_table)
+    ${RELOCATING+ *(.gcc_except_table)}
   }
 
   /* The Cygwin32 library uses a section to avoid copying certain data
@@ -80,15 +98,14 @@ SECTIONS
     *(.data)
     *(.data2)
     ${R_DATA}
+    *(.jcr)
     ${RELOCATING+__data_end__ = . ;}
     ${RELOCATING+*(.data_cygwin_nocopy)}
   }
 
   .rdata ${RELOCATING+BLOCK(__section_alignment__)} :
   {
-    *(.rdata)
     ${R_RDATA}
-    *(.eh_frame)
     ${RELOCATING+___RUNTIME_PSEUDO_RELOC_LIST__ = .;}
     ${RELOCATING+__RUNTIME_PSEUDO_RELOC_LIST__ = .;}
     *(.rdata_runtime_pseudo_reloc)
@@ -96,6 +113,11 @@ SECTIONS
     ${RELOCATING+__RUNTIME_PSEUDO_RELOC_LIST_END__ = .;}
   }
 
+  .eh_frame ${RELOCATING+BLOCK(__section_alignment__)} :
+  {
+    *(.eh_frame)
+  }
+
   .pdata ${RELOCATING+BLOCK(__section_alignment__)} :
   {
     *(.pdata)
@@ -120,22 +142,44 @@ SECTIONS
     *(.debug\$T)
     *(.debug\$F)
     *(.drectve)
+    ${RELOCATING+ *(.note.GNU-stack)}
+    ${RELOCATING+ *(.gnu.lto_*)}
   }
 
   .idata ${RELOCATING+BLOCK(__section_alignment__)} :
   {
     /* This cannot currently be handled with grouped sections.
        See pe.em:sort_sections.  */
-    ${R_IDATA}
+    ${R_IDATA234}
+    ${RELOCATING+__IAT_start__ = .;}
+    ${R_IDATA5}
+    ${RELOCATING+__IAT_end__ = .;}
+    ${R_IDATA67}
   }
   .CRT ${RELOCATING+BLOCK(__section_alignment__)} :
   {                                    
-    ${R_CRT}
+    ${RELOCATING+___crt_xc_start__ = . ;}
+    ${R_CRT_XC}
+    ${RELOCATING+___crt_xc_end__ = . ;}
+    ${RELOCATING+___crt_xi_start__ = . ;}
+    ${R_CRT_XI}
+    ${RELOCATING+___crt_xi_end__ = . ;}
+    ${RELOCATING+___crt_xl_start__ = . ;}
+    ${R_CRT_XL}
+    /* ___crt_xl_end__ is defined in the TLS Directory support code */
+    ${RELOCATING+___crt_xp_start__ = . ;}
+    ${R_CRT_XP}
+    ${RELOCATING+___crt_xp_end__ = . ;}
+    ${RELOCATING+___crt_xt_start__ = . ;}
+    ${R_CRT_XT}
+    ${RELOCATING+___crt_xt_end__ = . ;}
   }
 
   .tls ${RELOCATING+BLOCK(__section_alignment__)} :
   {                                    
+    ${RELOCATING+___tls_start__ = . ;}
     ${R_TLS}
+    ${RELOCATING+___tls_end__ = . ;}
   }
 
   .endjunk ${RELOCATING+BLOCK(__section_alignment__)} :
@@ -159,13 +203,96 @@ SECTIONS
 
   .stab ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
   {
-    [ .stab ]
+    *(.stab)
   }
 
   .stabstr ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
   {
-    [ .stabstr ]
+    *(.stabstr)
+  }
+
+  /* DWARF debug 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)} :
+  {
+    *(.debug_aranges)
+  }
+
+  .debug_pubnames ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
+  {
+    *(.debug_pubnames)
+  }
+
+  .debug_pubtypes ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
+  {
+    *(.debug_pubtypes)
+  }
+
+  /* DWARF 2.  */
+  .debug_info ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
+  {
+    *(.debug_info) *(.gnu.linkonce.wi.*)
+  }
+
+  .debug_abbrev ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
+  {
+    *(.debug_abbrev)
+  }
+
+  .debug_line ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
+  {
+    *(.debug_line)
+  }
+
+  .debug_frame ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
+  {
+    *(.debug_frame)
   }
 
+  .debug_str ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
+  {
+    *(.debug_str)
+  }
+
+  .debug_loc ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
+  {
+    *(.debug_loc)
+  }
+
+  .debug_macinfo ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
+  {
+    *(.debug_macinfo)
+  }
+
+  /* SGI/MIPS DWARF 2 extensions.  */
+  .debug_weaknames ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
+  {
+    *(.debug_weaknames)
+  }
+
+  .debug_funcnames ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
+  {
+    *(.debug_funcnames)
+  }
+
+  .debug_typenames ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
+  {
+    *(.debug_typenames)
+  }
+
+  .debug_varnames ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
+  {
+    *(.debug_varnames)
+  }
+
+  /* DWARF 3.  */
+  .debug_ranges ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
+  {
+    *(.debug_ranges)
+  }
 }
 EOF
This page took 0.02483 seconds and 4 git commands to generate.