Ravenscar port for RISC-V
[deliverable/binutils-gdb.git] / ld / scripttempl / ppcpe.sc
index 40fbe33bb79e99000f3b369fcd242583657274ab..38920a17b6f8d79fafeea7ba9852e0fd4b528989 100644 (file)
@@ -2,48 +2,58 @@
 # Loosely based on Steve Chamberlain's pe.sc.
 # All new mistakes should be credited to Kim Knuttila (krk@cygnus.com)
 #
-# These are substituted in as variables in order to get '}' in a shell
-# conditional expansion.
-INIT='.init : { *(.init) }'
-FINI='.fini : { *(.fini) }'
+# Copyright (C) 2014-2019 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.
+#
+
 cat <<EOF
+/* Copyright (C) 2014-2019 Free Software Foundation, Inc.
+
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
+
 OUTPUT_FORMAT(${OUTPUT_FORMAT})
 ${LIB_SEARCH_DIRS}
 
 /* Much of this layout was determined by delving into .exe files for
    the box generated by other compilers/linkers/etc. This means that
-   if a particular feature did not happen to appear in one of the 
+   if a particular feature did not happen to appear in one of the
    subject files, then it may not be yet supported.
 */
 
 /* It's "mainCRTStartup", not "_mainCRTStartup", and it's located in
    one of the two .lib files (libc.lib and kernel32.lib) that currently
-   must be present on the link line. This means that you must use 
+   must be present on the link line. This means that you must use
    "-u mainCRTStartup" to make sure it gets included in the link.
 */
 
-ENTRY(mainCRTStartup)
+${RELOCATING+ENTRY (mainCRTStartup)}
 
 SECTIONS
 {
 
   /* text - the usual meaning */
-  .text ${RELOCATING+ __image_base__ + __section_alignment__ } : 
+  .text ${RELOCATING+ __image_base__ + __section_alignment__ } :
        {
-           ${RELOCATING+ *(.init);}
+           ${RELOCATING+ KEEP (*(SORT_NONE(.init)))}
            *(.text)
+           ${RELOCATING+ *(.text.*)}
            *(.gcc_except_table)
-           ${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ; 
-                       LONG (-1); *(.ctors); *(.ctor); LONG (0); }
-            ${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ; 
-                       LONG (-1); *(.dtors); *(.dtor);  LONG (0); }
-           ${RELOCATING+ *(.fini);}
-           ${RELOCATING+ etext  =  .};
+           ${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
+                       LONG (-1); *(.ctors); *(.ctor); LONG (0); }
+           ${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
+                       LONG (-1); *(.dtors); *(.dtor); LONG (0); }
+           ${RELOCATING+ KEEP (*(SORT_NONE(.fini)))}
+           ${RELOCATING+ etext = .};
        }
 
   /* rdata - Read Only Runtime Data
-     CTR sections: All of the CRT (read only C runtime data) sections 
-       appear at the start of the .rdata (read only runtime data) 
+     CTR sections: All of the CRT (read only C runtime data) sections
+       appear at the start of the .rdata (read only runtime data)
        section, in the following order. Don't know if it matters or not.
        Not all sections are always present either.
      .rdata: compiler generated read only data
@@ -73,7 +83,7 @@ SECTIONS
 
   .edata BLOCK(__section_alignment__) :
        {
-           *(.edata);
+           *(.edata);
        }
 
   /* data - initialized data
@@ -84,9 +94,9 @@ SECTIONS
        section, as opposed to being given a section of it's own.
      COMMON:
   */
-  .data BLOCK(__section_alignment__) : 
+  .data BLOCK(__section_alignment__) :
        {
-           __data_start__ = . ; 
+           __data_start__ = . ;
            *(.ydata);
            *(.data);
            *(.data2);
@@ -95,19 +105,19 @@ SECTIONS
            *(COMMON);
            __bss_end__ = . ;
            ${RELOCATING+ end =  .};
-           __data_end__ = . ; 
+           __data_end__ = . ;
        }
 
   /* The exception handling table. A sequence of 5 word entries. Section
      address and extent are placed in the DataDirectory.
   */
   .pdata BLOCK(__section_alignment__) :
-       {                                       
+       {
            *(.pdata)
-           ;
+           ;
        }
 
-  /* The idata section is chock full of magic bits. 
+  /* The idata section is chock full of magic bits.
        1. Boundaries around various idata parts are used to initialize
           some of the fields of the DataDirectory. In particular, the
           magic for 2, 4 and 5 are known to be used. Some compilers
@@ -118,7 +128,7 @@ SECTIONS
           The ".private.toc" sections are generated by the ppc bfd. The
           .toc variable is generated by gas, and resolved here. It is
           used to initialized function descriptors (and anyone else who
-          needs the address of the module's toc). The only thing 
+          needs the address of the module's toc). The only thing
           interesting about it at all? Most ppc instructions using it
           have a 16bit displacement field. The convention for addressing
           is to initialize the .toc value to 32K past the start of the
@@ -127,7 +137,7 @@ SECTIONS
           on this number or you get pretty stupid results.
   */
   .idata BLOCK(__section_alignment__) :
-       {                                       
+       {
            __idata2_magic__ = .;
            *(.idata\$2);
            __idata3_magic__ = .;
@@ -149,21 +159,21 @@ SECTIONS
   /* reldata -- data that requires relocation
   */
   .reldata BLOCK(__section_alignment__) :
-       {                                       
+       {
            *(.reldata)
-           ;
+           ;
        }
 
 
   /* Resources */
   .rsrc BLOCK(__section_alignment__) :
-       {                                       
+       {
            *(.rsrc\$01)
            *(.rsrc\$02)
            ;
        }
 
-  .stab BLOCK(__section_alignment__)  ${RELOCATING+(NOLOAD)} : 
+  .stab BLOCK(__section_alignment__)  ${RELOCATING+(NOLOAD)} :
   {
     [ .stab ]
   }
@@ -173,26 +183,26 @@ SECTIONS
     [ .stabstr ]
   }
 
-  /* The .reloc section is currently generated by the dlltool from Steve 
+  /* The .reloc section is currently generated by the dlltool from Steve
      Chamberlain in a second pass of linking. Section address and extent
      are placed in the DataDirectory.
   */
   .reloc BLOCK(__section_alignment__) :
-       {                                       
+       {
            *(.reloc)
            ;
        }
 
   /* We don't do anything useful with codeview debugger support or the
-     directive section (yet). Hopefully, we junk them correctly. 
+     directive section (yet). Hopefully, we junk them correctly.
   */
-  /DISCARD/ BLOCK(__section_alignment__) : 
+  /DISCARD/ BLOCK(__section_alignment__) :
        {
-           *(.debug\$S)
-           *(.debug\$T)
-           *(.debug\$F)
-           *(.drectve)
-           ;
-       }
+           *(.debug\$S)
+           *(.debug\$T)
+           *(.debug\$F)
+           *(.drectve)
+           ;
+       }
 }
 EOF
This page took 0.031342 seconds and 4 git commands to generate.