]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - ld/scripttempl/elf32cr16.sc
Update year range in copyright notice of binutils files
[thirdparty/binutils-gdb.git] / ld / scripttempl / elf32cr16.sc
index e7093123e4418e10acb020fff07a4bfbbe5e9976..d1e4d2b5dde3992e259ee5007b86e2dea32c79e6 100644 (file)
@@ -1,4 +1,14 @@
 # Linker Script for National Semiconductor's CR16-ELF32.
+#
+# Copyright (C) 2014-2021 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.
+
+# Using an empty script for ld -r is better than mashing together
+# sections.  This hack likely leaves ld -Ur broken.
+test -n "${RELOCATING}" || exit 0
 
 # The next line should be uncommented if it is desired to link
 # without libstart.o and directly enter main.
 test -z "$ENTRY" && ENTRY=_start
 cat <<EOF
 
-/* Example Linker Script for linking NS CR16 elf32 files. */
+/* Example Linker Script for linking NS CR16 elf32 files.
+   Copyright (C) 2014-2021 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}")
 OUTPUT_ARCH(${ARCH})
-${RELOCATING+ENTRY(${ENTRY})}
+EOF
+
+test -n "${RELOCATING}" && cat <<EOF
+ENTRY(${ENTRY})
 
 /* Define memory regions.  */
 MEMORY
 {
-        rom         : ORIGIN = 0x2,         LENGTH = 3M
-        ram         : ORIGIN = 4M,          LENGTH = 10M
+       rom         : ORIGIN = 0x2,         LENGTH = 3M
+       ram         : ORIGIN = 4M,          LENGTH = 10M
 }
 
+EOF
+
+cat <<EOF
 /*  Many sections come in three flavours.  There is the 'real' section,
     like ".data".  Then there are the per-procedure or per-variable
     sections, generated by -ffunction-sections and -fdata-sections in GCC,
@@ -39,41 +60,41 @@ MEMORY
 SECTIONS
 {
   .init :
-  { 
-    __INIT_START = .; 
-    KEEP (*(.init))
-    __INIT_END = .; 
-  } > rom
+  {
+    __INIT_START = .;
+    KEEP (*(SORT_NONE(.init)))
+    __INIT_END = .;
+  }${RELOCATING+ > rom}
 
   .fini :
-  { 
-    __FINI_START = .; 
-    KEEP (*(.fini))
-    __FINI_END = .; 
-  } > rom
+  {
+    __FINI_START = .;
+    KEEP (*(SORT_NONE(.fini)))
+    __FINI_END = .;
+  }${RELOCATING+ > rom}
 
   .jcr :
-  { 
+  {
     KEEP (*(.jcr))
-  } > rom
+  }${RELOCATING+ > rom}
 
-  .text : 
+  .text :
   {
     __TEXT_START = .;
     *(.text) *(.text.*) *(.gnu.linkonce.t.*)
     __TEXT_END = .;
-  } > rom
+  }${RELOCATING+ > rom}
 
   .rdata :
   {
     __RDATA_START = .;
     *(.rdata_4) *(.rdata_2) *(.rdata_1) *(.rdata.*) *(.gnu.linkonce.r.*) *(.rodata*)
     __RDATA_END = .;
-  } > rom
+  }${RELOCATING+ > rom}
 
-  .ctor ALIGN(4) : 
-  { 
-    __CTOR_START = .; 
+  .ctor ALIGN(4) :
+  {
+    __CTOR_START = .;
     /* The compiler uses crtbegin.o to find the start
        of the constructors, so we make sure it is
        first.  Because this is a wildcard, it
@@ -94,32 +115,32 @@ SECTIONS
     KEEP (*(EXCLUDE_FILE (*crtend*.o) .ctors))
     KEEP (*(SORT(.ctors.*)))
     KEEP (*(.ctors))
-    __CTOR_END = .; 
-  } > rom
+    __CTOR_END = .;
+  }${RELOCATING+ > rom}
 
-  .dtor ALIGN(4) : 
-  { 
-    __DTOR_START = .; 
+  .dtor ALIGN(4) :
+  {
+    __DTOR_START = .;
     KEEP (*crtbegin*.o(.dtors))
     KEEP (*(EXCLUDE_FILE (*crtend*.o) .dtors))
     KEEP (*(SORT(.dtors.*)))
     KEEP (*(.dtors))
-    __DTOR_END = .; 
-  } > rom
+    __DTOR_END = .;
+  }${RELOCATING+ > rom}
 
   .data :
   {
     __DATA_START = .;
     *(.data_4) *(.data_2) *(.data_1) *(.data) *(.data.*) *(.gnu.linkonce.d.*)
     __DATA_END = .;
-  } > ram AT > rom
+  }${RELOCATING+ > ram AT > rom}
 
   .bss (NOLOAD) :
   {
     __BSS_START = .;
     *(.bss_4) *(.bss_2) *(.bss_1) *(.bss) *(COMMON) *(.bss.*) *(.gnu.linkonce.b.*)
     __BSS_END = .;
-  } > ram
+  }${RELOCATING+ > ram}
 
 /* You may change the sizes of the following sections to fit the actual
    size your program requires.
@@ -132,30 +153,30 @@ SECTIONS
     . = ALIGN(4);
     __HEAP_START = .;
     . += 0x2000; __HEAP_MAX = .;
-  } > ram
+  }${RELOCATING+ > ram}
 
   .stack (NOLOAD) :
   {
     . = ALIGN(4);
     . += 0x6000;
     __STACK_START = .;
-  } > ram
+  }${RELOCATING+ > ram}
 
   .istack (NOLOAD) :
   {
     . = ALIGN(4);
     . += 0x100;
     __ISTACK_START = .;
-  } > ram
+  }${RELOCATING+ > ram}
 
   .comment        0 : { *(.comment) }
 
 EOF
 
-source $srcdir/scripttempl/DWARF.sc
+. $srcdir/scripttempl/DWARF.sc
 
 cat <<EOF
 }
 
-__DATA_IMAGE_START = LOADADDR(.data);
+${RELOCATING+__DATA_IMAGE_START = LOADADDR(.data);}
 EOF