Update year range in copyright notice of binutils files
[deliverable/binutils-gdb.git] / ld / scripttempl / v850.sc
index 6e83dc7955914fca46d570f1afb36ad7dd41aff7..2a87e6dedad1d0b19c423de2f405c83ca2274b36 100644 (file)
+# 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("elf32-v850", "elf32-v850",
              "elf32-v850")
-OUTPUT_ARCH(v850)
-ENTRY(_start)
+OUTPUT_ARCH(v850:old-gcc-abi)
+${RELOCATING+ENTRY(_start)}
 SEARCH_DIR(.);
-/*/critters/slug/grossman/install/sun4/v850-elf/lib*/
+${RELOCATING+EXTERN(__ctbp __ep __gp)};
 SECTIONS
 {
-  /* Read-only sections, merged into text segment: */
-  . = 0x160;
-  .interp     : { *(.interp)   }
-  .hash          : { *(.hash)          }
-  .dynsym        : { *(.dynsym)                }
-  .dynstr        : { *(.dynstr)                }
-  .rel.text      : { *(.rel.text)              }
-  .rela.text     : { *(.rela.text)     }
-  .rel.data      : { *(.rel.data)              }
-  .rela.data     : { *(.rela.data)     }
-  .rel.rodata    : { *(.rel.rodata)    }
-  .rela.rodata   : { *(.rela.rodata)   }
-  .rel.got       : { *(.rel.got)               }
-  .rela.got      : { *(.rela.got)              }
-  .rel.ctors     : { *(.rel.ctors)     }
-  .rela.ctors    : { *(.rela.ctors)    }
-  .rel.dtors     : { *(.rel.dtors)     }
-  .rela.dtors    : { *(.rela.dtors)    }
-  .rel.init      : { *(.rel.init)      }
-  .rela.init     : { *(.rela.init)     }
-  .rel.fini      : { *(.rel.fini)      }
-  .rela.fini     : { *(.rela.fini)     }
-  .rel.bss       : { *(.rel.bss)               }
-  .rela.bss      : { *(.rela.bss)              }
-  .rel.plt       : { *(.rel.plt)               }
-  .rela.plt      : { *(.rela.plt)              }
-  .init          : { *(.init)  } =0
-  .plt      : { *(.plt)        }
-  .zdata    : { *(.zdata) *(.zrodata) *(.zbss*) }
-  . = 0x100000;
-  .text      :
+  /* This saves a little space in the ELF file, since the zda starts
+     at a higher location that the ELF headers take up.  */
+
+  .zdata ${ZDATA_START_ADDR} :
+  {
+       *(.zdata)
+       ${RELOCATING+*(.zbss)
+       *(reszdata)
+       *(.zcommon)}
+  }
+
+  /* This is the read only part of the zero data area.
+     Having it as a separate section prevents its
+     attributes from being inherited by the zdata
+     section.  Specifically it prevents the zdata
+     section from being marked READONLY.  */
+
+  .rozdata ${ROZDATA_START_ADDR} :
+  {
+       *(.rozdata)
+       ${RELOCATING+*(romzdata)
+       *(romzbss)}
+  }
+
+  /* Read-only sections, merged into text segment.  */
+  . = ${TEXT_START_ADDR};
+  .interp      : { *(.interp) }
+  .hash                : { *(.hash) }
+  .dynsym      : { *(.dynsym) }
+  .dynstr      : { *(.dynstr) }
+  .rel.text    : { *(.rel.text) }
+  .rela.text   : { *(.rela.text) }
+  .rel.data    : { *(.rel.data) }
+  .rela.data   : { *(.rela.data) }
+  .rel.rodata  : { *(.rel.rodata) }
+  .rela.rodata : { *(.rela.rodata) }
+  .rel.gcc_except_table : { *(.rel.gcc_except_table) }
+  .rela.gcc_except_table : { *(.rela.gcc_except_table) }
+  .rel.got     : { *(.rel.got) }
+  .rela.got    : { *(.rela.got) }
+  .rel.ctors   : { *(.rel.ctors) }
+  .rela.ctors  : { *(.rela.ctors) }
+  .rel.dtors   : { *(.rel.dtors) }
+  .rela.dtors  : { *(.rela.dtors) }
+  .rel.init    : { *(.rel.init) }
+  .rela.init   : { *(.rela.init) }
+  .rel.fini    : { *(.rel.fini) }
+  .rela.fini   : { *(.rela.fini) }
+  .rel.bss     : { *(.rel.bss) }
+  .rela.bss    : { *(.rela.bss) }
+  .rel.plt     : { *(.rel.plt) }
+  .rela.plt    : { *(.rela.plt) }
+  .init                : { KEEP (*(.init)) } =0
+  .plt         : { *(.plt) }
+
+  .text                :
   {
     *(.text)
+    ${RELOCATING+*(.text.*)}
+
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
-    *(.gnu.linkonce.t*)
+    ${RELOCATING+*(.gnu.linkonce.t*)}
   } =0
-  _etext = .;
-  PROVIDE (etext = .);
-  .fini      : { *(.fini)    } =0
-  .rodata    : { *(.rodata) *(.gnu.linkonce.r*) }
-  .rodata1   : { *(.rodata1) }
-  /* Adjust the address for the data segment.  We want to adjust up to
-     the same address within the page on the next page up.  */
-  .data    :
+
+  ${RELOCATING+_etext = .;}
+  ${RELOCATING+PROVIDE (etext = .);}
+
+   /* This is special code area at the end of the normal text section.
+      It contains a small lookup table at the start followed by the
+      code pointed to by entries in the lookup table.  */
+
+  .call_table_data ${CALL_TABLE_START_ADDR} :
+  {
+    ${RELOCATING+PROVIDE(__ctbp = .);}
+    *(.call_table_data)
+  } = 0xff   /* Fill gaps with 0xff.  */
+
+  .call_table_text :
+  {
+    *(.call_table_text)
+  }
+
+  .fini                : { KEEP (*(.fini)) } =0
+  .rodata      : { *(.rodata) ${RELOCATING+*(.rodata.*) *(.gnu.linkonce.r*)} }
+  .rodata1     : { *(.rodata1) }
+
+  .data                :
   {
     *(.data)
-    *(.gnu.linkonce.d*)
-    CONSTRUCTORS
+    ${RELOCATING+*(.data.*)
+    *(.gnu.linkonce.d*)}
+    ${CONSTRUCTING+CONSTRUCTORS}
   }
-  .data1   : { *(.data1) }
-  .ctors         :
+  .data1       : { *(.data1) }
+  .ctors       :
   {
-    ___ctors = .;
-    *(.ctors)
-    ___ctors_end = .;
+    ${CONSTRUCTING+___ctors = .;}
+    KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
+    ${RELOCATING+KEEP (*(SORT(.ctors.*)))}
+    KEEP (*crtend(.ctors))
+    ${CONSTRUCTING+___ctors_end = .;}
   }
-  .dtors         :
+  .dtors       :
   {
-    ___dtors = .;
-    *(.dtors)
-    ___dtors_end = .;
+    ${CONSTRUCTING+___dtors = .;}
+    KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
+    ${RELOCATING+KEEP (*(SORT(.dtors.*)))}
+    KEEP (*crtend.o(.dtors))
+    ${CONSTRUCTING+___dtors_end = .;}
   }
-  .got           : { *(.got.plt) *(.got) }
-  .dynamic       : { *(.dynamic) }
-  ${RELOCATING+ __ep = ALIGN (4);}
-  .tdata     : { *(.tdata) }
+  .jcr         :
+  {
+    KEEP (*(.jcr))
+  }
+
+  .gcc_except_table : { *(.gcc_except_table) }
+
+  .got         : {${RELOCATING+ *(.got.plt)} *(.got) }
+  .dynamic     : { *(.dynamic) }
+
+  .tdata ${TDATA_START_ADDR} :
+  {
+       ${RELOCATING+PROVIDE (__ep = .);
+       *(.tbyte)
+       *(.tcommon_byte)}
+       *(.tdata)
+       ${RELOCATING+*(.tbss)
+       *(.tcommon)}
+  }
+
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
      we can shorten the on-disk segment size.  */
-  ${RELOCATING+ __gp = ALIGN(4) + 0x8000;}
-  .sdata     : { *(.rosdata) *(.sdata) }
-  _edata  =  .;
-  PROVIDE (edata = .);
-  __bss_start = .;
-  .sbss      : { *(.sbss) *(.scommon) }
+
+  .sdata ${SDATA_START_ADDR} :
+  {
+       ${RELOCATING+PROVIDE (__gp = . + 0x8000);}
+       *(.sdata)
+   }
+
+  /* See comment about .rozdata. */
+  .rosdata ${ROSDATA_START_ADDR} :
+  {
+       *(.rosdata)
+  }
+
+  /* We place the .sbss data section AFTER the .rosdata section, so that
+     it can directly precede the .bss section.  This allows runtime startup
+     code to initialise all the zero-data sections by simply taking the
+     value of '_edata' and zeroing until it reaches '_end'.  */
+
+  .sbss :
+  {
+       ${RELOCATING+__sbss_start = .;}
+       *(.sbss)
+       ${RELOCATING+*(.scommon)}
+  }
+
+  ${RELOCATING+_edata  = DEFINED (__sbss_start) ? __sbss_start : . ;}
+  ${RELOCATING+PROVIDE (edata = _edata);}
+
   .bss       :
   {
-   *(.dynbss)
-   *(.bss)
-   *(COMMON)
+       ${RELOCATING+__bss_start = DEFINED (__sbss_start) ? __sbss_start : . ;}
+       ${RELOCATING+__real_bss_start = . ;}
+       ${RELOCATING+*(.dynbss)}
+       *(.bss)
+       ${RELOCATING+*(COMMON)}
   }
-  _end = . ;
-  PROVIDE (end = .);
+
+  ${RELOCATING+_end = . ;}
+  ${RELOCATING+PROVIDE (end = .);}
+  ${RELOCATING+PROVIDE (_heap_start = .);}
+
+  .note.renesas 0 : { KEEP(*(.note.renesas)) }
+
   /* Stabs debugging sections.  */
-  .stab 0 : { *(.stab) }
-  .stabstr 0 : { *(.stabstr) }
-  .stab.excl 0 : { *(.stab.excl) }
-  .stab.exclstr 0 : { *(.stab.exclstr) }
-  .stab.index 0 : { *(.stab.index) }
-  .stab.indexstr 0 : { *(.stab.indexstr) }
-  .comment 0 : { *(.comment) }
-  /* DWARF debug sections.
-     Symbols in the .debug DWARF section are relative to the beginning of the
-     section so we begin .debug at 0.  It's not clear yet what needs to happen
-     for the others.   */
-  .debug          0 : { *(.debug) }
-  .debug_srcinfo  0 : { *(.debug_srcinfo) }
-  .debug_aranges  0 : { *(.debug_aranges) }
-  .debug_pubnames 0 : { *(.debug_pubnames) }
-  .debug_sfnames  0 : { *(.debug_sfnames) }
-  .line           0 : { *(.line) }
-/*  .stack 0xffffec00 : { _stack = .; *(.stack) }*/
-  .stack 0x200000 : { _stack = .; *(.stack) }
-  /* These must appear regardless of  .  */
+  .stab 0              : { *(.stab) }
+  .stabstr 0           : { *(.stabstr) }
+  .stab.excl 0         : { *(.stab.excl) }
+  .stab.exclstr 0      : { *(.stab.exclstr) }
+  .stab.index 0                : { *(.stab.index) }
+  .stab.indexstr 0     : { *(.stab.indexstr) }
+  .comment 0           : { *(.comment) }
+
+EOF
+
+. $srcdir/scripttempl/DWARF.sc
+
+cat <<EOF
+  /* User stack.  */
+  .stack 0x200000      :
+  {
+       ${RELOCATING+__stack = .;}
+       *(.stack)
+  }
 }
 EOF
This page took 0.030002 seconds and 4 git commands to generate.